CC2538: 一个关于 NWK 帧计数器的问题

Part Number: CC2538
Other 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

  • 您好

    抓包发现nwk frame counter 值在协调器复位后,会变成零。网络恢复后,随着时间变化或再次广播数据时,其值从0开始往上增加。直到当其大于复位之前的值时路由设备才能收到它的广播数据。所以我想请问,如何才能将值保存到Flash中,不让它复位后清零,确保协调器在复位后,网络恢复后就能通信成功?

  • 您好

    在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中,从而在协调器复位后保证网络通信的正常进行。

  • 你好

    由于我们会频繁的进行通信,而Flash是有寿命的,如果多次的进行Flash的擦写操作,这样的操作会有影响吗?

  • 您好

    是的,Flash的擦写操作确实会对其寿命产生影响。Flash存储器有一定的擦写次数限制,这取决于其类型和制造工艺。例如,某些类型的Flash存储器可能保证至少1000次的擦写寿命,而像EEPROM这样的存储器则可能有更高的擦写次数,如至少5万次。

    在实际应用中,如果频繁地进行Flash的擦写操作,尤其是在接近其寿命极限时,可能会导致数据保存能力的下降,甚至可能出现数据丢失或无法再被正确擦写的情况。此外,频繁的擦写操作还可能影响Flash存储器的性能,如增加读写延迟。