Simulink嵌入式自动代码DSP F28335(3)ePWM模块详解及应用例程
简述
本文以C2000硬件支持包F2837X的ePWM模块为例进行介绍,内容与F2833X模块相差不大,部分设置页面有少许差异。第二段将进行应用实例介绍:①一路带死区输出(20kHz,占空比50%) ②两路同步输出 基本设置和重要地方进行加粗和标黄显示 阅读本文前先对ePWM模块有些了解,建议查看官方数据手册。
图一
1、模块介绍
1.1 General界面
图二
- 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:默认增减计数,也可选择增计数是减计数。
图三
- 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界面
图四
- Enable ePWMA:使能ePWMA
- 输出电平何时变化(计数值等于0,周期值,CMPA,CMPB时变化)下图为默认值
图五
可以理解为调制波与载波相交时电平变化情况。
- 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界面
图六
同ePWMA Inverted version of ePWMA:反转ePWM A信号并将其作为ePWM B输出。
1.4 Counter Compare界面
图七
- ePWMLink CMPA:链接另一ePWM模块的CMPA值。
- CMPA units:确定CMPA单位,时钟周期或是百分比。
- Specify CMPA via:指定脉宽来源:根据输入端口或是对话框填写。(如果选择输入端口需填写初始值)
- Reload for compare A Register (SHDWAMODE):比较寄存器周期何时重载
CMPB、CMPC、CMPD设置同理
1.5 Deadband unit界面
图八
- Use deadband for ePWM1A:使用ePWM1A死区设置。
- Use deadband for ePWM1B:使用ePWM1B死区设置。
- Enable half-cycle clocking:启用半周期时钟,使死区分辨率加倍。
- Deadband polarity:确定死区极性,如下图
图九
- 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%)
模型搭建如图十
图十
图十一
如图11所示,计时器单元选择以时钟周期为单位,计数模式增减计数,当计时器周期设位5000时 F28379D(200MHz,5ns) 输出脉冲周期为5ns * 5000 * 2 = 50us,也就是20kHz
图十二
ePWMA 当计时器数值向上增加等于CMPA时,输出低电平 当计时器数值向下减小等于CMPA时,输出高电平
图十三
ePWMB 当计时器数值向上增加等于CMPA时,输出高电平 当计时器数值向下减小等于CMPA时,输出低电平
图十四
只用到了CMPA,并通过输入接口确定,设置为2500使占空比为50%
图十五
确定死区设置极性AHC,死区时间单边5ns*500=2.5us
实验结果
图十六
示波器结果与设置一致
note: 如果选择死区设置,即使不勾选使能ePWM,也能输出。
2.2 两路同步输出
模型搭建如图十七所示。
图十七
图十八
配置与2.1一致,注意打开同步输出。
实验结果
图十九
因示波器探头不够,只观察ePWMA和ePWMB同步输出的端口,由示波器结果可看出,两者同步电平变化时间差小于10ns。
参考
① MATLAB help文档 ② DSP C2000数据手册
|