主题中讨论的其他器件: TMS320F2837
您好
我正在将 TMS320F28379D 控制器用于电机驱动 PWM 拓扑。 但是、有时电机会在中间运行、 当我运行90%占空比时、我可以获得3.3V 的恒定 GPIO 输出、当它低于20%占空比时、我可以获得0V 的恒定 GPIO 输出。 我好奇地想知道在什么情况下会发生这种情况、并且在 TMS 冻结条件下、 TMS320将发送什么值?
ePWM 配置设置:
EALLOW;
//禁用上拉并将 gonfigure 作为 EPWM
ATI_HUBMOTOR_PULL_UP = 1;
ATI_HUBMOTOR_MUX = 1;
EDIS;
hubmotor->TBCTL.bit.CTRMODE = TB_COUNT_UP;//递增计数
hubmotor->TBPRD = REARMOTOR_TIMER_TBPRD;//设置计时器周期
hubmotor->TBCTL.bit.PHSEN = TB_disable;//禁用相位加载
hubmotor->TBPHS.bit.TBPHS = 0x0000;//相位为0
hubmotor->TBCTR = 0x0000;//清除计数器
hubmotor->TBCTL.bit.HSPCLKDIV = TB_DIV2;//时钟与 SYSCLKOUT 的比率
hubmotor->TBCTL.bit.CLKDIV = TB_DIV1;
//
//在零时设置影子寄存器加载
//
hubmotor->CMPCTL.bit.SHDWAMODE = CC_shadow;
hubmotor->CMPCTL.bit.SHDLBMODE = CC_shadow;
hubmotor->CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
hubmotor->CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
//
//设置比较值
//
hubmotor->cmpa.bit.cmPA = 0;//设置默认值
hubmotor->CMPB.bit.CMPB = 0;//设置默认值
//
//设置操作
//
hubmotor->AQCTLA.bit.ZRO = AQ_SET;//将 PWM1A 设置为零
hubmotor->AQCTLA.bit.CAU = AQ_CLEAR;//清除事件 A 上的 PWM1A、
//向上计数
hubmotor->AQCTLB.bit.ZRO = AQ_SET;//将 PWM1B 设置为零
hubmotor->AQCTLB.bit.CBU = AQ_CLEAR;//清除事件 B 上的 PWM1B,
//向上计数
}

从图中可以看出,从12秒到17秒,我们错过了 Delfino TMS320F2837 ( UART 到 USB )的通信,并观察到车辆停止。 然而,它重新启动通信并一直到30秒, 30秒后,我们再次观察到 Delfino 通信和观察到车辆移动更快(只有当电机驱动器收到恒定3.3V 时才会发生这种情况)。
在第一个事件中、我们的 PWM 值非常低、这可能是由于 GPIO 引脚稳定在零、第二个事件 GPIO 可能稳定在高电平、因为我们的 PWM 值在该情况下是最大值。
我们想知道发生这种情况的条件以及 TMS320将在什么条件下自动复位。
在任何情况下 TMS320都将挂起(冻结)?
5年来、我们一直在使用相同的硬件和固件、并且在3个月内观察到两次此事件 、即使也更换了 TMS320板。
请告诉我事故的原因。