|
今天給大家分享一下:NXP JN5168/JN5169簡單說明及貨源提供
NXP JN5168/JN5169JN5168/9是NXP推出的ZigBee芯片EEProm片內(nèi)EEPROM有4KB,并按64字節(jié)分段,共64段。擦除中按段擦除。每個bit擦除后數(shù)據(jù)為全零,可編程由0改寫為1。EEPROM的API函數(shù)使用(參考JN-UG-3087 17.EEPROM):初始化:u16AHI_InitialiseEEP() 初始化時調(diào)用,必須在讀寫之前調(diào)用寫操作:iAHI_WritEDAtaIntoEEPROMsegment(),可對隨機地址進行寫操作,但只能從0改寫為1讀操作:iAHI_ReadDataFromEEPROMsegment(),可隨機讀取,但是智能在段內(nèi)讀取,起始地址+長度超過段的總長時將會抱錯。擦除段:iAHI_EraseEEPROMsegment()
除EEPROM直接讀寫外,NXP還提供了PDM支持,可像訪問文件系統(tǒng)一樣訪問EEPROM,對存儲空間的管理有PDM進行管理。用戶層可只接進行簡單的讀、寫、刪除操作。PDM(Persistent Data Manager)NXP提供的PDM功能支持片外spi Flash和片上EEPROM,此處說明的是片上的EEPROM。參考JN-UG-3075 第四章,第三章介紹片外Flash。
主要的API接口函數(shù):PDM_eInitialise():初始化函數(shù),一般使用PDM_eInitialise(63);
初始化CFLAGS += -DPDM_NO_RTOS:使用IEEE802.15.4 SDK(如JN-SW-4163)時,需要在MAKEfile中增加此宏定義。此模式下不支持互斥。使用JenNet-IP SDK(如JN-SW-41645)時,不需要修改Makefile,PDM默認(rèn)的是此模式,此模式下支持互斥。初始化函數(shù)PDM_eInitialise需要增加互斥參數(shù)
數(shù)據(jù)管理數(shù)據(jù)在EEPROM中的存儲是按段為單位的,即最小的存儲單元是64字節(jié),即便只存儲了1個字節(jié),數(shù)據(jù)存儲超出當(dāng)前段,將使用另一個段。每個段中的64字節(jié)中有效存儲空間為56字節(jié),另外的8個字節(jié)由PDM使用。并且PDM中對每條記錄的訪問是按ID進行的,類似于文件名。按ID進行存儲操作每條存儲占用的空間為56字節(jié)的整數(shù)倍(實際上是64字節(jié),有效字節(jié)數(shù)是56)參考DEMO中的ID定義在PDM_IDs.h中
協(xié)議棧通PDM進行的數(shù)據(jù)存儲由協(xié)議棧自動完成存儲、更新。
可存儲內(nèi)容包含,但不限于:Application layer data:
AIB members, such as the EPID and ZDO state
Group Address table
Binding table
Application key-pair descriptor
Trust Centre device tableNetwork layer data:
NIB members, such as PAN ID and rADIo channel
Neighbour table
Network keys
Address Map table
存儲API: PDM_eSaveRecordData()
數(shù)據(jù)的存儲過程是把待存儲的數(shù)據(jù)先存儲到空閑的空間中,然后再回收原來的存儲空間,因此寫數(shù)據(jù)之前最好檢查當(dāng)前空閑段是否夠用。API函數(shù)為PDM_u8GetSegmeNTCapacity()讀取API: PDM_eReadDataFromRecord()
讀之前可判斷數(shù)據(jù)是存在,API函數(shù)PDM_bDoESDataExist(),返回數(shù)據(jù)長度刪除API: PDM_eDeleteData()計數(shù)器一個計數(shù)器占用1個段,即64字節(jié)。包含起始值(start Value)和增量值(Incremental Value)。當(dāng)前值=起始值+增量值。為了均衡EEPROM的擦除次數(shù),段內(nèi)的每個空余字節(jié)的每個位代表1,即每增加一次段中將會把下一個空閑位寫1,當(dāng)寫到字段末尾時,將自動切換到下一個段重新開始,即起始值=上一段的起始值+增量值的和,增量值被重新賦值為0。舊的段內(nèi)的數(shù)據(jù)會由PDM進行回收
API:創(chuàng)建:PDM_eCreateBitmap(),同樣創(chuàng)建時需要一個16位的ID增加:PDM_eIncrementBitmap(),超出當(dāng)前段時會自動切換到新的段中讀值:PDM_eGetBitmap(),返回當(dāng)前段的起始值與增量值的和刪除:PDM_eDeleteBitmap(),會擦除當(dāng)前段和歷史段
關(guān)于PDM的自動回收問題并沒有找到確切的說明,算是猜測。不過如果不回收,豈不是會很快就填滿PDM,這樣的bug就好呵呵了。擦寫均衡每個段有個擦除次數(shù)記錄,PDM使用時會優(yōu)先找值低的段,以均衡各段的擦寫次數(shù)。需要現(xiàn)貨供應(yīng)的找動能小歐 18025398193 2355573203
|
|