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.

[参考译文] CC2530:缩短SampleLight的启动时间

Guru**** 2538950 points
Other Parts Discussed in Thread: CC2530, Z-STACK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/572892/cc2530-reducing-startup-time-of-samplelight

部件号:CC2530
主题中讨论的其他部件: Z-stack

您好,

我注意到CC2530每次开机时,它在3秒内不执行任何操作,然后开始扫描集线器。 如何将此启动时间从3秒缩短到1秒?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我使用TI CC2530DK和我自己的定制CC2530设计(使用原始TI Z-Stack示例)进行测试时,我没有看到此问题。 我怀疑您的CC2530模块的晶体是。 这很好,因此需要更长时间才能稳定下来开始。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    3秒的启动时间是由代码确定还是由晶体振荡器确定?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为这取决于晶体振荡器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 我有不同的问题。 如何创建将存储在CC2530内存中且在执行出厂重置之前不会被擦除的变量? 这意味着我可以关闭然后再打开电源,CC2530将记住该变量的最后一个值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以使用osal_NV_read和osal_NV_write将变量读写到NV中,并仅在执行出厂重置时将其擦除。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看到我必须使用参数来osal_NV_write( uint16 id, uint16 ndx, uint16 len, void *buf )。 我应该为id,ndx,len和buf放置什么? (我正在使用一个名为x的变量,并希望将其设置为0)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    0x401--0x0FFF保留用于id,因此可以使用0x0401后的任何id并将ndx设置为0。len是要写入的长度,buf是要写入的数据缓冲区。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你能告诉我我,我输入了哪些确切值,让这些变量将x设置为0吗?

    我尝试了以下操作,但它导致了错误。
    OSAL_NV_WRITE (0x0402,0,0,x)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    UINT8 x=0x78;

    OSAL_NV_WRITE (0x0401,0,1,&x);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何在第一次启动时将x设置为1? CC2530连接到集线器后,我使用下面的代码将x设置为0,并保持为0,直到出厂重置。

    if (devState=dev_end_device && x=1){
    //ZDApp_ChangeState(dev_end_device);
    ZDApp_StopJoiningCycle();
    OSAL_STOP_TIMEREx( ZDAppTaskID, ZDO_REUST_backoff );
    OSAL_NV_WRITE (0x0401,0,1,&x);
    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以在应用程序初始化功能中将x设置为1并保存到NV。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我在init函数中执行此操作,那么每次启动时,x是否总是设置为1? 这不是我想要的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您曾发布过"如何在首次启动时将x设置为1? "。 这不是你想要的吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只是为了澄清,代码将在第一次启动时使x=1,然后当CC2530连接到集线器时,使x=0。 因此,当我关闭电源然后再打开电源时,CC2530应该记住x=0并保持x=0。 这是代码的作用吗? 是这样吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我无法理解您的描述。 您能再详细说明一下吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    第一次打开电源时,x将被设置为1。 CC2530连接到集线器,现在x=0。 然后我关闭电源。 我再次打开电源,x仍应为0,对吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这取决于您如何实现x 我不知道您实施的详细信息,因此我不能说它正确与否。