使用matlab自动代码生成技术验证ePWM模块的使用
2017-12-29 19:26阅读:
今天大家都放假了,我在实验室没事,就试着做了一下关于matlab/simulink自动代码生成的ePWM模块的验证,并得到了一些结论,在这里和大家分享,也请专业人士加以指正。
实验器材:TI28335开发板,配套的仿真器,示波器,导线若干。
将开发板,仿真器,电源线和计算机连接。博主使用的matlab版本是matlab2016a,然后建立simulink模型,拉出来一个ePWM的模块,进行设置。
然后对模型进行配置,选择的硬件是TI的28335,别忘了配置CCS的版本。设置仿真的步长为0.01s,设置完成后进行自动代码生成。打开CCS,直接点击那个蜘蛛,然后连接硬件,将生成的.out文件下载到CCS里。

运行,根据上面的图可知配置的是ePWM1,所以查看这个CMPA寄存器的值;

看到CMPA的数值是7D00,换算成10进制是32000,和上面图中对ePEM的配置一致,然后查看示波器的波形,
示波器探头连接的是开发板上P5的7号针;波形是脉冲波,占空比为50%。设定的仿真步长是0.01s即10ms一个周期,认真观察示波器,可以发现PWM的周期是0.01s。
以上验证完成后就进行其他的验证,搭建模型如下

配置ePWM如下方式
然后生成代码后下载到DSP里;波形预想是计数方式为向上向下计数,向上遇见30000置位,遇见32000复位,向下遇见32000置位,遇见32000复位。使用的波形有哦ePWM1A和ePWM1B两路,设置的时候设置成了对称型的。这里,常数模块的存储类型是uint32.这个不要弄错了。
看寄存器和示波器波形

观察示波器可知得到了期望的波形。
得出的结论是,通过配置ePWM模块可以方便的得到PWM波形。可以生成多路PWM,可以对称也可以不对称,也可以设置死区时间。
思考
如果做电机控制研究,波形的计数值应该如何设置。
那就需要做Q格式运算,各种转换,这也是我写上一篇博客的原因。
我还会继续将自己的探索成果写成博客,欢迎浏览交流。