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.

[参考译文] TMS320F280039C:通过 eQEP 在低速下使用 eCAP

Guru**** 2468460 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1474070/tms320f280039c-using-ecap-at-low-speeds-with-the-eqep

器件型号:TMS320F280039C

工具与软件:

我有一个低 PPR (64)正交编码器、可用于电机控制应用中的转子位置。

我需要在 ePWM 中断中确定转子位置和速度。 转子位置需要从最后一个边沿外推到当前 ePWM ISR 开始时的时间。

EPWM 中断还会为 ADC A/B/C 生成 ADCSOCA 事件   

我已经弄清楚了如何使用  ADCSOCA 触发选通事件锁存以捕获 QPOSSLAT 中的计数器位置。

问:此事件是否也会锁存 QCTMR 和 QCPRD、还是需要手动读取 QPOSCNT?

TRM 指出"如果 QEPCTL[QCLM]位被清除、则捕获计时器和捕获周期值会被锁存到中
当 CPU 读取位置计数器(QPOSCNT)时、QCTMRLAT 和 QCPRDLAT 寄存器。"

高速时、我计划使用边沿捕获单元  QCPRDLAT   计算在一个正交周期(四个边沿)内进行速度测量所需的时间。 我会使用   QCTMRLAT 来计算"旧的"边沿相对于 ADCSOCA 的"程度、以便进行外推。 我会使用最小时钟分频来获得合适的分辨率。

如果 边沿捕获单元计时器是合适的32位计时器、我也可以在低速时使用这种方法。 由于它们只有16位、因此我需要使用另一种方法。

我正在考虑使用 eCAP 进行低速时间测量、因为它们是32位。  

问: 是否可以将 eQEP QCLK 连接到一个或多个 eCAP 计时器来获取当前边沿之间的时间差和当前边沿的时间戳。 或者、我可以将 EQEPA 和 B 信号(在输入 XBAR 中) 分别映射到 eCAP 中、但这并不理想。  

Jason

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

    尊敬的 Jason:

    [报价 userid="628974" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1474070/tms320f280039c-using-ecap-at-low-speeds-with-the-eqep "]

    问:此事件是否也会锁存 QCTMR 和 QCPRD、还是需要手动读取 QPOSCNT?

    [报价]

    这是两个选项。

    [报价 userid="628974" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1474070/tms320f280039c-using-ecap-at-low-speeds-with-the-eqep "]

    问: 是否可以将 eQEP QCLK 连接到一个或多个 eCAP 计时器来获取当前边沿之间的时间差和当前边沿的时间戳。 或者、我可以将 EQEPA 和 B 信号(在输入 XBAR 中) 分别映射到 eCAP 中、但这并不理想。  

    [报价]

    遗憾的是、您无法将 eQEP QCLK 连接至 eCAP 的一个输入。 QCLK 在 eQEP 内部、仅路由到 eQEP 的 AQCAP 和 PCCU 模块。

    另一个选择是去的方式。

    此致!

    Ryan Ma

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

    谢谢。 是否有任何使用 CLB 的选项?  我看到 eQEP 信号 EQEP1_QCLK、 EQEP1_QDIR、EQEP1A 、 EQEP1B、EQEP1I   EQEP1S 可用、但我对 CLB 没有任何经验。  

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

    尊敬的 Jason:

    您可以通过 CLB 和 CLB 输出 Xbar 路由到 QCLK 的 eCAP。  

    此致!

    Ryan Ma

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

    感谢 Ryan、

    我要对 CLB 学习很多、但从文档中可以看到、EQEP1_QCLK 可以连接到 CLB 输出(具体来说是 CLB1输出8)。 但我认为这意味着 CLB 可以覆盖  EQEP1_QCLK (我不想这么做)。  如果 eQEP_QCLK 无法连接到 CLB 输入、我无法看到如何将其路由到 CLB 输出交叉开关。 希望我缺少一些东西。  

    此致、

    Jason Wiseman

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

    尊敬的 Jason:

    让我更正一下我的陈述、遗憾的是、您提到的信号是 CLB 输出目的地连接到了 eQEP CLK。 但是、您无法将 eQEP CLK 信号路由至 eCAP 的引脚、或以其他方式在内部路由。

    此致!

    Ryan Ma

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

    谢谢 Ryan。 看起来我必须在 CLB 中重构 eQEP CLK、以生成 eCAP 的触发源。  一个更雄心勃勃的选项是 在 CLB 中构建自定义正交编码器接口、这一接口会满足我的一切需求。 有任何有关开始此操作的提示吗? 我假设有一个 GUI 和仿真工具可帮助开发。