这几天用28335做一个逆变器,用到了28335 ePWM模块,刚开始对ePWM操作很模糊,无从下手,在网上也找了很多资料,发现看完了之后更加模糊,最后下定决心,看TI 28XX ePWM模块的英文文档,通过二天的努力,终于攻下了ePWM模块,现讲学习总结写出来,和学习28335的朋友们一起分享,也希望朋友们也把你们关于28335的一些好的学习心得写出来,大家相互交流下。28335在TI C2000系列DSP里面比较新的,有关资料基本上都是英文的,很不利于初学者,所以已经在学习或学习过28335的朋友可以相互帮助相互交流下,与人方便就是与己方便。
言归正传,28335 ePWM模块总结如下:
1、ePWM模块总共有7个模块:
(1)时间基准模块 ----------TB
(2)计数器比较模块 ----------CC
(3)动作限定模块 ----------AQ
(4)死区控制模块 ----------DB
(5)PWM斩波模块 ----------PC
(6)错误控制模块 ----------TZ
(7)事件触发模块 ----------EZ
每个模块各自作用如下:
TB :为输出PWM产生始终基准TBCLK,配置PWM的时钟基准计数器TBCTR,设置计数器的计数模式,配置硬件或软件同步时钟基准计数器,确定ePWM同步信号输出源;
CC:确定PWM占空比,以及ePWM输出高低电平切换时间;
AQ:确定计数器和比较寄存器匹配时产生动作,即ePWM 高低电平的切换;
DB:配置输出PWM上升沿或下降沿延时时间,也可以将A、B两通道配置成互补模式,我做的逆变器就是将ePWM配置成互补模式。死区时间可以编程确定;
PC:产生高频PWM载波信号;
TZ:当外部有错误信号产生时,对PWM输出进行相应处理,比如全置高,或拉低,或置为高阻态,从而起到保护作用。当然该功能也可以通过软件强制产生;
EZ:使能ePWM中断,使能ePWM触发ADC采样,确定事件产生触发的速度和清除相关事件标志位。
ePWM模块的7个模块就像一条生产线,一级一级的经过,但DSP更高级,可以实现通过配置,使得ePWM只经过我选择的生产线,没有被选择上的就不要经过。例如,死区控制模块可以需要也可以不需要,这就看实际系统需不需要了。在实际使用ePWM时,正常的发出PWM波往往只要要配置TB、CC、AQ、DB、ET五个模块。
2、试着阅读28335 各模块的英文资料,其实这些资料里面,详细的介绍了各模块的使用方法和原理,以及各模块所涉及到的寄存器的详细配置,“擒贼先擒王”,虽然英文资料阅读起来比较费劲,但打开Google,相信一般的都可以搞定,在结合自己的理解,会产生意想不到的收获。英文资料里面一写模块的框图,表格式很有用,这里面涵盖了该模块运行的逻辑关系,其实DSP就是块逻辑芯片,你只要通过寄存器的配置就可以让其完成各种指定的功能,所以不要把它想的太复杂。
3、可以看看TI 例程里面各模块头文件的定义,里面有些地方会有注释,从而便于理解。另外,可以自己琢磨TI 各模块例程相关寄存器的配置,从而实际寄存器配置的用法。最后说明下,附件里面包括了:我从ePWM英文资料里面截下来的某些子模块的功能框图和配置表格;ePWM TI 英文资料;我之前在HELLO DSP论坛下的一个资料“发波配置说明”(在这里要感谢那位仁兄)。
http://www.hellodsp.com/bbs/forum.php?mod=viewthread&tid=34642&highlight=F28335