我使用 EPWM1和 EPWM4。
EPWM1以160kHz 的频率运行
EPWM4的运行频率为10kHz
我从这两者触发 ADC 转换。 对于 EPWM1、我每触发8个事件计数一次、因此对于每个 EPWM4触发的转换、我应该看到2个 EPWM1触发的转换
我有针对两个通道转换结束中断的 ISR。 出于调试目的、我在 ISR 中切换 GPIO、以便可以在逻辑分析仪上看到 ADC ISR 执行的时序。
我在启动期间同时启动两个 ePWM:
- SYSCTL_disablePeripheral (SYSCTL_Periph_CLK_TBCLKSYNC);
- 配置 EPWM4
- 配置 EPWM1
- SYSCTL_enablePeripheral (SYSCTL_Periph_CLK_TBCLKSYNC);
由于 EPWM1的频率是 EPWM4的倍数、ePWM 通道应保持同步、因为它们都基于同一个 PWM CLK。 我应该看到用于 EPWM1/ADC 转换的 GPIO 在与 EPWM4/ADC 的 GPIO 一致的偏移处进行切换。
我观察到的是 GPIO PWM 通道看起来不同步。 这也不是慢漂移。
例如、我在某个时刻捕获该值:

然后我在几秒钟后捕获它:

您可以看到 EPWM4 ISR 位于第一次捕获中每个其他脉冲之间。 在第二次捕获时、EPWM4 ISR 与 EPWM1 ISR 对齐。
这是否正常? 我剥掉了项目的基本例子,我看到了这种行为。 CPU 正常空闲、ISR 只清除标志并返回。 所以这不应是高 CPU 使用率和/或资源冲突的结果。
对于28379D、我看到有一个功能是使用 EPWM1 OUT 来同步到 EPWM4的输入。 此问题足以解决这个问题吗?或者我是否看到另一个需要检查的问题?
如果可以使用同步功能...EPWM4用作电机控制的相位。 是否存在使用 EPWM1作为同步源而使 EPWM4增加一些小波动的问题?
谢谢!


