您好!
我们遇到了微控制器 TMS320F28377S 中的 PWM 问题。 逆变器中的微控制器控制 IGBT 模块、对于两个生产系列、此产品没有任何问题。 但在第三个系列中、逆变器开始发出一些奇怪的声音。 经过一些调查、我发现微控制器会生成错误的 PWM。 PWM 看起来像是 PWM 寄存器内部的比较器、在一个周期内忽略条件、并在下一个周期内关闭输出。
这种问题在恒定占空比(例如50%)下也会出现、因此不是一些数字问题。 在初始化后、仅设置一次占空比并用于主循环。 影响的只有一个因素是从 CMPA 到 CMPB 的开关计数器比较。 下面是初始化。对于 SWaP Boost = 1、正常、但对于 SWaP Boost = 0。
空 boostPwmConfig (空)
{ EALLOW; CpuSysRegs.PCLKCR2.bit.EPWM7 = 0x01; EPwm7Regs.TBPRD = TBPRD_16kHz;
EPwm7Regs.CMPA.bit.CMPA = 0; EPwm7Regs.CMPB.BIT.CMPB = 0;//比较 B = 500 TBCLK 计数 EPwm7Regs.TBPHS.ALL = 0;//将相位寄存器设置为零 EPwm7Regs.TBCTR = 0;//清除 TB 计数器 EPwm7Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//对称 //EPwm7Regs.TBCTL.bit.PHSEN = TB_DISABLE;//相位加载被禁用
EPwm7Regs.TBCTL.bit.PHSEN = TB_ENABLE;//启用相位加载 EPwm7Regs.TBCTL.bit.PHSDIR = TB_UP; EPwm7Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm7Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; EPwm7Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;// TBCLK = SYSCLKOUT EPwm7Regs.TBCTL.bit.CLKDIV = TB_DIV1; ClkCfgRegs.PERCLKDIVSEL.BIT.EPWMCLKDIV = 0;// EPwm7Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm7Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm7Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零 EPwm7Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零 EPwm7Regs.DBCTL.bit.OUT_MODE = DB_DISABLE; EPwm7Regs.TZFRC.bit.OST = 1; #ifdef swap_boost EPwm7Regs.AQCTLA.bit.CBU = AQ_SET; EPwm7Regs.AQCTLA.bit.CBD = AQ_CLEAR; EPwm7Regs.AQCTLB.bit.CAU = AQ_SET; EPwm7Regs.AQCTLB.bit.CAD = AQ_CLEAR; EPwm7Regs.DBCTL.bit.OUTSWAP=交换; 其他
EPwm7Regs.AQCTLA.bit.CAU = AQ_SET; EPwm7Regs.AQCTLA.bit.CAD = AQ_CLEAR; EPwm7Regs.AQCTLB.bit.CBU = AQ_SET; EPwm7Regs.AQCTLB.bit.CBD = AQ_CLEAR; EPwm7Regs.DBCTL.bit.OUTSWAP=NO_SWAP; #endif GpioCtrlRegs.GPAMUX1.bit.GPIO12=1;
GpioCtrlRegs.GPADIR.bit.GPIO12=1; GpioCtrlRegs.GPAMUX1.bit.GPIO13=1;
GpioCtrlRegs.GPADIR.bit.GPIO13 = 1; |
我还检查了所有板载电源、都可以。
这种现象仅发生在生产编号为4C-96AZKNW G4和4C-96C2GKW G4的微控制器中。 在从散射系列中为另一个微控制器重新供电后、未出现此问题。 每个微控制器的一个 PWM 中都存在问题、但不同的器件会出现不同的 PWM 输出问题、例如、一个器件上的 PWM7A 和 PWM7B、另一个器件上的 PWM6A 和 PWM6B。
导致此行为的原因可能是什么? 微控制器中存在缺陷? 焊接工艺过热? 可能有些初始化错误?
也许我还可以检查更多内容吗?