
DSP28335三相逆变程序(开环测试版)
最近在调DSP28335的三相逆变项目,发现开环测试真是新手入坑必备环节。这玩意儿说简单吧寄存
器配置能让人头秃,说难吧只要PWM波能正常输出就成功了一半。今天咱就唠唠怎么用C2000系列DSP整出
基础的三相六路PWM。
先上点硬货,核心配置代码长这样:
```c
void InitEPwm(void)
{
// PWM1模块配置
EPwm1Regs.TBPRD = 1000; // 周期寄存器,20kHz时钟
EPwm1Regs.TBPHS.half.TBPHS = 0; // 相位清零
EPwm1Regs.TBCTL.bit.CTRMODE = 0; // 增减计数模式
EPwm1Regs.TBCTL.bit.PHSEN = 0; // 禁止相位加载
EPwm1Regs.TBCTL.bit.PRDLD = 1; // 直接装载模式
EPwm1Regs.CMPA.half.CMPA = 500; // 占空比50%
// 死区配置(重点!)
EPwm1Regs.DBCTL.bit.OUT_MODE = 0x3; // 使能上下管互补
EPwm1Regs.DBCTL.bit.POLSEL = 0x2; // 高有效
EPwm1Regs.DBRED = 50; // 上升沿延时50ns
EPwm1Regs.DBFED = 50; // 下降沿延时50ns
// 同步触发配置
EPwm1Regs.ETSEL.bit.SOCAEN = 1; // 使能SOC触发
EPwm1Regs.ETSEL.bit.SOCASEL = 0x1; // 计数器等于0时触发
}
```
这段代码有几个容易翻车的地方:首先是死区时间计算,DBRED和DBFED的值要根据系统时钟来换算
。比如主频150MHz时,1个周期约6.67ns,设50就是333ns左右。新手经常忘记这里得用整型数,直接写时间
值肯定扑街。
同步触发那块要注意各相之间的相位差设置,开环测试时建议先调成同相位。见过有老哥没设相位
寄存器直接上电,结果出来的波形跟心电图似的抽抽。