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.

[参考译文] TMS570LS1114:重置 RTI 递增计数器与 ECAP 周期测量之间的干扰

Guru**** 2393725 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1107700/tms570ls1114-interference-between-resetting-rti-up-counter-and-ecap-period-measurement

器件型号:TMS570LS1114

MCU:Hercules TMS570LS114

问题:重置 RTI 递增计数器与时钟/振荡器电路信号的 ECAP 周期测量之间存在干扰

背景: 我开发了一款基于无线电的产品、一款主无线电和多个从无线电、采用时分多路复用无线电协议。  从器件在 GPIO 输入的帮助下同步到主无线电时间同步数据包、从而在接收无线电数据包的末尾触发中断。  当处理 GPIO 中断时、RTI 递增计数器被清零(每10秒一次)。  为了解决不同单元(主器件和多个从器件)之间的晶体漂移、我必须在接收到无线电同步数据包时定期清除 RTI 递增计数器。   RTI 用于为所有要在中工作的对讲机生成计划事件和时隙。

以下代码用于在中断期间复位 RTI 计数器。  此方法运行良好、所有对讲机都与主对讲机保持同步。

                   rtiStopCounter (rtiCOUNTER_BLOCK0);

                   rtiREG1->CNT[rtiCOUNTER_BLOCK0].ucx = 0x00000000U;

                   rtiREG1->CNT[rtiCOUNTER_BLOCK0].FRCx = 0x00000000U;

                   rtiREG1->CMP[rtiCOUNTER_BLOCK0].Compx = 400U;

                   rtiStartCounter (rtiCOUNTER_BLOCK0);

但是、我正在使用 ECAP1和 ECAP5模块执行频率测量、并使用 ETPWM 为外部硬件生成一些时序信号、这些外部硬件用于控制振荡器电路、我正尝试测量精确的频率(40k-65kHz)。  ECAP 的每个输入都有两个由 ETPWM 复用的振荡器、这些振荡器生成一个时钟、用于选择要采样的振荡器。  ETPWM 还用于生成样本抑制周期、使振荡器启动并稳定。

为了进行测试并消除振荡器作为干扰的潜在来源、我使用函数发生器作为 ECAP1、5输入的时钟源。

当我启用 RTI 代码定期清除 RTI 递增计数器时、我会在 ECAP1和 ECAP5执行的脉宽测量中遇到干扰。

如果我禁用 RTI 代码以清除 RTI 递增计数器、则 ECAP1和 ECAP5执行的脉冲测量将完美工作、 IE 是稳定且可重现的、但无线电最终会偏离其时隙、因为 RTI 递增计数器不会与网络主计时数据包保持同步。

我无法理解 RTI 如何影响 ECAP 测量。  我已经检查了示波器、ETPWM 时序信号看起来不受影响。  ECAP 和 ETPWM 由相同的时钟源 VCLK4计时、VCLK4是与 RTI 时钟 RTI1CLK 不同的时钟源。

当干扰发生时、我会看到频率测量高达100Hz、测试输入频率为50kHz。  通常、测量非常稳定、样本之间的偏差为0Hz。

您能否建议如何解决此干扰问题?

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

    尊敬的 Rob:

    RTI 时钟可由 VCLK、PLL1、PLL2或 OSC 驱动。 您能否使用 TI 的不同时钟源(例如 OSC)来查看干扰的任何变化?