NXP NFC chip - PN7220 issue分享

關鍵字 :NXPPN722xNFC

問題描述:

為了讓device可以更省電,客戶藉由調整參數"NXP_ENABLE_DISABLE_STANBY = 0x01",讓NFC在standby時可以更為省電。

 

客戶確認修改NXP_ENABLE_DISABLE_STANBY後,對於耗電狀況是有幫助的(30mA → 71uA):

NXP_ENABLE_DISABLE_STANBY = 0

 

NXP_ENABLE_DISABLE_STANBY = 1

 

但修改後發現NFC會莫名停止發射信號,無法進行讀卡;若是NXP_ENABLE_DISABLE_STANBY = 0x0的狀況下,則沒有異常。

 

問題分析:

1. 由log確認,問題發生前,

RF_DISCOVER_CMD指令發送與回覆都正常:

NxpNciX : len =  14 > 21030B0500010101020180010601

NxpNciR : len =   4 > 41030100

問題發生當下沒有其他i2c溝通的log。

 

2. 客戶後續發現,兩台device互相靠近,可100%複製出問題.

 

3. 由客戶描述問題複製手法,推測可能是device進入card mode程序時發生問題。

重新檢視device開機log, 發現在設置RF_SET_LISTEN_MODE_ROUTING_CMD階段的RSP是有問題的:

另外在客戶提供的libnfc-nci.conf裡,HOST_LISTEN_TECH_MASK的設定值是0x7,這部分與PN7220支援並不符合。

 

 

問題解決:

由PN7220文件可知,在card mode的部分只支援ISO-DEP tech A

客戶在libnfc-nci.conf使用錯誤的定義,導致在開機過中設定程序並不完整。

在修改過後,device已可正常使用。

 

問題學習:

後續在分析問題時除了要看問題當下的log狀況,也要注意在初始化階段是否有其他問題。同時也要確認客戶在設定值的部分是否有照著default設定,或是用錯其他檔案。

★博文內容參考自 網站,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能

參考來源

NXP: https://www.nxp.com/docs/en/user-manual/UM11810.pdf