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 的操作(不是基于相位控制寄存器或 ePWMxSYNC 信号)同步一个 ePWM 模块。 例如、当 ePWM1A 变为 LO 时、将 ePWM2A 设置为 HI。 原因是- ePWM1是主器件、其配置周期性变化、A 和 B 都与高电平有效互补、 并由类似于峰值电流模式控制的外部信号终止。 然后 、当 ePWM1终止时、我希望与 ePWM2同步。 我不能只使用 ePWM1周期来在零、CMPB 等上生成 SYNC 信号、因为终止时间不是在内部预定义的。
我可以在 ePWM2内复制配置、但我希望有一种更简单的方法来实现、因为 ePWM1的设置使用大量外设、并且会产生大量重复、我希望避免这种情况。
谢谢
EPWMxSYNC
遗憾的是、从我对您问题的理解来看、我们的硬件中没有内置此代码、但在使用 drivelib 和 bitfield 时、就软件而言、您可以轻松避免使用重复代码。
在代码中需要复制 EPWM1和 EPWM2配置的位置、可以编写如下所示的函数:
void initEPWM (uint32_t ePWM_base) { // //设置 TBCLK // ePWM_setTimeBasePeriod (ePWM_base、EPWM1_TIMER_TBPRD); ePWM_setPhaseShift (ePWM_base、0U); ePWM_setTimeBaseCounter (ePWM_base、0U); ... }
或者对于位字段、您可以执行以下操作:
volatile struct ePWM_regs * ePWM[PWM_CH]= {&EPwm1Regs、&EPwm1Regs、&EPwm2Regs、&EPwm3Regs、&EPwm4Regs、 EPwm5Regs、 &EPwm6Regs、&EPwm7Regs、&EPwm8Regs}; void InitEPwm () { for (j=1;j <