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.

[参考译文] LAUNCHXL-CC26X2R1:通过校准 cc26x2r 晶体实现更高的 RTC 精度

Guru**** 2595805 points
Other Parts Discussed in Thread: SYSCONFIG, CC2642R

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1354173/launchxl-cc26x2r1-calibration-of-cc26x2r-crystal-for-better-rtc-accuracy

器件型号:LAUNCHXL-CC26X2R1
主题中讨论的其他器件:SysConfigCC2642R

大家好!

我们在这里讨论的是项目"project_zero"。

我们使用高级 API"seconds_set ()"和"seconds_get ()"函数。 一切都正常、但我们想要提高精度。 就像我们现在所做的那样、几天后时间会有些漂移。

我们已经阅读了用户指南、第1398页。

www.ti.com/.../swcu185f.pdf

我们希望能够访问 AON_RTC 以对其进行校准。 我们推测我们必须:

通过更新 AUX_SYSIF:RTCSUBSECINC0和 AUX_SYSIF:RTCSUBSECINC1寄存器来改变增量、然后通过写入 AUX_SYSIF:RTCSECINCCTL 来将新的设置载入 AON_RTC。 UPD_REQ 寄存器

我不知道该怎么做。

您是否可以提供一段完全实现上述功能的示例代码?

我是否需要在前后禁用中断并启用它们?

谢谢、请告诉我您的观点。

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

    您好、kazola、

    正如我提到过的、我已经为我的项目使用了 UTC_CLOCK。 如果设置此 UTC_CLOCK、它对器件本身非常精确。 现在、如果您检索 UTC_CLOCK 值、然后如果它必须转至其他进程 、则会增加漂移。

     RTC 时钟保存在 RAM 中、便于更快地读取和写入。 如果您从闪存更新 RTC 时钟、这将增加漂移。 因为与 RAM 相比、闪存读取和写入速度更慢。

    在我之前开发的产品时、我们决定不使用器件的 RTC 时钟。 因为、每当出现复位或关断时、我们都需要更新 RTC 时钟器件值。 这只是增加了流程。 因此、在通过智能手机从器件接收到数据后、我们会使用智能手机时钟值附加数据。  

    另一种方法是使用连接到 CC26x2R1的由纽扣电池供电的 RTC 板。 无论 CC26x2R1的状态如何、由纽扣电池供电的 RTC 板都将保持 RTC 时钟。 但是、向 CC26x2R1添加更多组件会增加电流消耗。

    -克尔

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

    您好、kazola、

    为了增加 Markel 的出色回答、RTC 时钟的精度由系统使用的32kHz 时钟的精度和稳定性给出。  

    当涉及32kHz 时钟时、CC2642R 可能有4种配置(均可使用 SysConfig >器件配置> LF 时钟源进行配置)- RCOSC、LF XOSC、源自 HF XOSC、外部 LF 时钟。

    - RCOSC 的特性可以在器件数据表中找到(§8.12.3.5 https://www.ti.com/lit/gpn/cc2642r)。 此选项会使 BOM 成本最低、但精度较低。

    - 32kHz LF XOSC 的特性由晶体供应商提供。 常用解决方案、作为成本、精度和功耗之间的折衷方案。

    -由 HF XOSC 衍生的时钟的精度取决于 HF XOSC (由晶体供应商提供)-这个解决方案通常提供最佳精度、但防止器件进入待机/关断状态。

    -外部低频时钟的精度取决于时钟发生器-保留为可能生成此类时钟的情况。

    我希望这将有所帮助、

    此致、

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

    您好、 

    这些都是很好的建议,我们遵循了类似的途径,并得出了类似的结论。

    我们的代码可与 RTC +晶体正常工作、我们只想使用 registrer 或 driverlib 指令专门对其进行设置。 它还适用于外部 RTC、我们也这样做了。

    我们刚刚完成了一些真正的低级代码。 我们不使用闪存或任何其他工具、但也感谢您提供此提示。

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

    您好、Clement、

    是的、我们知道这一点、这就是我们尝试专门调优这个32kHz 时钟的原因。 我们阅读了4种类型的 RTC 源。

    具体而言、我想我们需要:

    -一种写入寄存器的方式,如 AON_RTC 中的子秒,如用户指南所说

    Aon_RTC 针对每个32执行一个70位、自由运行的计数器、其递增时可编程值
    时钟。 该可编程值允许在32kHz 时钟中补偿 ppm 偏移、从而使得这成为可能
    才能使计数器以非常高的精度运行。

    -一种 将输入的32 kHz 信号重新路由到输出引脚的方法。 这样、我们可在调整前一个寄存器后看到该信号。

    请告诉我们、TI 的谁可以对此寄存器或 driverlib 代码提供帮助。

    谢谢、祝你度过美好的一天。

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

    您好!

    我们没有显示如何写入 AON_RTC 的代码参考。 亚秒-这可能意味着这个参数没有经过测试。 接下来是 AON_RTC。 subsec 寄存器是一个读/写寄存器、所以应该是可以写入的寄存器。 我更关心的是、如果系统同时更改寄存器、该功能会如何工作。
    要帮助您快速入门,请参阅中的函数 AONRTCCurrent64BitValueGet ()。 \source\ti\devices\cc13x2_cc26x2\driverlib\aon_rtc.c。 此函数显示如何以正确的方式读取寄存器。

    32kHz 信号可以通过以下代码路由到引脚:

    #include <driverlib/aon_ioc.h>
    IOCPortConfigureSet(IOIDn, IOC_PORT_AON_CLK32K, IOC_STD_OUTPUT);
    AONIOC32kHzOutputEnable();

    我希望这将有所帮助、

    此致、