在英飞凌TC389芯片上开发升压模块时,且升压模块的硬件通道共用FOC的六路发波的硬件通道,且FOC模式和升压模式可以来回切换。故此在模式切换时需要对相应的用于发波的ATOM通道进行配置的切换。
两种模式下的PWM输出模式都是SOMP。
FOC模式,6路ATOM利用参考通道进行同步和中心对称发波,对于下桥对应的ATOM通道,控制寄存器ATOMi_CHx_CTRL bit位RST_CCU0 = 0,TRIGOUT = 1,UDMODE = 0,SL = 1;比较单元寄存器CM0,SR0 = 2, CM1,SR1 = MAX+2(CN0复位来自前一个通道,向上计数模式,通道初始输出为高电平,理论上通道输出为低电平)。
升压模式,UVW互错120°输出,利用UP/DOWN计数模式进行中心对此发波(因为没有参考通道,不同ATOM的通道使能会有延迟(需要自己标定))。控制寄存器ATOMi_CHx_CTRL bit位RST_CCU0= 1,TRIGOUT = 0,UDMODE = 1,SL = 0;比较单元寄存器CM0,SR0 = (MAX+2)/2, CM1,SR1 = 0(CN0复位来自前一个通道,向上向下计数模式,通道初始输出为高电平,理论上通道输出为低电平)。
当从升压模式切换到FOC模式,相应的ATOM通道的配置会进行赋值。此时通道输出信号OL会非预期无规律的出现高电平。因为GTM是挂载在总线上,指令操作会有一定延迟,故在控制寄存器赋值后延迟一段时间再给比较单元寄存器赋值,结果还是一样。
但是将FOC模式的配置SL改为0时,通道输出就是符合预期的低电平。问了英飞凌代理商,他们可以复现这种现象,但也给不出相应的解释。可能是389的GTM Ip上存在这种bug,或者什么电气特性导致的。。。最终解决方案就是切换到FOC模式时,先设置6路PORT口为GPIO低输出,然后关闭6路ATOM通道,控制寄存器赋值时暂时令SL = 0,给比较单元寄存器赋值后,且使能通道后再令SL = 1,最后设置PORT为PWM输出。