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.

[参考译文] CC2630:将数据保存在 NV 存储器中

Guru**** 2540720 points
Other Parts Discussed in Thread: Z-STACK, CC2630

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/705476/cc2630-save-data-in-nv-memory

器件型号:CC2630
Thread 中讨论的其他器件:Z-stack

您好!

我将 CC2630与 IAR Workbench 和 Z-StackTmHome 1.2.2a 搭配使用。 我需要将传感器数据保存到 NV 存储器中。 正如在其他线程中所讨论的、应用程序无法访问 osal、因此我需要使用 zcl_port 功能。  

我初始化项目、然后写入、然后在下电上电后读取:

zclport_initializeNVItem (0x2FE、0x0001、sizeof (uint16_t)、NULL);

uint16_t luxValueFromSensor = 500;
zclport_writeNV (0x2FE、0x0001、0、sizeof (uint16_t)、sizeValueFromSensor)= 500;zclport_writeNV (0x2FE、0x0001、0、sizeof

(uint16_t) zisMeasuredValue); 

当 init 和 WRITE 返回 NV_IT_UNINIT 时、读取返回成功、但我始终读取0。  

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

    能够回答此问题的人今天外出度假、明天将回到办公室。 很抱歉耽误你的时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您应在0x0100之后使用 NV ID。 您可以参阅 e2e.ti.com/.../2096439中的讨论
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yikai、

    感谢您的回复。 我按照 http://e2e.ti.com/support/wireless_connectivity/zigbee_6lowpan_802-15-4_mac/f/158/p/667400/2456846#pi319568=2中的建议将 NV ID 更改为0x0281 、但这没有改变任何内容。 读取时、我仍然得到0。

    此致、Philipp

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

    zclport_writeNV (0x2FE、0、0、sizeof (uint16_t)、&luxValueFromSensor);

    zclport_readNV (0x2FE、0、0、sizeof (uint16_t)、&zisMeasuredValue);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不幸的是、这没有帮助。 我还尝试使用 subid 0进行初始化。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您尝试以下代码、它是否起作用?

    uint8 luxValueFromSensor = 0x78;
    zclport_writeNV (0x2FE、0、0、1、&luxValueFromSensor);

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

    没有、这也不起作用。 我像这样初始化:

    zclport_initializeNVItem (0x2FE、0、1、NULL); 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我是否知道您在哪里调用这些 NV 写入/读取 API?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    在应用程序初始化函数的末尾测试此操作:

    uint8 luxValueFromSensor = 5;
    uint8 zisMeasuredValue;

    //初始 NV 项目
    zclport_initializeNVItem (0x2FE、0、1、NULL);

    //读取0xFF
    zclport_readNV (0x2FE、0、0、1、&zisMeasuredValue);

    //写入0x05
    zclport_writeNV (0x2FE、0、0、1、&luxValueFromSensor);

    //读取0x05
    zclport_readNV (0x2FE、0、0、1、&zisMeasuredValue);

    在新的应用程序中尝试此操作、我不必对项目进行任何配置即可使其正常工作。

    此致、

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢 Yi Kai! 以正确的背景将其放入任务中可以解决该问题。

    此致、

    菲律宾