一丶协议分析
这两种芯片都是programming through SPI,烧录要用到的引脚有
SPI_MOSI_Port :数据输入;
SPI_MISO_Port :数据输出;
SPI_SCLK_Port :时钟;
SPI_CS_Port :从器件使能信号,低电平有效;
SPI_RESET_Port :复位信号,低电平有效;
SPI_PROG_Port :使能烧录,使用时根据不同的芯片拉高至具体的voltage。
以下是传输时序图:
SPI read operation for direct and addressed command
SPI write operations for direct and addressed commands
各个标志含义如下:
Cx :SPI Command bit;
Ax :OTP address. Sequence MS to LS byte, MS to LS bit;
Dx :SPI data bit, Sequence LS to MS byte, MS to LS bit.
Presence depending on SPI command。
二丶烧录流程
需要注意的是:
a)nRF31512属于OTP芯片,支持write&read,每个bit只能写一次,烧录原理就是例如默认值是0xFF时,给对应bit写0将数据到烧录芯片;
b) nRF24LE1的memory为flash,支持write&erase&read。
read operation:
在读的功能上两者操作流程是一样的
- 给VDD和PROG pin 脚上电至3.0V ;
- 支持整块的读取
a)
SPI_CS_Port拉低,使能从器件;
b)
Issue READ command 0x03;
c)
Issue 2个字节的base_address ,高位在前,地位在后;
d)
获取SPI_MISO_Port 上的数据;
e)
SPI_CS_Port拉高,释放从器件。
写数据时两者在 PROG voltage上是有差别的,nRF24LE1在读数据时仍为3.0V,而nRF31512需要将它拉高至6.35V,要注意一定要确认电压已经稳定升至6.35V左右才开始送数据,不然会出现前面部分数据无法烧录进去的问题,如果前面的数据没有写进去,别担心,对于OTP芯片烧录的原理,只要是非0的bit就还可以进行烧写,也可用这个原理去进行调试。
It
is possible to write up to 1 kB in one PROGRAM
command.资料的这句话表示了我们最大可设置每个bank_size 为 1K。
For nRF24LE1:
1.write
operation:
- 给VDD和PROG pin 脚上电至3.0V,稳定后执行后面的操作;
- 支持bank的读取
a)
SPI_CS_Port拉低,使能从器件;
b)
Issue WREN command 0x06,Set memory write
enable latch.;
c)
Issue 2个字节的base_address ,高位在前,地位在后;
d)
Issue 1个bank的数据,每个bank的数据送出去以后,跳到b)循环执行,直到所有的bank数据都送完;
e)
Issue WRDIS command 0x04,Reset memory write
enable latch。
f)
SPI_CS_Port拉高,释放从器件;
For nRF31512:
1.write operation:
- 给VDD脚上电至3.0V,PROG pin 上电至6.35,稳定后执行后面的操作;
- 支持bank的读取
a)
SPI_CS_Port拉低,使能从器件;
b)
Issue WREN command 0x06,Set memory write
enable latch.;
c)
Issue 2个字节的base_address ,高位在前,地位在后;
d)
Issue 1个bank的数据,每个bank的数据送出去以后,跳到b)循环执行,直到所有的bank数据都送完;
e)
Issue WRDIS command 0x04,Reset memory write
enable latch;
f)
SPI_CS_Port拉高,释放从器件。
2.Erase operation:
1. 给VDD和PROG pin 脚上电至3.0V,稳定后执行后面的操作;
a) SPI_CS_Port拉低,使能从器件;
b)
Issue ERASE_ALL command 0x62, Erase all pages.;
c)
Issue WRDIS command 0x04,Reset memory write
enable latch;
d)
SPI_CS_Port拉高,释放从器件。