Thread 中讨论的其他部件:SysConfig、 CC1120、 CC1190
工具/软件:Code Composer Studio
如何为 GPTM 选择时钟源、即 LF XOSC (外部32.768kHz 晶体)? 默认情况下、我的计时器以48MHz 计时。 我在 SysConfig 中看不到这方面的选项。
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.
感谢您的回复!
一个小背景...
几年前、我开发了基于 MSP430和 CC1120 (以及用于集线器/中继器器件的 CC1190)的远距离群集树网络。 我将 CC1312R 设计为要连接到该网络的器件。 这是一个 FHSS 915MHz 网络(第15.247部分)。 为了使 CC1312R 器件连接到我的网络、它需要与当前通道(50的1)和通道的剩余驻留时间同步。 每20秒,所有集线器将在 专用通道上的八个随机选择的50ms 时隙之一中发送一条同步消息。 要加入网络、器件将在专用通道上监听、直到接收到第一条同步消息。 同步消息包含当前专用通道的剩余驻留时间(加上延迟)。 驻留时间(在 SYNC 消息中发送)是200ms MSP430定时器的 TxR 寄存 器的原始值、该寄存器由外部32.768kHz 晶体计时、即2字节无符号值从0到6553。 200ms 计时器将在过期时生成中断、 此时当前通道索引将递增。 使用 LF 晶振为计时器计时并使用 SYNC 消息中的原始 TxR 寄存器值 似乎是一种很好的通用方式、无需对 寄存器值执行任何数学运算即可同步网络器件。 我想 假设所有 TI MCU 计时器至少可以选择使用 LF 晶振计时是天真的:(
那么、话虽如此、我的选择是什么? 我可以使用 RTC 生成200ms 中断吗? 否则、我只需对接收到的 TxR 寄存器值进行一些数学运算即可将其缩放到48MHz 时钟。
尊敬的 David:
感谢您分享有关用例的一些背景信息、这让您尝试实现的目标更加清晰。 从计时器开始、器件中有多个计时器、但您查看的计时器 GPTimer 仅由系统时钟驱动(恰好为48MHz)。
RTC 计时器始终由32kHz 源驱动、可用于 SW 中的常规计时。 这实际上是为 CC13XX/CC26XX 平台提供的大多数示例所做的。 当使用 TI-RTOS 时、它归结为使用"时钟"模块、该模块是一个基于 RTC 时钟的定时器对象:
使用该时钟模块是在 RTOS 环境中设置简单单次触发或周期计时器的一种方法。 请记住、即使它是由 RTC 驱动、"节拍值分辨率"也以10us 为单位。 这意味着您仍需要将 MSP 值缩放到10us。
这些无线电 SoC 的另一个功能是、您可以使用时序信息将无线电命令调度到无线电。 基本上、您可以发出命令并为其提供一个启动条件、例如"这应该在200xms 内"从现在开始"/"相对于最后一次"运行"。 当然、这里还有更多选项、也可以看到结束时间、这只是一个示例。
另一个示例:
假设您已在一个通道上的 RX 中设置 CC1312、并且接收到您正在寻找的"同步消息"、并且 RX 结束。 然后、您可以立即为下一个通道索引安排一个新的 RX、并将 StartTime 配置为"从现在开始 X us "。 其中 X 是按无线电访问计时器(RAT)节拍率缩放的接收 MSP 计数器值(RF 驱动器中存在针对此值的宏)。
您还可以使用无线电时间戳功能从接收包(找到同步)时捕获 RAT 时间戳、并根据此值进行计算、这意味着在调整驻留时间时无需考虑内部处理延迟。
我建议您仔细研究无线电和时钟方法。 使用 GPTimer 意味着您基本上会强制器件保持在待机状态、这意味着功耗将是可怕的。 无线电/时钟方法允许器件针对功耗进行优化并在可能的情况下进入待机状态(由系统中的电源驱动器自动处理)。