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.

[参考译文] TM4C123GH6PM:QEI 以一致的间隔采样?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/611526/tm4c123gh6pm-qei-sampling-at-consistent-intervals

器件型号:TM4C123GH6PM
主题中讨论的其他器件:TM4C123

我们需要以1ms 的"精确"一致间隔对两个 QEI 位置计数器进行采样、其中"精确"意味着尽可能减少时序变化。 例如、如果采样间隔通常为1ms 左右、但有时为1.5ms、有时为0.5ms、则会导致采样停止、从而提供不可接受的性能。

在过去、我们使用了一个具有单独保持寄存器的正交计数器 IC。 当发送一个定时脉冲时、IC 将把瞬时计数器寄存器复制到这个保持寄存器、即、"锁存"这个值。 该相同的计时脉冲将在我们的 MCU 中触发中断、该中断将从 IC 的保持寄存器中读取保存的值。 通过这种方式、软件执行的时序变化对 QEI 采样没有影响:重要的是该值被"锁存"到了时间。 对于语义:是的、硬件中肯定存在时序差异、但这些变化大约为几纳秒、比软件引入的差异小很多数量级。

TM4C 似乎没有在"硬件"中提供这样的保存寄存器、因此这是一个问题。 我们认为的"最佳"解决方案是显而易见的:使用计时器外设以固定间隔触发中断、将该中断设置为最高优先级、并在此中断中对 QEI 采样。 当然、软件中仍然存在各种可能会中断计时的" gotchas "、例如固定为负优先级的其他中断。

这是 TM4C 真正的"最佳"解决方案吗? 是否有某种方法可以使用定时器触发的 DMA 将*两个* QEI 位置计数器复制到时序变化较少的内存中的变量? 或者我们可能忽略了其他一些可能性?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    TM4C123 UDMA 不支持 QEI 传输。 如果您可以在 NVIC 中对计时器中断进行优先级排序、并在进入计时器 ISR 时禁用处理器中断、那么我认为您可以避免任何时序变化。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这就是我的想法。 感谢您的澄清