概述
Simulink嵌入式自动代码DSP F28335(3)ePWM模块详解及应用例程
- 简述
- 1、模块介绍
- 1.1 General界面
- 1.2 ePWMA界面
- 1.3 ePWMB界面
- 1.4 Counter Compare界面
- 1.5 Deadband unit界面
- 2、应用实例
- 2.1 一路带死区互补输出(20kHz,占空比50%)
- 2.2 两路同步输出
- 参考
简述
本文以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:默认增减计数,也可选择增计数是减计数。
- 如果选择增减计数:
EPWMCLK =200MHz,所以TBCLK=5ns,如果想得到10kHz计时周期(载波频率),5[Timer period]数值为10000。
计算方法:计时器周期 = 5ns * 10000 * 2 = 100us - 如果选择增计数或是减计数:
且Timer period数值为10000,则计时器周期为20kHz
计算方法:计时器周期 = 5ns * 10000 = 50us
- Synchronization action:确定相对于时基同步信号EPWMxSYNCI的相位偏置。(还不太明白其作用)
- ePWM模块希望相位值在0到360度的范围内,以时钟周期为尺度,作为相位值的输入。因此,对于负值需要加上360度,使其达到0到360度的相位范围。例如,对于-90度的值,需要(360-90)=270度,并以时钟周期作为输入。
对于任何大于360度的值,需要考虑用逻辑将该值规划到0到360度的范围内。例如,120 + (360 - 90) = 390应被包装成(390 - 360) = 30度,然后用时钟周期进行缩放,并将其作为输入提供给ePWM。
- 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数据手册
最后
以上就是完美宝贝为你收集整理的Simulink嵌入式自动代码DSP F28335(3)——ePWM模块详解及应用例程简述1、模块介绍2、应用实例参考的全部内容,希望文章能够帮你解决Simulink嵌入式自动代码DSP F28335(3)——ePWM模块详解及应用例程简述1、模块介绍2、应用实例参考所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复