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.

[参考译文] CC2340R5:CC2340R5 48MHz 时钟精度

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1466450/cc2340r5-cc2340r5-48mhz-clock-accuracy

器件型号:CC2340R5

工具与软件:

我在使用 CC2340R5和 BLE Stack 时遇到了很多与计时精度相关的问题。

我已经成功配置 DIO19来输出48Mhz / 8 = 6MHz、以尝试和验证底层时钟频率。

这似乎在6.0007MHz 至5.952MHz 之间变化。 我确实是在尝试设置该应用以执行一些实时处理、因此我要寻找精确的时域。

 有关此器件的几个问题、我在数据表中无法解决这些问题。

1) 1) ARM 内核是实际运行 HFEXT 48Mhz 晶体-还是一直使用不太精确的内部 RC 振荡器?

2)我已经尝试使用 HFXT Cap 阵列调整-但没有真正的变化与这些。 TI 提供的参考设计表明不在晶体本身使用负载电容器、我可能应该尝试一下。

任何关于这方面的支持都将非常有帮助。

对于尝试输出时钟的任何其他人来说、这里是我使用的代码片段。 (放在 Board_Init ()之后)

/* 48Mhz CLK 调试开始*/
//首先将输出驱动为低电平
GPIO_setConfig(19, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_LOW );

//确认 IOC.IOC19 PORTCFG MMR 以选择 DTB
HWREG(IOC_base + IOC_O_IOC19 )&=~IOC_IOC19_PORTCFG_M ;
HWREG(IOC_BASE + IOC_O_IOC19 )|= IOC_IOC19_PORTCFG_DTB ;

//
HWREG(IOC_BASE + IOC_O_DTBCFG)&=~IOC_DTBCFG_ULLSEL_M ;
HWREG (IOC_BASE + IOC_O_DTBCFG)|= 0x1 << IOC_DTBCFG_ULLSEL_S;// 0x1将 CLKD 路由到 DTB0

//启用 IOC.DTBOE.EN0
HWREG(IOC_base + IOC_O_DTBOE )&=~IOC_DTBOE_EN0_M ;
HWREG(IOC_base + IOC_O_DTBOE )|= IOC_DTBOE_EN0_EN ;

//查看要在 DTB0 (DTB[0])上输出的时钟(CKMD)
HWREG (CKMD_BASE + CKMD_O_DTBCTL)&=~CKMD_DTBCTL_CLKSEL_M;
HWREG(CKMD_BASE + CKMD_O_DTBCTL )|=(clockSrc)<< CKMD_DTBCTL_CLKSEL_S ;

//启用 DTB 输出
HWREG(CKMD_BASE + CKMD_O_DTBCTL)&=~CKMD_DTBCTL_EN_M ;
HWREG (CKMD_BASE + CKMD_O_DTBCTL )|= CKMD_DTBCTL_EN ;
/* CLK 调试结束*/

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

    您好!

    感谢您的咨询。 我认为、如果需要更全面的资源来帮助您完成评估晶体性能以及获取有关时钟子系统的其他信息这一首要任务、请参阅应用手册 《CC13xx、CC26xx 和 CC23xx 系列无线 MCU 的晶体振荡器和晶体选型》(SWRA495)。

    1)内核 MCU 实际上直接从外部 HFOSC 运行、而外部 HFOSC 则由外部晶体(如果有)提供。

    2) 2)有关负载电容的注意事项、请参阅上述应用手册的第3.3节。

    希望这对您有所帮助、

    Rafael

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

    感谢您发送有关此主题的额外参考资料。

    我现在已经设法使 HFOSC 时钟输出与 DTB0输出引脚上的6Mhz (48Mhz / 8)对齐。  为了实现此目标、我按照 SWRA495中的详细说明将晶振交换了、而且必须将内部负载电容器的配置修改为0x21值。

    稍后我将回顾我们最初的晶体选择。

    我仍然对这个器件的计时精度持谨慎态度。 现在在 Timer2触发时有一个硬件中断、该中断值应为1ms、内部代码最少-字面上理解就是这样  
    GPIO 切换、但这会延迟几微秒。 与我的 RTOS 任务相比、我希望硬件中断延迟保持一致、并且具有最高优先级。

    令人困惑。 不过、这是第一次使用 FreeRTOS 和新的 TI BLE 堆栈 F3。 嗯、这是否是由对对讲机有效的堆叠硬件中断引起的? 关于堆栈内实际发生的情况几乎没有详细信息。

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

    您好!

    这似乎确实是一个软件或 RTOS 问题。 在与软件团队的对话中、建议您使用 SDK 的"empty"示例工程来实现您的计时器中断-本示例将激活基本的功能、从而将您看到的行为与计时器/中断本身隔离。 让我们知道这个实验的结果。

    如果存在协议栈或其他函数在 RTOS 系统节拍调整中运行、则使用第二计时器或堆叠计时器中断可能会增加一些偏差。

    此致、

    Rafael