zhangmangui 发表于 2015-7-18 23:03

TI TMS320F28335的EPWM如何软件强制开关状态

TI TMS320F28335的EPWM如何软件强制开关状态
在DSP用于电机控制的应用中,有时需要用到强制脉宽调制(PWM)的脉冲开关状态这种操作,比如封锁脉冲以停止电力电子开关管工作;
在上电的初始时刻,经常也需要对PWM状态进行一种强制的初始化,比如强制高、强制低等等;一些特殊的PWM算法,如果不是基于三角
载波比较法的,如一些SHEPWM、滞环PWM方法等等,也需要直接输出PWM脉冲的状态,此时不能使用比较值与定时器的直接比较来得到
开关状态,而且在需要的开关状态已知情况下,直接强制PWM状态,即可得到需要PWM脉冲。
在基于事件管理器(EV)的TI C2000 DSP中,如TMS320LF2407A、F2810、2812中,强制脉冲状态是一件很简单的事情,直接写ACTRx寄
存器就可以了,比如:
EvaRegs.ACTRA.all=0xfff;
这样的语句就能强制EVA对应的6个PWM管脚全部为高电平,等于0则可以全部强制低电平,需要强制特定管脚的值只需要修改对应的位即可。
在基于改进的PWM模块的C2000 DSP中,如2833x系列,都使用了新型的增强型PWM模块(EPWM),其每个PWM管脚都可以有单独的配置,
这样就造成了PWM配置的复杂性增加了。在网上找了好久,都没有找到如何强制脉冲状态。本来想,换了个新片子,大不了照葫芦画瓢配置
一番就行了,于是拿过EPWM的手册,照着AQSFRC寄存器配置了半天,却总是没反应。看名字,AQSFRC是Action-Qualifier Software Force Register,
应该是可以force它听话的啊!代码

EPwm1Regs.AQSFRC.bit.OTSFA=1;
EPwm1Regs.AQSFRC.bit.ACTSFA=1;

这样子的根本不产生任何效果。
后来才发现是研究不深啊,原来真正需要配置的是AQCSFRC:

EPwm1Regs.AQSFRC.all=0xc0;
EPwm1Regs.AQCSFRC.all=state;

两个寄存器的datasheet的页码就差一页,下次真得要读仔细了。

zhangqingle 发表于 2018-10-11 11:11

遇到同样问题,pwm初始化设置为低电平,并且在每次停止输出pwm时,也设置为低电平,但是下一次启动时,仍有高有低,请问,遇到过类似情况吗?
EPwm3Regs.AQSFRC.all = 0xC0;         //强制低
EPwm3Regs.AQCSFRC.all = 0x4;         //强制低
EPwm4Regs.AQSFRC.all = 0xC0;         //强制低
EPwm4Regs.AQCSFRC.all= 0x4;         //强制低
我用了pwm3b,pwm4b,但是控制不了

airwill 发表于 2018-10-11 19:11

确实是这样的,看说 EPWM 是一个系列, 其实这里是有差别的. 使用的时候要留意.
另外要注意这个方法设置 电平的时候, 可能存在时间的不同步.

zhangqingle 发表于 2018-10-26 14:05

pwm端口初始化,上电复位后,直接就是高电平,这样很容易烧片子,想将其设置为低电平,有什么好办法吗?

zhangmangui 发表于 2018-10-26 23:00

zhangqingle 发表于 2018-10-26 14:05
pwm端口初始化,上电复位后,直接就是高电平,这样很容易烧片子,想将其设置为低电平,有什么好办法吗? ...

这种首先需要通过下拉电阻    电阻还需要小于2k

zhangmangui 发表于 2018-10-26 23:01

zhangqingle 发表于 2018-10-26 14:05
pwm端口初始化,上电复位后,直接就是高电平,这样很容易烧片子,想将其设置为低电平,有什么好办法吗? ...

IO口未被程序控制的时候      是不定状态    需要上下拉或电平转换类处理
页: [1]
查看完整版本: TI TMS320F28335的EPWM如何软件强制开关状态