This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC1312R:CC1312中 NVS 存储的寿命和周期

Guru**** 2589245 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1165998/cc1312r-lifetime-and-cycles-of-nvs-storage-in-cc1312

器件型号:CC1312R

尊敬的专家:

我在这里与 CC1312合作我 选择持续地将数据存储/读取到 NVS、就像这里的脉冲计数一样、我怀疑我的决定是否正确、NVS 的写入/读取周期的数量是多少。

此致

Surya

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Surya、

    您使用哪种 NVS 类型? 内部还是外部?

    您还能详细说明一下您的用例吗? 具体来说、该部分:

    [引用 userid="387319" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1165998/cc1312r-lifetime-and-cycles-of-nvs-storage-in-cc1312 "]持续地将数据存储/读取到 NVS 中、如脉冲计数

    谢谢、
    尼古拉伊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好

    感谢您的回复、

    目前我正在检查内部 NVS 示例。

    我想将每个脉冲计数存储到内部 NVS 中。

    此致

    Surya

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Surya、

    非易失性闪存至少支持30k 个擦除周期。

    如需更多信息、请参阅数据表的第8.7节: CC1312R SimpleLink 高性能低于1GHz 无线 MCU 数据表(修订版 H)(TI.com)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您需要将变量 x 次存储到闪存中、其中 x 是一个大数字、则应考虑使用文件系统、每次都将变量存储在新位置等、以减少一个扇区的损耗。  

    但是、为什么要将每个脉冲计数存储到闪存中? 我不明白为什么你需要做你所问的事情。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Diego P

    感谢您的回答和参考。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将在这里解释为什么我需要将 x 数据存储到 x 次、在这里、我尝试创建脉冲计数器、我不想丢失单个脉冲计数(控制器复位或重新启动)、这就是我想将每个脉冲计数存储到存储器的原因。  

    我希望您现在了解我要做的事情... CC1312没有 EEPROM、因此我想将数据存储到闪存中。 如果您认为我的选择是错误的、请建议任何更好的解决方案...

    如何使用 CC1312执行文件系统... 如果您可以、请详细解释这些选项...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您需要多长时间将数据存储到存储器中?  脉冲的频率是多少?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    可能为1000万、这不是固定频率(每分钟最大10-30个脉冲)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为了确保我理解正确、您需要每分钟写10到30次、总共需要写1、000万次?

    每次写入时、您需要存储多少个字节?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、您是正确的、感谢您理解我要做的事情。

    长变量..  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在8KB 的扇区中、如果每次写入数据到8个新字节中、在必须擦除扇区之前、可以写入扇区1、024次。 使用1个扇区、您可以执行1、000万次写入操作、并且必须擦除该扇区大约9、765次(1、000万次除以1024次写入)。 您还可以使用多个扇区来减少磨损。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复、在 NVS 示例中、我获得了该值...

    Region Base Address: 0x1B000
        Sector Size: 0x1000
        Region Size: 0x4000

    如果我调用下面的擦除函数
    /*擦除整个闪存扇区。 *
    NVS_ERASE (nvsHandle、0、regionAttrs.sectorSize);

    这将擦除整个扇区、因此我只需禁用此行、直到我写入8字节数据的1024倍、
    在这里、我不确定在写入8字节数据后如何将写指针移动到第9个字节。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    NVS_WRITE()函数有一个偏移参数,用于指示进入 NVS 区域的字节偏移量以开始写入。 您只需要一个用于存储偏移的变量、每次写入后、您就可以向偏移量中添加8。 您也可以使用 sizeof()来获取要存储在闪存中的变量的大小,并将其添加到保存偏移的变量中。

    同时确保从 NVS_WRITE 函数中的 FLAG 参数中删除 NVS_WRITE_ERASE 标志。