在我们的一个项目中,我们在UCD3138上遇到了一个奇怪的DPWM行为;在某些测试条件下,所有DPWM都没有输出信号;
我们使用UCD3138作为全桥转换器的控制器,并在正常模式下使用DPWM;在这种奇怪的情况下,通过内存调试器,Dpwm0Regs.DPWMFILTERDUTIREAD确认应该有最大占空比输出;而所有DPWM上都没有PWM信号;
我们检查了DPWMCTRL0.PWM_EN,LoopMuxRegs.GLBEN和MiscAnalogRegs.GLBIOEN,所有这些都启用了DPWM;
MiscAnalogRegs.GLBIOEN的读数是0x1400.4万,如果我们写入0x140.0407万F以禁用DPWM,并写入0x1400.4万以再次启用DPWM,而不更改任何其他内容,仍然没有DPWM输出;
LoopMuxRegs.GLBEN的读数是0x50F,如果我们再次写入0x50F,则写入成功,但没有DPWM输出;如果我们写入0x500以禁用DPWM,并写入0x50F以再次启用DPWM,而不更改任何其他内容,则所有DPWM都将返回;
DPWMCTRL0.PWM_EN的读数是0x01,如果我们再次写入0x01,写入成功,但没有DPWM输出;如果我们写入0x00以禁用PWM,并写入0x01以再次启用PWM,而不更改任何其他内容,则此DPWM将返回;
DPWM可以通过重置LoopMuxRegs.GLBEN或DPWMCTRL0.PWM_EN来恢复,但其原始值正确,可以启用DPWM,为什么?