如何修改PN7720 EEPROM register之值?
案子開發過程中,對於不同需求會將NFC進行不同的設定。
本篇將介紹如何透過NXP tool Cockpit與新增NCI指令方式來修改EEPROM register之值。
此篇將以EEPROM address - DPC_CONFIG (0x0068)作為範例:

透過NXP tool Cockpit進行修改

成功與device連線後,Cockpit操作介面如上。
藍框處:
在”Address”處輸入想讀取(Read EEPROM)/改寫(Write EEPROM)的位址。
“Data”可輸入修改的值;如使用讀取功能就會顯示讀取後得到的值。
紅框處:
顯示執行結果。
勾選”Display FrontEnd Packets”,Log Monitor會顯示執行讀取/改寫時DH與NFCC溝通時傳輸的指令。
透過新增指令進行修改
在Android的環境,我們可以透過NCI指令對指定的register address進行修改。
NCI tag與address有著固定的對應關係,每個NCI tag儲存著8 bytes的資料:
A2 00 => 0x0000 ~ 0x0007
A2 01 => 0x0008 ~ 0x000F
A2 02 => 0x0010 ~ 0x0017
…
…
A2 0D => 0x0068 ~ 0x006F
…
…
本次範例的DPC_CONFIG 0x0068是屬於A2 0D的範圍。
透過NCI CORE_GET_CMD讀取A2 0D範圍內8個register之值:
20 03 03 01 A2 0D
得到的回應如下:
40 03 0D 00 01 A2 0D 08 77 02 01 14 6A 2A 0A 07
對應register的值如下:
77 => 0x0068
02 => 0x0069
01 => 0x006A
14 => 0x006B
6A => 0x006C
2A => 0x006D
0A => 0x006E
07 => 0x006F
如果要進行改寫的操作可以利用NCI CORE_SET_CMD。
只想改寫0x0068:
20 02 05 01 A2 0D 01 77
想改寫0x0068、0x0069、0x006A:
20 02 07 01 A2 0D 03 77 02 01
一次改寫全部8個bytes:
20 02 0C 01 A2 0D 08 77 02 01 14 6A 2A 0A 07
後續即可將想改想寫register之值加入.conf檔案即可。
以上就是修改EEPROM的兩種方式。
參考來源