Part Number:CC2538Other Parts Discussed in Thread:Z-STACK,
你好,TI团队。
图片中的NWK Frame Counter,经过验证,可以使用SSP_ReadNwkActiveKey( nwkActiveKeyItems *items )这个函数来获取此值。
模块复位后,NWK Frame Counter就会清零。请问,程序中这个清零操作在哪?或者我可以给这个参数赋初值并写入到NV吗?
使用的SDK版本为 Z-Stack Mesh 1.0.0
Daniel:
您好
https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1018498/cc2652p-how-to-read-the-nwk-frame-counter
请您参考这个帖子说明。
,
Z:
您好
抓包发现nwk frame counter 值在协调器复位后,会变成零。网络恢复后,随着时间变化或再次广播数据时,其值从0开始往上增加。直到当其大于复位之前的值时路由设备才能收到它的广播数据。所以我想请问,如何才能将值保存到Flash中,不让它复位后清零,确保协调器在复位后,网络恢复后就能通信成功?
,
Daniel:
您好
在CC2538上,确保nwk frame counter(网络帧计数器)在协调器复位后不会清零,并且能够在网络恢复后立即成功通信,你可以考虑将nwk frame counter的值保存到Flash中。以下是一个基本的步骤和思路,你可以根据你的具体应用场景进行调整:
1. 确定存储位置
首先,你需要在Flash中分配一个区域用于存储nwk frame counter的值。确保这个区域在复位后不会被擦除或覆盖。
2. 编写Flash读写函数
你需要编写函数来读写Flash中的nwk frame counter值。CC2538通常使用内部的Flash存储器,你可以使用芯片厂商提供的库函数来操作Flash。
3. 在适当的位置保存和恢复nwk frame counter
保存nwk frame counter:在协调器正常工作期间,定期或在关键事件(如发送一定数量的数据包后)时,将当前的nwk frame counter值写入Flash。
恢复nwk frame counter:在协调器启动时,从Flash读取nwk frame counter的值,并将其设置到相应的网络变量中。
4. 考虑电源管理和异常处理
确保在电源掉电或异常复位时,Flash中的数据能够被正确保存和恢复。你可能需要处理一些异常情况,比如Flash写入失败等。
5. 测试和验证
在实际硬件上进行充分的测试,确保在复位和各种异常情况下,nwk frame counter都能正确恢复,并且网络通信能够正常进行。
通过上述步骤,你可以将nwk frame counter的值保存到Flash中,从而在协调器复位后保证网络通信的正常进行。
,
Z:
你好
由于我们会频繁的进行通信,而Flash是有寿命的,如果多次的进行Flash的擦写操作,这样的操作会有影响吗?
,
Daniel:
您好
是的,Flash的擦写操作确实会对其寿命产生影响。Flash存储器有一定的擦写次数限制,这取决于其类型和制造工艺。例如,某些类型的Flash存储器可能保证至少1000次的擦写寿命,而像EEPROM这样的存储器则可能有更高的擦写次数,如至少5万次。
在实际应用中,如果频繁地进行Flash的擦写操作,尤其是在接近其寿命极限时,可能会导致数据保存能力的下降,甚至可能出现数据丢失或无法再被正确擦写的情况。此外,频繁的擦写操作还可能影响Flash存储器的性能,如增加读写延迟。