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.

[参考译文] CC2652R7:如何在运行应用程序中设置 RTC

Guru**** 2763595 points

Other Parts Discussed in Thread: CC2652R7

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1299564/cc2652r7-how-set-rtc-in-run-application

器件型号:CC2652R7

我有自己的 CC2652R7 BLE 应用、该应用是根据 SDK 版本6中的一个多用途示例创建的。 我使用 FreeRTOS。 在设置系统时、我希望将我的值设置为 RTC 寄存器。 在研究这个问题时、我有几个问题。
1.我的主要问题是有一些"幻数"会中断 BLE 堆栈。 例如、如果我在寄存器中写入 SEC 0或当前时间、在扫描以太网时很可能就能找到我的器件。 但当录制"魔法"号码时,设备在空中出现了一秒钟,我可以看到它在手机上的列表中显示消息"NRF CONNECT",但过了很短的时间,设备从空中消失,我再也找不到它了。 如果您重新启动器件、情况将会重复。 该消息将在空气中出现一秒钟并永久消失。 如果您在处于空闲状态的器件上运行无线扫描(我的应用基于多角色)、则主要 BLE 流不会从环境中接收到来自其他器件的促销事件。
2.为什么 AON 驱动程序有 SecGet 函数,但没有 SecSet? 这样做的原因是什么?

您能为我提供哪些挖掘方法的建议吗? 我想更改这个特定的寄存器或找出我无法更改的确切原因。 也许图书馆使用这个寄存器、他们不喜欢什么? 因为我没有 BLE 堆栈的源代码、也不知道它的内部功能(我认为这是分类信息?)。 我已阅读技术文档、没有发现在使用 SEC 登记表之前采取任何特殊措施进行记录的信息。 我一直在阅读论坛、没有找到有关此问题的任何信息。 其他问题中指向迁移或背景信息的链接与我的链接略有不同。
也许只有在完成某些重要操作后才能写入 RTC 寄存器? 比如刚刚设置缓存之后的情况、等等?

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

    您好、Nick、

    如您所知、SimpleLink SDK 中的每个无线堆栈不支持 FreeRTOS、包括 CC2652R7 BLE 堆栈。

    如果您正在寻找与使用 RTC 相关的信息、我建议首先查看  TRM 的第16章中的 RTC 文档 、以及 我们 SDK 中提供的资源、具体位于 DriverLib  aon_rct.h 参考。 有关一些稍微更深入的信息、请查看找到的 aon_rtc 寄存器描述  纹波。  如果您需要更多信息或帮助、可以说明如何使用 RTC。 此外、还  提供了其他提到 RTC 使用的 E2E 线程。 在调试模式下、您还可以在 CCS 的寄存器视图中查看 RTC、以了解其正在做什么。  

    对于第二个问题、没有 SecSet 函数、因为 RTC 由 TI-RTOS 管理、除 TI-RTOS 外通常不应配置该函数。  

    谢谢。

    卢克

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

    如您所知、SimpleLink SDK 中的每个无线堆栈不支持 FreeRTOS、包括 CC2652R7 BLE 堆栈。

    在本例中、正如我在前面所写的、BLE 堆栈几乎在所有条件下都能正常运行(除了我在上面所述的条件外)。 我不排除 FreeRTOS 也存在这种情况、但这是非常具体的行为、我对此没有确认

    我已经阅读了文档和其他主题、但没有找到任何有用的信息。 大多数答案往往是使用 TI-RTOS 和 AON 库、或者将一些用户定义的值写入非易失性存储器并将其用作静态偏移。 但是、没有人执行写入操作来解决写入寄存器的问题。 芯片上的文档也未指明任何限制。

    对于第二个问题、没有 SecSet 函数、因为 RTC 由 TI-RTOS 管理、除 TI-RTOS 外通常不应配置该函数。

    有任何有关 TI-RTOS 如何实现此目的的信息吗? 是否有可能在某处看到代码?

    更新:

    我尝试从最新的 SDK 运行 simple peripheral 示例并将我的"error value"设置为0x6502B33F。 它在示例中正常工作、但如果在整个示例中我将寄存器值更改为另一个值、或在开始时再次写入0x6502B33F、则一切都将中断。 为什么?

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

    Nick、

    我的第一个建议是尝试使用 RTC 驱动程序、而不是直接进行寄存器读取/写入。 假设您正在尝试执行的操作、 如果您尚未执行此操作、则另外查看计时器引导的示例可能会有所帮助。  

    如果您目前尚未安装、我还建议您使用以下驱动程序:

    https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/docs/drivers/doxygen/html/_timer_8h.html

    https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/docs/drivers/doxygen/html/_g_p_timer_c_c26_x_x_8h.html

    如果您有时间浏览这些资源、请告诉我。

    谢谢。

    卢克

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

    Nick、

    登录以查看您是否能够浏览提供的资源并解决您所面临的问题。 请告诉我提供的解决方案是否有用、或者如果您自己找到了解决方案、请与我分享!

    谢谢。

    卢克