您好!
我对 ePWM 外设相当陌生。
如何使用 ePWM 外设生成旋转编码器 PG 信号? 我认为我只需要生成 PGA 和 PGB、然后在 CPLD 中使用计数器来生成 PGZ。
此外、对于 PGA 和 PGB、最好使用单个 ePWM 模块或两个不同 ePWM 模块的 A 和 B?
斯蒂芬
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.
您好!
我对 ePWM 外设相当陌生。
如何使用 ePWM 外设生成旋转编码器 PG 信号? 我认为我只需要生成 PGA 和 PGB、然后在 CPLD 中使用计数器来生成 PGZ。
此外、对于 PGA 和 PGB、最好使用单个 ePWM 模块或两个不同 ePWM 模块的 A 和 B?
斯蒂芬
我还没有看到来自旋转编码器的实际脉冲。 不过、以下网站对其进行了介绍。 A 与 B 异相90度、Z 脉冲每转一圈产生一次。
https://en.wikipedia.org/wiki/Rotary_encoder#/media/File:Quadrature_Diagram .svg
脉冲的周期与编码器的旋转速度成正比。
我需要使用 PWM 来生成 A 和 B 脉冲、而 Z 脉冲将由其中一个或两个脉冲生成。
我应该使用两个单独的 PWM 模块、还是应该使用来自一个 PWM 模块的 A/B? 我如何获得90degs 相移?
周老师、您好!
A 和 B 的占空比是否始终为50%? 如果是这样、只需一个 PWM 模块即可实现这一目的。 要实现所需的相移和占空比、请将 PWM 周期想象为需要实现4个事件:
这些事件都应与行动条件判断器事件相关。 在您共享的映像中、 您可以使用向上向下计数模式和 CMPA 值 TBPRD/2来实现此目的、并在计数器向上计数时将动作限定器事件设为0、CMPA、在计数器向下计数时将 TBPRD 和 CMPA 设为0。 如果相移不是90度、则需要利用 CMPA 和 CMPB 来在输出 B 上保持50%的占空比。如果 A 和 B 的占空比从50%变化、 您需要使用通过 TBPHS 同步在一起的2个 PWM 模块来实现相移。
我不确定您想使用 Z 脉冲实现什么目的、因为它没有包含在您发送的图像中、但如果 Z 脉冲来自 A 和 B、您可以使用 CLB 来实现。
谢谢!
卢克