Thread 中讨论的其他器件:controlSUITE
工具/软件:Code Composer Studio
您好、Cottier
感谢您的指导。
我们设置不同的 EPwmxRegs.CMPA.bit.CMPA 值和固定的 EPwmxRegs.TBPRD 值来生成 PWM 波形。 我们将 EPwmxRegs.TZCTL.All=10 和 EPwmxRegs.TZFRC.bit.OST=1设置 为停止 EPWMA 和 EPWMB 输出。 我们设置 EPwmxRegs.TZCLR.bit.OST =1 以启动 EPWMA 和 EPWMB 输出。 我们将 EPwmxRegs.TZCTL.bit.TZA=3设置为启动 EPWMA 输出。 我们将 EPwmxRegs.TZCTL.bit.TMZ=3设置为启动 EPWMB 输出。 在 EPWMA 或 EPWMB 开始输出之前、EPwmxRegs.CMPA.bit.CMPA 活动寄存器已更新为预期值。 时基计数器(TBCTR)始终向上计数-向下计数。 DB 子模块的输出始终有效。 :
条件如下:TBCLK=30M、上-下计数模式。 EPwmxRegs.TBPRD=1500 (开关频率为10k)。 EPwmxRegs.DBCTL.All=11 (x=1/2/3)。 DB 子模块上升沿和下降沿2us 的时间延迟。 EPwmxRegs.AQCTLA.All=0x61。
使用 ePWM1/2/3的 A 和 B 输出来控制三相 IGBT (100A)桥。 A 控制上半桥、B 控制下半桥。 A 和 B 输出到缓冲器。 用于控制光耦合器的缓冲器输出。 光耦合器控制 IGBT。 SVPWM 电压矢量振幅固定为200V、直流总线电压约为560V。 SVPWM 电压矢量动作时间1ms、停止时间80ms、以使永磁同步电机定子绕组完全释放电流。 每个电压矢量角度测试20000次。 电压矢量角度为348.7、337.5、270、202.5、180、 157.5、112、101.2、92.8、90、 88.5和0。 不同的角度将使 CMPA 值不同。 当 CMPB = 0时、当电压矢量角度为88.5度时、当每次测试大约40次时、ePWM1/2/3的 A 和 B 输出将输出高电平。 这将导致 IGBT 短路和光耦合器输出保护。 其他角度不存在此问题。 将 CMPB 的值设置为1498 (CMPA 不使用该值)。 当每次测试大约3000次时、这些异常发生在92.8度。 当每次测试大约3000次时、这些异常在157.5度处发生。 更改中断服务程序的位置后(项目有5.C 文件。 我们将 ISR 移至其他.C 文件。)。 CMPB 的值仍然为1498。
原因是什么?
我们测试了 ePWM 模块的一些寄存器、包括 EPwmxRegs.TZFLG.ALL、EPwmxRges.TZCTL.ALL、EPwmxRges.DBCTL.ALL、EPwmxRges.AQCTL.ALL、 EPwmxRges.AQCTLA.ALL、EPwmxRges.TBCTL.ALL、(x=1/2/3)。所有这些寄存器的值都是预期值。
EPwmxRegs.TZCTL、EPwmxRegs.TZFRC、EPwmxRegs.TZCLR 等 TZ 子模块寄存 器只能在 EPwmxRegs.TBCTR、EPwmxRegs.CMPA.bit.CMPA 和 EPwmxRegs.CMPB.TZCLR 寄存器处于设置状态时才能设置、也可以在 TZ 位模块中设置这些位值。
EPwmxRegs.CMPA.bit.CMPA 或 EPwmxRegs.CMPB.BIT.CMPB 的功能仅与 EPwmxRegs.TBCTR 进行比较、并在不使用任何其他功能的情况下产生相应的事件。 是这样吗?