我是靠谱客的博主 谨慎跳跳糖,最近开发中收集的这篇文章主要介绍28335的EPWM模块学习一、首先从时基模块开始TB 二、比较模块CB 三、动作模块AQ 四、死区模块DB 五、斩控控制模块PC 六、故障保护TZ模块 七、事件触发模块ET 八、高精度PWM配置寄存器HRCNFG 九、计数比较A高精度寄存器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

 

一、首先从时基模块开始TB

二、比较模块CB

三、动作模块AQ

四、死区模块DB

五、斩控控制模块PC

六、故障保护TZ模块

七、事件触发模块ET

八、高精度PWM配置寄存器HRCNFG九、计数比较A高精度寄存器


一、首先从时基模块开始TB


1、TBPRD:设置TB模块计数器的计数周期     EPwm1Regs.TBPRD = 0XFFFF;
2、TBPHS:设置TB模块计数器的相位            EPwm1Regs.TBPHS.half.TBPHS = 100;  (half含义,待补)
3、TBCTR:读取TB模块计数器的当前值        a= EPwm1Regs.TBCTR
4、TBCLT
   4.1  FREE和SOFT:决定epwm在仿真时挂起的工作    EPwm1Regs.TBCTL.bit.FREE_SOFT=0
   4.2  PHSDIR:决定同步后增减计数器的计数方向,仅用于增减计数模式  EPwm5Regs.TBCTL.bit.PHSDIR=TB_DOWN;
   4.3  CLKDIV和HSPCLKDIV:TB模块时钟分频位  TBCLK=系统时钟/(HSPCLKDIV*CLKDIV) EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV4   EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV4
   4.4  SWFSYNC:写1将强制产生一次同步脉冲信号    EPwm1Regs.TBCTL.bit.FREE_SOFT=1
   4.5  SYNCOSEL:选择epwm之间同步信号来源         EPwm1Regs.TBCTL.bit.SYNCOSEL=TB_CTR_ZERO
   4.6  PRDLD:决定TBPRD映射单元何时向当前单元装载数据   EPwm1Regs.TBCTL.bit.SYNCOSEL=TB_IMMEDIATE
   4.7  PHSEN:相位使能位(只有在有同步的时候才能使能相位) EPwm1Regs.TBCTL.bit.PHSEN=TB_ENABLE
   4.8  CTRMODE:计数模式选择   EPwm1Regs.TBCTL.bit.CTRMODE=TB_COUNT_UPDOWN
5、TBSTS
   5.1  CTRMAX:读,判读TBCTR是否打到过最大值0xFFFF   a=EPwm1Regs.TBSTS.bit.CTRMAX   EPwm1Regs.TBSTS.bit.CTRMAX=1清楚相应的锁存事件
   5.2  SYNCI:读,判断是否发生过同步事件                        a=EPwm1Regs.TBSTS.bit.SYNCI
   5.3  CTRDIR:判断计数器计数模式                                    a=EPwm1Regs.TBSTS.bit.CTRDIR


二、比较模块CB


1、CMPA,CMPB:该寄存器中的值与TBCTR的计数值不断进行比较,如果相等的时候将触发AQ模块的动作  EPwm1Regs.CMPA.half.CMPA = 3000;
2、CMPCTL
   2.1  SHDWAFULL,SHDWBFULL:CMPA或者CMPB映射寄存器满状态标志位  a=EPwm1Regs.CMPCTL.bit.SHDWAFULL
   2.2  SHDWAMODE,SHDWBMODE: CMPA或者CMPB是否选用映射寄存器      EPwm1Regs.CMPCTL.bit.SHDWAMODE=CC_SHADOW
   2.3  LOADAMODE,LOADBMODE:决定CMPA或者CMPB主寄存器何时从映射寄存器中加载数据  EPwm1Regs.CMPCTL.bit.LOADBMODE=CC_CTR_ZERO
3、CMPAHR:存放CMPA的高精度部分  EPwm1Regs.CMPAHR.half.CMPA=1000


三、动作模块AQ


1、AQCTLA
   1.1  CBD:计数值TBCTR递减计数到CMPB时的PWMA动作(翻转、高、低,无动作)   EPwm1Regs.AQCTLA.bit.CBD=AQ_TOGGLE
   1.2  CBU: 计数值TBCTR递增计数到CMPB时的PWMA动作(翻转、高、低,无动作)   EPwm1Regs.AQCTLA.bit.CBU=AQ_TOGGLE
   1.3  CAD:计数值TBCTR递减计数到CMPA时的PWMA动作(翻转、高、低,无动作)   EPwm1Regs.AQCTLA.bit.CAD=AQ_TOGGLE
   1.4  CAU: 计数值TBCTR递增计数到CMPA时的PWMA动作(翻转、高、低,无动作)   EPwm1Regs.AQCTLA.bit.CAU=AQ_TOGGLE
   1.5  PRD: 计数值TBCTR等于TBPRD周期值时的PWMA动作(翻转、高、低,无动作)  EPwm1Regs.AQCTLA.bit.PRD=AQ_TOGGLE
   1.6  ZRO: 计数值TBCTR等于0时的PWMA动作(翻转、高、低,无动作)            EPwm1Regs.AQCTLA.bit.ZRO=AQ_TOGGLE
2、AQCTLB   
   2.1  CBD:计数值TBCTR递减计数到CMPB时的PWMB动作(翻转、高、低,无动作)   EPwm1Regs.AQCTLB.bit.CBD=AQ_TOGGLE
   2.2  CBU: 计数值TBCTR递增计数到CMPB时的PWMB动作(翻转、高、低,无动作)   EPwm1Regs.AQCTLB.bit.CBU=AQ_TOGGLE
   2.3  CAD:计数值TBCTR递减计数到CMPA时的PWMB动作(翻转、高、低,无动作)   EPwm1Regs.AQCTLB.bit.CAD=AQ_TOGGLE
   2.4  CAU: 计数值TBCTR递增计数到CMPA时的PWMB动作(翻转、高、低,无动作)   EPwm1Regs.AQCTLB.bit.CAU=AQ_TOGGLE
   2.5  PRD: 计数值TBCTR等于TBPRD周期值时的PWMB动作(翻转、高、低,无动作)  EPwm1Regs.AQCTLB.bit.PRD=AQ_TOGGLE
   2.6  ZRO: 计数值TBCTR等于0时的PWMB动作(翻转、高、低,无动作)            EPwm1Regs.AQCTLB.bit.ZRO=AQ_TOGGLE
3、AQSFRC(控制产生软件的PWM动作)
   3.1  RLDCSF:决定AQCSFRC何时从映射寄存器中加载数据(CTR=0、CTR=PRD、CTR=0或CTR=PRD、禁止映射寄存器)  EPwm1Regs.AQSFRC.bit.RLDCSF=0x00
   3.2  OTSFB:对PWMB进行一次软件强制事件   EPwm1Regs.AQSFRC.bit.OTSFB=1(写1后自动清零)
   3.3  ACTSFB:定义PWMB发生一次软件强制事件后,PWMB的变化   EPwm1Regs.AQSFRC.bit.ACTSFB=AQ_TOGGLE
   3.4  OTSFA:对PWMA进行一次软件强制事件   EPwm1Regs.AQSFRC.bit.OTSFA=1(写1后自动清零)
   3.5  ACTSFA:定义PWMA发生一次软件强制事件后,PWMA的变化   EPwm1Regs.AQSFRC.bit.ACTSFA=AQ_TOGGLE 
4、AQCSFRC(定义连续软件强制触发控制)
   4.1  CSFB:定义PWMB的连续软件强制触发控制(无动作、强制低、强制高、软件强制被关闭)    EPwm1Regs.AQCSFRC.bit.CSFB=01;
   4.2  CSFA:定义PWMA的连续软件强制触发控制(无动作、强制低、强制高、软件强制被关闭)    EPwm1Regs.AQCSFRC.bit.CSFA=01;


四、死区模块DB


1、DBCTL
   1.1  IN_MODE:死区产生子模块输入信号选择,一共两位控制两个开关   EPwm1Regs.DBCTL.bit.IN_MODE=DBA_RED_DBB_FED(A作为上升沿延迟的源,B作为下降沿延迟的源)
   1.2  POLSEL:输出极性选择位,可以选择性的对延迟信号进行翻转,一共两个位控制两个开关 EPwm1Regs.DBCTL.bit.POLSEL=DB_ACTV_LOC(主低互补模式,主低猜测是指上升沿延迟的波形低电平延长所以称为主低)
   1.3  OUT_MODE:死区产生子模块输出信号选择,一共两个位控制两个开关  EPwm1Regs.DBCTL.bit.OUT_MODE=DB_DISABLE
2、DBRED
   2.1  DEL:上升沿延迟时间计数器  EPwm1Regs.DBRED=100
3、DBFED
   3.1  DEL:下降沿延迟时间计数器   EPwm1Regs.DBFED=100


五、斩控控制模块PC


1、PCCTL
   1.1  CHPDUTY:占空比控制位  EPwm1Regs.PCCTL.bit.CHPDUTY=K(斩波占空比为(K+1)/8)
   1.2  CHPFREQ:斩波时钟频率  EPwm1Regs.PCCTL.bit.CHPFREQ=P(斩波时钟频率为=系统时钟/(8*(P+1)))
   1.3  OSHTWTH:单次脉冲宽度控制  EPwm1Regs.PCCTL.bit.OSHTWTH=D(单次脉冲宽度为(D+1)*系统时钟/8)
   1.4  CHPEN:斩波控制使能位  EPwm1Regs.PCCTL.bit.CHPEN=0(禁止使能)


六、故障保护TZ模块


1、TZSEL
   1.1  OSHT6:是否允许TZ6作为epwm单次故障保护触发模块输入   EPwm1Regs.TZSEL.bit.OSHT6=TZ_DISABLE
   1.2  OSHT5:是否允许TZ5作为epwm单次故障保护触发模块输入   EPwm1Regs.TZSEL.bit.OSHT5=TZ_DISABLE
   1.3  OSHT4:是否允许TZ4作为epwm单次故障保护触发模块输入   EPwm1Regs.TZSEL.bit.OSHT4=TZ_DISABLE
   1.4  OSHT3:是否允许TZ3作为epwm单次故障保护触发模块输入   EPwm1Regs.TZSEL.bit.OSHT3=TZ_DISABLE
   1.5  OSHT2:是否允许TZ2作为epwm单次故障保护触发模块输入   EPwm1Regs.TZSEL.bit.OSHT2=TZ_DISABLE
   1.6  OSHT1:是否允许TZ1作为epwm单次故障保护触发模块输入   EPwm1Regs.TZSEL.bit.OSHT1=TZ_DISABLE
   1.7  CBC6:  是否允许TZ6作为epwm周期故障保护触发模块输入   EPwm1Regs.TZSEL.bit.CBC6=TZ_DISABLE
   其他同理,不再列出
2、TZCTL
   2.1  TZB:当外部故障发生时,定义EPWMB所采取的动作  EPwm1Regs.TZCTL.bit.TZB=TZ_FORCE_HI
   2.2  TZA:当外部故障发生时,定义EPWMA所采取的动作  EPwm1Regs.TZCTL.bit.TZA=TZ_FORCE_HI
3、TZEINT
   3.1  OST:单次触发事件中断使能位  EPwm1Regs.TZEINT.bit.OST=0禁止使能
   3.2  CBC:周期触发时间中断使能位   EPwm1Regs.TZEINT.bit.CBC=0禁止使能
4、TZFLG
   4.1  OST:单次触发事件中断标志位 a=EPwm1Regs.TZFLG.bit.OST
   4.2  CBC:周期触发事件中断标志位 a=EPwm1Regs.TZFLG.bit.CBC
   4.3  INT:触发时间中断标志位 a=EPwm1Regs.TZFLG.bit.INT
5、TZCLR
   5.1  OST:清除单次触发事件中断标志位 EPwm1Regs.TZCLR.bit.OST=1
   5.2  CBC:清除周期触发事件中断标志位 EPwm1Regs.TZCLR.bit.CBC=1
   5.3  INT:清除触发事件中断标志位 EPwm1Regs.TZCLR.bit.INT=1
6、TZFRC
   6.1  OST:强制软件触发一次单次触发事件  EPwm1Regs.TZFRC.bit.OST=1
   6.2  CBC:强制软件触发一次周期触发事件  EPwm1Regs.TZFRC.bit.CBC=1


七、事件触发模块ET

1、ETSEL
   1.1  SOCBEN:是否PWMB使能ADC启动脉冲EPwmxSOCB  EPwm1Regs.ETSEL.bit.SOCBEN=0
   1.2  SOCAEN:是否PWMA使能ADC启动脉冲EPwmxSOCA  EPwm1Regs.ETSEL.bit.SOCAEN=0
   1.3  SOCBSEL:选择PWMB在计数状态下产生EPwmxSOCB条件    EPwm1Regs.ETSEL.bit.SOCBSEL=ET_CTR_PRD
   1.4  SOCASEL:选择PWMA在计数状态下产生EPWMxSOCB条件    EPwm1Regs.ETSEL.bit.SOCASEL=ET_CTR_PRD
   1.5  INTEN:中断信号EPWMx_INT是否使能    EPwm1Regs.ETSEL.bit.INTEN=0
   1.6  INTSEL:中断信号EPWMx_INT的产生条件  EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO
2、ETPS
   2.1  SOCBCNT:ADC启动信号EPWMxSOCB的计数器 a=EPwm1Regs.ETPS.bit.SOCBCNT
   2.2  SOCACNT:ADC启动信号EPWMxSOCA的计数器 a=EPwm1Regs.ETPS.bit.SOCACNT
   2.3  SOCBPRD:产生几次EPWMxSOCB后发出ADC启动信号  EPwm1Regs.ETPS.bit.SOCBPRD=ET_1ST
   2.4  SOCAPRD:产生几次EPWMxSOCA后发出ADC启动信号  EPwm1Regs.ETPS.bit.SOCAPRD=ET_1ST
   2.5  INTCNT:EPWM中断EPWMx_INT计数器    a=EPwm1Regs.ETPS.bit.INTCNT
   2.6  INTPRD:产生几次事件后发出中断信号EPWMx_INT  EPwm1Regs.ETPS.bit.INTPRD=ET_1ST
3、ETFLG
   3.1  SOCB:ADC启动信号EPWMxSOCB状态标志位,此位置位之后可继续产生  
   3.2  SOCA:ADC启动信号EPWMxSOCA状态标志位,此位置位之后可继续产生
   3.3  INT:中断信号EPWMx_INT状态标志位,此位置位之后需清零
4、ETCLR
   4.1  SOCB:清除EPWMxSOCB状态标志位  EPwm1Regs.ETCLR.bit.SOCB=1
   4.2  SOCA:清除EPWMxSOCA状态标志位  EPwm1Regs.ETCLR.bit.SOCA=1
   4.3  INT:清除INT状态标志位  EPwm1Regs.ETCLR.bit.INT=1
5、ETFRC
   5.1  SOCB:SOCB软件强制产生    EPwm1Regs.ETFRC.bit.SOCB=1
   5.2  SOCB:SOCA软件强制产生    EPwm1Regs.ETFRC.bit.SOCA=1
   5.2  INT:INT软件强制产生    EPwm1Regs.ETFRC.bit.INT=1


八、高精度PWM配置寄存器HRCNFG
九、计数比较A高精度寄存器

 

具体看——TMS320x2833x, 2823x Enhanced Pulse Width Modulator (ePWM) Module这个器件手册

最后

以上就是谨慎跳跳糖为你收集整理的28335的EPWM模块学习一、首先从时基模块开始TB 二、比较模块CB 三、动作模块AQ 四、死区模块DB 五、斩控控制模块PC 六、故障保护TZ模块 七、事件触发模块ET 八、高精度PWM配置寄存器HRCNFG 九、计数比较A高精度寄存器的全部内容,希望文章能够帮你解决28335的EPWM模块学习一、首先从时基模块开始TB 二、比较模块CB 三、动作模块AQ 四、死区模块DB 五、斩控控制模块PC 六、故障保护TZ模块 七、事件触发模块ET 八、高精度PWM配置寄存器HRCNFG 九、计数比较A高精度寄存器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部