Simulink嵌入式自动代码DSP F28335(3)ePWM模块详解及应用例程
简述
本文以C2000硬件支持包F2837X的ePWM模块为例进行介绍,内容与F2833X模块相差不大,部分设置页面有少许差异。第二段将进行应用实例介绍:①一路带死区输出(20kHz,占空比50%) ②两路同步输出 基本设置和重要地方进行加粗和标黄显示 阅读本文前先对ePWM模块有些了解,建议查看官方数据手册。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1edff2e7581e4fc8984368acaee9d271.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_18,color_FFFFFF,t_70,g_se,x_16#pic_center)
图一
1、模块介绍
1.1 General界面
![在这里插入图片描述](https://img-blog.csdnimg.cn/ef1f5dd4bdff4bb389888dfba2dc4e98.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_19,color_FFFFFF,t_70,g_se,x_16#pic_center)
图二
- Module:选择所使用的ePWM模块。F28379D可选16路ePWM模块。
- ePWMLink TBPRD:使当前ePWM模块链接到另一个ePWM模块,以获得另一ePWM模块的计时器周期值。(C2000系列部分处理器有这个功能)
- Timer period units:以时钟周期或以秒为单位确定计时器周期值。(为减小误差,获得最佳结果,建议选择时钟周期)
- Specify timer period via:填写计时器周期的方式,可以选择通过对话框填写或者输入端口确定。(如果计时器周期不变,可以选择通过对话框填写specify via dialog,如果选择输入端口input port,需要填写计时器初始周期值Timer initial period)
- Timer period:确定计时器周期值,当3[Timer period units]选择时钟周期时,此处单位为时钟周期步长(对于200MHz的F28379D,1=5ns);当3选择秒时,此处单位为秒。参数设置参考7[Counting mode]。
- Reload for time base period register(PRDLD):选择何时更新计时器周期值,默认计数值等于0时更新,也可选择同步事件或是立即更新。
- Counting mode:默认增减计数,也可选择增计数是减计数。
![在这里插入图片描述](https://img-blog.csdnimg.cn/9b9d2a7b66114574b5aa08622a180d84.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_10,color_FFFFFF,t_70,g_se,x_16#pic_center)
图三
- Synchronization action:确定相对于时基同步信号EPWMxSYNCI的相位偏置。(还不太明白其作用)
- Specify software synchronization via input port:创建一个同步端口SYNC,实现多个ePWM精确同步。
- Enable digital compare A event1 synchronization(DCAEVT1):选择此参数可将此PWM模块与另一个PWM模块的时基同步,使用相位偏移值微调两个模块之间的同步。
- Enable digital compare B event1 synchronization(DCBEVT1):作用同10。
- Synchronization output(SYNCO):确定时基计数器什么何时同步。
- Peripheral synchronization event (PWMSYNCSEL):外围同步。
- Time base clock (TBCLK) prescaler divider:时基时钟分频。
- High speed time base clock (HSPCLKDIV) prescaler divider:高速时基时钟分频。
- Enable swap module A and B:交换ePWMA和ePWMB输出。
1.2 ePWMA界面
![在这里插入图片描述](https://img-blog.csdnimg.cn/585bb5bf6e8d47a6b922513f711406c8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_19,color_FFFFFF,t_70,g_se,x_16#pic_center)
图四
- Enable ePWMA:使能ePWMA
- 输出电平何时变化(计数值等于0,周期值,CMPA,CMPB时变化)下图为默认值
![在这里插入图片描述](https://img-blog.csdnimg.cn/f640e85dc14f47a5a3fe1e9c2a67a10a.png#pic_center)
图五
可以理解为调制波与载波相交时电平变化情况。
- Add continuous software force input port:添加连续软件执行输入端口,创建一个输入端口SFA,可用于控制软件执行逻辑。将以下值之一作为无符号整数数据类型发送到SFA:
0=强制禁用:不执行任何操作(默认)。 1=强制低:清除低 2=强制高:设置高 - Continuous software force logic:如果未创建SFA输入端口,则可以使用连续软件执行逻辑。可以指定以下选项之一:
Forcing disable: Do nothing (default). Forcing low: Clear low Forcing high: Set high - Reload condition for software force:软件执行重载情况(何时重载)
1.3 ePWMB界面
![在这里插入图片描述](https://img-blog.csdnimg.cn/476b3f2fae0145d7b7147f0bdf7c665d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_19,color_FFFFFF,t_70,g_se,x_16#pic_center)
图六
同ePWMA Inverted version of ePWMA:反转ePWM A信号并将其作为ePWM B输出。
1.4 Counter Compare界面
![在这里插入图片描述](https://img-blog.csdnimg.cn/115e70baacb143709893169f5b183e3c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图七
- ePWMLink CMPA:链接另一ePWM模块的CMPA值。
- CMPA units:确定CMPA单位,时钟周期或是百分比。
- Specify CMPA via:指定脉宽来源:根据输入端口或是对话框填写。(如果选择输入端口需填写初始值)
- Reload for compare A Register (SHDWAMODE):比较寄存器周期何时重载
CMPB、CMPC、CMPD设置同理
1.5 Deadband unit界面
![在这里插入图片描述](https://img-blog.csdnimg.cn/8968266d04c249a3a63ecfcca434b237.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图八
- Use deadband for ePWM1A:使用ePWM1A死区设置。
- Use deadband for ePWM1B:使用ePWM1B死区设置。
- Enable half-cycle clocking:启用半周期时钟,使死区分辨率加倍。
- Deadband polarity:确定死区极性,如下图
![在这里插入图片描述](https://img-blog.csdnimg.cn/c28545e5710c49368a1fc88549a9f1c4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_18,color_FFFFFF,t_70,g_se,x_16#pic_center)
图九
- Signal source for raising edge (RED):上升信号源,选择参考信号上升沿,如图9中Original。
- Signal source for falling edge (FED):下降信号源,选择参考信号下降沿。
- Deadband period units:确定死区时间单位,选择时钟周期或是秒。
- Deadband period source:死区时间确定方式,可选择输入端口或是对话框填写。
- Deadband Rising edge (RED) period (0~16383)和Deadband Falling edge (FED) period (0~16383):确定死区时间。
- Reload for DBRED register (SHDWDBRED)和Reload for DBFED register (SHDWDBFED):重载死区寄存器设置。
2、应用实例
2.1 一路带死区互补输出(20kHz,占空比50%)
模型搭建如图十
![在这里插入图片描述](https://img-blog.csdnimg.cn/2c993ab8eefb401cbd579ec10b906b17.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图十
![在这里插入图片描述](https://img-blog.csdnimg.cn/fc8b014b079b4594b1df1d62686b5ef2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图十一
如图11所示,计时器单元选择以时钟周期为单位,计数模式增减计数,当计时器周期设位5000时 F28379D(200MHz,5ns) 输出脉冲周期为5ns * 5000 * 2 = 50us,也就是20kHz
![在这里插入图片描述](https://img-blog.csdnimg.cn/e1a4f100c8164e66b8aee7a4d3850e09.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图十二
ePWMA 当计时器数值向上增加等于CMPA时,输出低电平 当计时器数值向下减小等于CMPA时,输出高电平
![在这里插入图片描述](https://img-blog.csdnimg.cn/d65cedd8b4de4ccaa540d3e2eeacb2cb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图十三
ePWMB 当计时器数值向上增加等于CMPA时,输出高电平 当计时器数值向下减小等于CMPA时,输出低电平
![在这里插入图片描述](https://img-blog.csdnimg.cn/8af377f645864dbebde1af4a1f38222d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图十四
只用到了CMPA,并通过输入接口确定,设置为2500使占空比为50%
![在这里插入图片描述](https://img-blog.csdnimg.cn/c3ed2d0222cc44cd91669324cc72fc17.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图十五
确定死区设置极性AHC,死区时间单边5ns*500=2.5us
实验结果 ![请添加图片描述](https://img-blog.csdnimg.cn/37c828a29fcf43fe96c46f6efbdd992f.bmp?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图十六
示波器结果与设置一致
note: 如果选择死区设置,即使不勾选使能ePWM,也能输出。
2.2 两路同步输出
模型搭建如图十七所示。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/be0c9d8fa04746729f559e0f33d7cd01.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图十七
![在这里插入图片描述](https://img-blog.csdnimg.cn/7080f22cd2754da8a3cb778a0346e8ef.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图十八
配置与2.1一致,注意打开同步输出。
实验结果 ![请添加图片描述](https://img-blog.csdnimg.cn/be993335a05443c2960c03f5c8505a8b.bmp?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
![请添加图片描述](https://img-blog.csdnimg.cn/f7ba1caffdd9479288659b964ab79080.bmp?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c5rOl5Zyf6LGG,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
图十九
因示波器探头不够,只观察ePWMA和ePWMB同步输出的端口,由示波器结果可看出,两者同步电平变化时间差小于10ns。
参考
① MATLAB help文档 ② DSP C2000数据手册
|