一丶協議分析
這兩種芯片都是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拉高,釋放從器件。