求教,F28335怎样设置pwm的脉冲数

[复制链接]
7135|14
手机看帖
扫描二维码
随时随地手机跟帖
zhangmangui| | 2014-11-26 23:36 | 显示全部楼层
几句话说不清楚啊  

在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;

使用特权

评论回复
zhangmangui| | 2014-11-26 23:40 | 显示全部楼层
如果要用事件管理器输出具体的脉冲个数   这个还不好控制  
配置好PWM输出   然后使能输出   但是输出多少个让他强制高或强制低
这个数量不好控制  只能通过一个PWM波的周期是多少   然后使能输出的同时开启定制器计时
一定的时间到了  也就是多少个脉冲输出了

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
fantasy640 + 2 赞一个!
fantasy640|  楼主 | 2014-11-27 09:25 | 显示全部楼层
呵呵~~灰常感谢,我已经放弃用pwm了,实在想不出来怎么用pwm控制脉冲输出数了。我现在是直接给一个输出口低电平用定时器定时然后再给个高电平,循环计数,简单方便还准确

使用特权

评论回复
zhangmangui| | 2014-11-27 13:05 | 显示全部楼层
fantasy640 发表于 2014-11-27 09:25
呵呵~~灰常感谢,我已经放弃用pwm了,实在想不出来怎么用pwm控制脉冲输出数了。我现在是直接给一个输出口低 ...

可以  用GPIO模拟都可以

使用特权

评论回复
海中水| | 2014-11-27 13:50 | 显示全部楼层
fantasy640 发表于 2014-11-27 09:25
呵呵~~灰常感谢,我已经放弃用pwm了,实在想不出来怎么用pwm控制脉冲输出数了。我现在是直接给一个输出口低 ...

IO口模拟的话,能满足频率要求吗?

使用特权

评论回复
fantasy640|  楼主 | 2014-11-28 15:35 | 显示全部楼层
调定时器或者延时函数啊,应该没问题。

使用特权

评论回复
jing43| | 2014-11-29 23:20 | 显示全部楼层
说起来,PWM 的脉冲个数还真是不好控制,EPWM 所有寄存器中没有记录脉冲个数的。
我也想过这个问题,不知道可不可以用 ECAP 把 EPWM 的输出采回去,
把 ECAP 连接到 EPWM 的输出,先开 ECAP,再开 EPWM,当 ECAP 检测到设定个数的脉冲时,进入一个中断,把 EPWM 关了。

使用特权

评论回复
hitmanman| | 2014-12-8 15:27 | 显示全部楼层
好控制的吧。累加周期中断或者比较中断次数如何?

使用特权

评论回复
zhangmangui| | 2014-12-8 22:17 | 显示全部楼层
hitmanman 发表于 2014-12-8 15:27
好控制的吧。累加周期中断或者比较中断次数如何?

楼主可以向中端次数这方面考虑一下

使用特权

评论回复
18722281292| | 2018-6-7 16:44 | 显示全部楼层
zhangmangui 发表于 2014-11-26 23:40
如果要用事件管理器输出具体的脉冲个数   这个还不好控制  
配置好PWM输出   然后使能输出   但是输出多少 ...

这个可以使用定时器的比较或者周期中断,每产生一个脉冲进入中断一次,然后在中断里边自己设一个变量计数,当到达目标脉冲数目后再停止脉宽。不过用定时器中断的话就是进中断太频繁,耗费CPU资源。

使用特权

评论回复
zhangmangui| | 2018-6-8 21:52 | 显示全部楼层
18722281292 发表于 2018-6-7 16:44
这个可以使用定时器的比较或者周期中断,每产生一个脉冲进入中断一次,然后在中断里边自己设一个变量计数 ...

是的    尽量避免中断

使用特权

评论回复
yanghgc| | 2018-7-19 22:29 | 显示全部楼层
脉冲数不好控制,我也试过,总是多几个脉冲,而且没有什么规律

使用特权

评论回复
yechao2019| | 2018-12-17 16:06 | 显示全部楼层
楼主问题解决了吗?脉冲数是在count里设置吧?

使用特权

评论回复
蒋博1026| | 2018-12-23 19:46 | 显示全部楼层
PWM控制脉冲数真没做过,楼主解决了吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝