我正在尝试开发用于打开和关闭 ePWM 的函数。
ePWM 设置在不同的功能中完成、并且在 ePWM 运行时工作正常。
我编写了以下函数来操作运行 ePWM 的引脚。
来打开 ePWM。
void start_pwm_gpio (void) { InitEPwm1Gpio(); InitEPwm2Gpio(); InitEPwm5Gpio(); }
以关闭所有 ePWM 引脚
void stop_pwm_gpio (void) { EALLOW; GpioCtrlRegs.GPAMUX1.bit.GPIO0=0; GpioCtrlRegs.GPAMUX1.bit.GPIO1=0; GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; GpioCtrlRegs.GPADIR.bit.GPIO1=1; GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO3=0; GpioCtrlRegs.GPADIR.bit.GPIO2 = 1; GpioCtrlRegs.GPADIR.bit.GPIO3=1; GpioCtrlRegs.GPAMUX1.bit.GPIO8=0; GpioCtrlRegs.GPAMUX1.bit.GPIO9=0; GpioCtrlRegs.GPADIR.bit.GPIO8=1; GpioCtrlRegs.GPADIR.bit.GPIO9=1; EDIS; GpioDataRegs.GPADD.bit.GPIO0 = 0; GpioDataRegs.GPADAT.bit.GPIO1=0; GpioDataRegs.GPADAT.bit.GPIO2 = 0; GpioDataRegs.GPADAT.bit.GPIO3=0; GpioDataRegs.GPADAT.bit.GPIO8=0; GpioDataRegs.GPADAT.bit.GPIO9=0; }
以关闭下部 IGBT
void stop_lust_gpio (void) { InitEPwm1Gpio(); InitEPwm2Gpio(); InitEPwm5Gpio(); EALLOW; GpioCtrlRegs.GPAMUX1.bit.GPIO1=0; GpioCtrlRegs.GPADIR.bit.GPIO1=1; GpioCtrlRegs.GPAMUX1.bit.GPIO3=0; GpioCtrlRegs.GPADIR.bit.GPIO3=1; GpioCtrlRegs.GPAMUX1.bit.GPIO9=0; GpioCtrlRegs.GPADIR.bit.GPIO9=1; EDIS; GpioDataRegs.GPADAT.bit.GPIO1=0; GpioDataRegs.GPADAT.bit.GPIO3=0; GpioDataRegs.GPADAT.bit.GPIO9=0; }
以关闭上部 IGBT
void stop_upper _gpio (void) { InitEPwm1Gpio(); InitEPwm2Gpio(); InitEPwm5Gpio(); EALLOW; GpioCtrlRegs.GPAMUX1.bit.GPIO0=0; GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0; GpioCtrlRegs.GPADIR.bit.GPIO2 = 1; GpioCtrlRegs.GPAMUX1.bit.GPIO8=0; GpioCtrlRegs.GPADIR.bit.GPIO8=1; EDIS; GpioDataRegs.GPADD.bit.GPIO0 = 0; GpioDataRegs.GPADAT.bit.GPIO2 = 0; GpioDataRegs.GPADAT.bit.GPIO8=0; }
我在运行时使用 putty 通过 UART 从命令运行这些函数。
令人惊讶的是、当我尝试关闭上部 IGBT (GPIO0、GPIO2、GPIO8)时、它们不是"关闭"而是"打开"""""""实时"。 在这种情况下、当较低的 ePWM 打开时、ePWMxA 和 ePWMxB 在一个瞬间都打开、从而导致短路。 在执行此命令后、如果我尝试关闭整个 PWM、我会看到 ePWM 连接到上部 IGBT "打开"、而连接到下部 IGBT "关闭"。
这是一个错误。 这种情况并非总是发生、有时会发生、在关闭 ePWM 时仍然保持不变。
这是通过 GPIO 关闭 ePWM 的正确方法。 用户也可以通过 AQCTLA 设置执行该操作。 我使用 GPIO 只是为了使其成为硬"关闭"。
下面是从寄存器内容中查看的一个摘录。 当命令用于停止 ePWM 并关闭 GPIO0、1、2、3、8、 9 GPIO2仍然打开。
我的应用程序有下拉电阻器、我在180引脚 HSEC 扩展坞上尝试了相同的代码、我的应用程序也尝试了相同的代码、同一问题仍然存在。 当发出关闭命令时、不仅 GPIO2、而且所有连接到 ePWM 的其他 GPIO 会突然"打开"。