




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TI C2833x介绍-ePWM通常我们用的电压源型逆变器,是通过IGBT、MOSFET等开关管的切换,用单极性或者双极性的脉冲波形来模拟正弦波,如图所示:这里的基本原则是等面积,即冲量不变的原理。在逆变器直流母线电压固定的情况下,脉冲波的幅值已经确定,使用改变占空比的方法,即对应改变输出基波的幅值。最常用的载波PWM的基本原理,一般都是三角形载波和调制波波形,如正弦波、马鞍波等进行比较,在相交点产生开关状态的切换。三角载波的频率一般在kHz基波,相当于时间域里的一个函数,一般用硬件电路来实现才能保证较好的精度和时域特性。在TI C2000及类似的电机控制用的DSP出现之前,通常的DSP并不含有专门的PWM产生电路,此时载波的产生以及和调制波的比较工作一般由模拟电路、专门的PWM芯片或者CPLD/FPGA/ASIC/ASSP来实现;由模拟电路搭建的速度很高,但是存在温度漂移等问题;专用的PWM芯片一般只有2路左右的输出,若要控制一个三相逆变器需要多片配合,CPLD/FPGA相对灵活,但是在对成本敏感的系统中仍是不小的开支,ASIC/ASSP则在大公司的产品中才可能采用。TI的C2000系列带有至少12路的PWM输出,并且PWM是专用的外设,其输出PWM等功能并不需要消耗CPU资源,因此极大地方便系统的设计。从2407、2812到28335,PWM外设也从事件管理器EV演变到增强的PWM模块,即ePWM。EV中的六路PWM采用同一个载波,且实际只有三个独立,三个互补的输出;而在ePWM中,每个PWM管脚都可以独立地进行配置,当然也可以在同步状态下运行,增强设计的灵活性。下面是ePWM的一个简要框图描述:就每个ePWM来说,可以分为以下十个主要的功能模块,其功能示意图如图1所示。图1 ePWM功能示意1.时钟预定标:这个模块在28335大部分外设中都有,其输入是SYSCLKOUT,预定标的作用是对SYSCLKOUT时钟信号进行分频,从而控制外设的时钟频率。其输出是TBCLK时钟信号,即每个ePWM模块的时间基准(time base,即TB),它被ePWM外设的所有子模块使用,控制计数器的更新速率。2. 16位的时间基准计数器(TBCTR):16位的时基计数器,其输入有:时基信号TBCLK;在ePWM之间用来同步的EPWMxSYNCI信号;周期寄存器的值(即周期值)。其输出有两个,一个是EPWMxSYNCO用来输出同步信号;另一个则是计数值与周期值比较的结果,并送入逻辑处理模块。3.比较逻辑处理:处理输入的比较结果,并生成相应的逻辑状态。4.动作限定模块(action qualifier):判断逻辑的转换是否满足要求,并转换为对应的PWM开关状态,通常为EPWMxA和EPWMxB。5.死区模块:对PWM的开关变化加入死区时间,以防止变流器上下桥臂的开关管过流击穿损耗。死区通常有单边死区和双边死区,单边死区即只对开通开关管的脉冲施加死区,双边死区则对所有的脉冲变化加入死区时间,即延时开通,提前关断,这些都可以在死区模块的寄存器中进行配置。6. PWM斩波环节(chopper):这部分是可选的,通常用来产生高频PWM载波信号,在一般的逆变器中不需要用到,在高频的开关数字电源中作用很大。7.事件触发模块(trip zone):主要是用来处理外部返回的故障信号,例如在变频器过流时,保护电路返回的故障信号反馈到TZ模块,此时强制PWM管脚为高阻态,则停止输出,并且可以运行设计的保护程序等。在ePWM模块中,定时/周期操作经常被广泛使用。例如,设定一个定时周期,然后每次计数到周期值时触发一些特定的事件;或者由某个事件触发计数操作,用来捕获某个事件的时间、脉冲个数等。ePWM的周期由时间基准周期寄存器和时间基准计数器的运行方式共同决定。时间基准计数器具有三种运行方式:1.连续增计数: 对应下图中的第一种模式,是一种非对称的波形。在该模式下,时间基准计数器从零开始增加,直到等于TBPRD的值,然后计数器复位到0,重复上述过程。2.连续减计数: 对应下图中的第二种模式,同样也是一种非对称的波形。在该模式下,钟基准计数器从TBPRD始减小,直到等于0,然后计数器复位到TBPRD,重复上述过程。3.连续增减计数: 对应下图中的第三种模式,是一种对称的波形。在连续增减计数模式下,时钟基准计数器从零开始增加,直到等于TBPRD的值,然后开始减计数,直到等于0,然后重复上述过程。这种波形的形状是等腰三角形,在使用载波方法实现PWM波形输出时最常用到。图中,三角形的顶点的纵坐标值一般为周期值,横坐标值则代表一个三角波持续多少个周期时间。时间基准寄存器的值可被立即刷新,或者在本次计数结束之后再刷新,由TBPRD寄存器的值决定:1.如果TBCTLPRDLD=0,使能映射寄存器,任何读写操作将针对映射寄存器,在时间基准计数器归零时,将映射寄存器中内容装载到当前寄存器。2.如果TBCTLPRDLD=1,禁止映射寄存器,任何读写操作将直接作用于当前寄存器。28335上的ePWM引入很多增强的特性,从而使得我们可以更加灵活的进行组合配置,产生更复杂的PWM控制逻辑。例如,引入基于事件基准的相位寄存器TBPHS。在对各个PWM进行单独控制时,TBPHS的值并无作用,但是,如果想把各个ePWM的三角形载波之间建立角度上的联系,则可使用TBPHS寄存器,例如下面的例子:多个ePWM模块之间可以存在一个精确的相位差,在一些特殊的电力电子拓扑结构中特别有用。例如在大功率的应用中,对于移相变压器、多绕组变压器等,其输入有多个整流单元,相位互差特定的角度,此时我们就可以使用TBPHS寄存器来调整它们之间载波的相位差;而且因为是相对于同一个时间基准来计数,其精度也较高。在这种使用情况下,一般将一相ePWM作为主模块,其时钟信号作为同步源,其余几相ePWM作为从模块,其时钟信号使用同步源与TBPHS的和或差;当然,主同步信号也可以使用外部的时钟信号,这是ePWM的灵活之处所在。TBPHS的计算方法为:以周期值TBPRD=600为例,则在TBPHS=200时,相位差为:200/600 x 360 = 120每当计数值=周期值时,主模块产生同步信号,则TBPHS=200就被加载到从模块的计数寄存器TBCTR中,从而使得从模块的计数总是滞后主模块120。使用这种方法,即使是变频的情况,只要知道具体的频率,仍可实现固定角度的相位差(当然最多会有一个TBPRD时间的延时)。ePWM的时基子模块有5种寄存器,分别为寄存器名称 用途 是否包含位控制 TBCTL 时间基准控制寄存器 是:EPwmxRegs.TBCTL.all TBSTS 时基状态寄存器 是:EPwmxRegs.TBSTS.all TBPHS 时基相位控制寄存器 否:EPwmxRegs.TBPHS TBCTR 时基计数寄存器 否:EPwmxRegs.TBCTR TBPRD 时基周期寄存器 否:EPwmxRegs.TBPRD 前两个寄存器包含很多的控制位,所以可对其中的位进行独立的读/写操作,而后三个寄存器中的内容只代表一个数值,所以不存在单独的位读/写操作。想用好ePWM的强大功能,首先要正确配置各个控制寄存器的功能。下面首先描述TBCTL各个位的含义。15-14:FREE_SOFT描述仿真器控制DSP芯片的情况下,仿真暂停时ePWM的运行方式(例如在CCS里面点击一下halt按钮)。00:在下次时间基准计数器增或减后停止01:当计数器完成一个周期后停止:对于増计数,当计数值TBCTR=周期值TBPRD时停止对于减计数,当TBCTR=0x0000时停止对于增减计数,当TBCTR=0x0000时停止10或者11:自由运行,即不受仿真暂停状态的影响,即使是在CCS里面按下暂停,ePWM的相关功能仍然在运行。13:PHSDIR相位方向控制位,用来决定同步后增减计数器的计数方向,在増计数或减计数模式下此位被忽略0:同步事件发生后,减计数1:同步事件发生器,増计数1210:CLKDIV基准时钟分频位,TBCLK=SYSCLKOUT/(CLKDIVHSPCLKDIV) 000111(k):分频系数为 2的k次方97:HSPCLKDIV高速基准时钟分频位,TBCLK=SYSCLKOUT/(CLKDIVHSPCLKDIV) 000:分频系数为1001111(k):分频系数为2k时间基准控制控制TBCTL寄存器的低六位是:其含义分别为:6:SWFSYNC,软件强制同步脉冲0:写0无反应;读,将始终返回0 1:写1将强制产生一次同步脉冲信号 54:SYNCOSEL,同步信号输出选择,用于选择EPWMxSYNCO信号的输出源00:EPWMxSYNC01:CTR=ZERO,时间基准计数器TBCTR=010:CTR=CMPB,时间基准计数器TBCTR=CMPB11:禁止输出EPWMxSYNCO信号3:PRDLD,决定周期寄存器TBPRD映射单元何时向当前单元装载数据0:使能映射寄存器;此时,对周期寄存器TBPRD的读写直接表现为对映射寄存器的读写;然后当CTR=ZERO时,将映射寄存器中的数据装载到当前寄存器1:使用立即模式(immediate mode),禁止使用映射寄存器2:PHSEN,相位使能位0:禁止TBCTR加载相位寄存器TBPHS中的值1:当同步信号EPWMxSYNCI输入或当软件强制同步事件发生时,TBCTR加载相位寄存器TBPHS中的值10:CTRMODE,计数模式选择00:増计数01:减计数10:增减计数11:停止计数器相关操作(默认)在对TBCTL进行操作之后,看一下时基状态寄存器(TBSTS)的内容。比起CPU状态寄存器ST的复杂程度,TBSTS的内容要简单的多,16个状态位中前13个全是保留位:15-3 保留位 2:CTRMAX 1:SYNCI 0:CTRDIR 2:CTRMAX 用于判断TBCTR是否达到过最大值0xFFFF0:读,返回0表明TBCTR从未到达过0xFFFF,写0无反应1:读,返回1表明TBCTR到达过0xFFFF,写1将清除相应锁存事件1:SYNCI 用于判断同步信号的输入锁存状态0:读,返回0表明从未发生过同步事件,写0无反应1:读,返回1表明发生过同步事件,写1将清除相应的锁存事件0:CTRDIR 时间基准计数器方向判断位,在复位后由于计数器默认为禁止状态,所以此位无意义,当通过TBCTLCTRMODE设定好计数器模式后,才有意义0:计数器正在减计数1:计数器正在増计数ePWM时基子模块除了控制寄存器TBCTL和状态寄存器TBSTS包含单独的位控制以外,其余寄存器都不包含位控制,分别是相位寄存器TBPHS、计数寄存器器TBCTR和周期寄存器TBPRD。时基子模块的主要目的是为其它模块服务,例如对于ePWM比较模块,其比较寄存器的值和TBCTR或者TBPRD等进行比较,就可以产生相应的逻辑控制,触发查询或者中断事件。ePWM比较功能子模块主要包含以下的功能:比较功能子模块主要信号及功能描述信号功能描述寄存器比较CTR=CMPA时间基准计数器的值等于比较寄存器A的当前值TBCTR=CMPACTR=CMPB时间基准计数器的值等于比较寄存器B的当前值TBCTR=CMPBCTR=PRD时间基准计数器的值等于周期寄存器的值用于将CMPA及CMPB映射寄存器的值装载到当前寄存器TBCTR=TBPRDCTR=ZERO时间基准计数器的值等于0用于将CMPA及CMPB映射寄存器的值装载到当前寄存器TBCTR=0x0000比较功能子模块主要通过两个寄存器产生两路独立的比较事件:(1) CTR=CMPA:时间基准计数器的值等于比较寄存器A的值(TBCTR=CMPA)(2) CTR=CMPB:时间基准计数器的值等于比较寄存器B的值(TBCTR=CMPB)对于增计数和减计数模式,比较事件在一个计数周期内出现一次。对于增减计数模式,如果比较值在0x0000TBPRD之间,则比较事件在一个周期内出现两次,如果比较值为0x0000或TBPRD,则比较事件在一个周期内出现一次。这些产生的事件都被送到动作限定子模块AQ中,用来产生需要的动作,例如PWM信号的翻转等。每路ePWM的比较功能子模块在控制上相对而言比较容易,包含两个存储比较值的寄存器即EPwmxRegs.CMPA和EPwmxRegs.CMPB,CMPx寄存器中的值始终与时间基准计数器TBCTR中的值做比较,当两者相等时,比较功能子模块将产生一次“TBCTR=CMPB”事件,并输送到功能限定子模块AQ中,从而产生相应动作。另外有一个包含位控制的控制寄存器EPwmxRegs.CMPCTL.all,其各位的定义:1510: 目前用作保留位9: SHDWBFULL,即CMPB映射寄存器满状态标志位0:CMPB映射寄存器未满1:CMPB映射寄存器满,此时CPU的写操作将会覆盖原来的值8: SHDWAFULL CMPA映射寄存器满状态标志位0:CMPA映射寄存器未满1:CMPA映射寄存器满,此时CPU的写操作将会覆盖原来的值7: 目前用作保留位6: SHDWBMODE CMPB寄存器工作模式选择0:使用映射模式,读写操作将直接作用于CMPB映射寄存器1:使用立即模式,读写操作将直接作用于CMPB当前寄存器5: 目前用作保留位4: SHDWAMODE CMPA寄存器工作模式选择0:使用映射模式,读写操作将直接作用于CMPA映射寄存器1:使用立即模式,读写操作将直接作用于CMPA当前寄存器32: LOADBMODE 决定CMPB映射寄存器何时向当前寄存器装载数据00:在TBCTR=0时装载01:在TBCTR=TBPRD时装载10:既在TBCTR=0时装载,也在TBCTR=TBPRD时装载11:禁止装载10: LOADAMODE,决定CMPA映射寄存器何时向当前寄存器装载数据CMPA及CMPB寄存器都有相应的映射单元,分别通过CMPCTLSHDWAMODE位及CMPCTLSHDWBMODE位控制,上面已经提到。通过对相应的控制位清零可以使能比较寄存器的映射单元,默认情况下映射寄存器是使能的。ePWM的比较功能子模块完成相关的比较事件之后,它的输出将由功能限定子模块AQ来处理,它是在产生PWM波形中很重要的环节,用来决定在特定事件发生时刻产生何种动作,从而在EPWMxA及EPWMxB引脚产生需要的PWM脉冲;若设置不正确,将直接导致错误的PWM状态翻转,轻则变频器输出错误状态以至于不能正常工作,重则直接导致过流停机。AQ模块的输入与寄存器归类如下:软件强制功能是一个很有用的异步事件,通过AQSFRC和AQCSFRC两个寄存器控制。AQ子模块用来控制在一个特殊事件触发时刻如何改变EPWMxA及EPWMxB的状态,输入到AQ子模块内部的事件进一步被计数器的计数方向区别,从而允许在上升时刻和下降时刻的单独控制。对EPWMxA和EPWMxB所允许的操作如下表所示:软件强制时间计数器的值等于EPWM的输出动作0CMPACMPB周期值否无动作无动作无动作无动作无动作软件强制低强制低EPWMxA强制低EPWMxB强制低A、B低电平拉低软件强制高强制高EPWMxA强制高EPWMxB强制高A、B高电平置高软件翻转EPWMxA翻转EPWMxB翻转A、B状态翻转翻转注:无动作:保持EPWMxA或EPWMxB的输出状态不变,虽然“无动作”对PWM的输出状态没有影响,当它仍能触发中断及产生ADC启动信号对EPWMxA和EPWMxB的动作设定是完全独立的,任何一个事件都可以对EPWMxA或EPWMxB中的任何一个产生任何动作。例如,CTR=CMPA和CTR=CMPB这两个事件都可以控制EPWMxA产生相应的动作,也都可以用来控制EPWMxB产生相应的动作。ePWM的动作限定子模块AQ可以在同一时间处理多个触发事件(因为有很多计算器、比较器、周期寄存器),与中断管理器PIE类似,这样就需要为这些事件分配优先级。一般情况下,在时间上看,后发生的事件比先发生的事件具有更高的优先级,且软件强制事件(强制高、强制低、强制翻转等)具有最高的优先级。表1 连续增减计数模式下事件的优先级优先级TBCTR正在増计数从TBCTR=0递增到TBCTR=TBPRDTBCTR正在减计数从TBCTR=TBPRD递减到TBCTR=01(最高)软件强制事件软件强制事件2递增计数器的值等于CMPB(CBU)递减计数器的值等于CMPB(CBD)3递增计数器的值等于CMPA(CAU)递增计数器的值等于CMPA(CAD)4计数器等于零计数器的值等于TBPRD5递减计数器的值等于CMPB(CBD)递增计数器的值等于CMPB(CBU)6(最低)递增计数器的值等于CMPA(CAD)递增计数器的值等于CMPA(CAU)表2 增计数模式下的事件优先级 表3 减计数模式下的事件优先级优先级事件1(最高)软件强制事件2计数器的值等于TBPRD3计数器的值等于CMPB(CBU)4计数器的值等于CMPA(CAU)5(最低)计数器等于零优先级事件1(最高)软件强制事件2计数器的值等于零3计数器的值等于CMPB(CBD)4计数器的值等于CMPA(CAD)5(最低)计数器等于TBPRD对EPWMxA和EPWMxB的动作设定是完全独立的,任何一个事件都可以对EPWMxA或EPWMxB中的任一个产生任何动作。例如,CTR=CMPA和CTR=CMPB这两个事件都可以控制EPWMxA产生相应的动作,也都可以用来控制EPWMxB产生相应的动作。为简便起见,采用下图所示的图形来表示AQ模块中EPWMxA/xB的各种动作。ePWM动作限定子模块AQ有4个寄存器,分别是两个控制寄存器AQCTLAB、软件强制寄存器AQSFRC、连续软件强制寄存器AQCSFRC。AQ控制寄存器的A、B的位的含义一样,区别只是在于分别按照EPWMxA、EPWMxB的关系对应,它们的含义为:1512保留目前用作保留位1110CBD当时间基准计数器的值等于CMPB的值,且正在递减计数00:无动作01:使EPWMxAxB为低电平10:使EPWMxAxB为高电平11:翻转EPWMxAxB的当前状态98CBU当时间基准计数器的值等于CMPB的值,且正在递增计数00:无动作01:使EPWMxAxB为低电平10:使EPWMxAxB为高电平11:翻转EPWMxAxB的当前状态76CAD当时间基准计数器的值等于CMPA的值,且正在递减计数00:无动作01:使EPWMxAxB为低电平10:使EPWMxAxB为高电平11:翻转EPWMxAxB的当前状态54CAU当时间基准计数器的值等于CMPA的值,且正在递增计数00:无动作01:使EPWMxAxB为低电平10:使EPWMxAxB为高电平11:翻转EPWMxAxB的当前状态32PRD当时间基准计数器的值等于周期寄存器的值配置与上行相同10ZRO当时间基准计数器的值等于000:无动作01:使EPWMxAxB为低电平10:使EPWMxAxB为高电平11:翻转EPWMxAxB的当前状态ePWM动作限定子模块AQ除了两个控制寄存器之外,还有软件强制寄存器AQSFRC、连续软件强制寄存器AQCSFRC。名字里只有一个“连续”的差别,那它们都是实际功能有什么区别呢?软件强制寄存器AQSFR各位的含义是:158保留保留76RLDCSFAQCSFRC当前寄存器从映射寄存器中加载数据00:在CTR=0时加载01:在CTR=PRD时加载10:即在CTR=0时加载,也在CTR=PRD时加载11:立即模式5OTSFB对输出B的一次性强制事件0:写0无反应,读则始终返回01:发起一次软件强制事件注:当一次写操作完成后,此位将自动清零43ACTSFB定义当输出B的软件强制事件发生时,EPWMxB的状态变化00:无动作01:置位低电平10:置位高电平11:翻转当前状态注:与计数器的方向无关2OTSFA对输出A的一次性强制事件0:写0无反应,读则始终返回01:发起一次软件强制事件注:当一次写操作完成后,此位将自动清零10ACTSFA定义当输出A的软件强制事件发生时,EPWMxA的状态变化00:无动作01:置位低电平10:置位高电平11:翻转当前状态注:与计数器的方向无关而连续软件强制寄存器AQCSFRC各位的含义是:154保留保留32CSFB输出B的连续软件强制触发控制在立即模式下,强制动作发生在下个TBCLK的边沿;在映射模式下,强制动作发生在装载后的下个TBCLK边沿,可用AQSFRCRLDCSF位控制是否使用映射模式00:无动作01:连续强制EPWMxB为低电平10:连续强制EPWMxB为高电平11:软件强制禁止,无动作10CSFA输出A的连续软件强制触发控制在立即模式下,强制动作发生在下个TBCLK的边沿;在映射模式下,强制动作发生在装载后的下个TBCLK边沿,可用AQSFRCRLDCSF位控制是否使用映射模式00:无动作01:连续强制EPWMxA为低电平10:连续强制EPWMxA为高电平11:软件强制禁止,无动作可以看出,AQSFR在特定时间发生时,对PWM管脚的状态变化是一次性的,而AQCSFRC是连续强制的。几年前使用ePWM的时候,一开始没有注意到“连续”这个词,结果怎么也无法根据特定事件来连续保持强制的ePWM管脚状态。PWM波形的正确产生,除了前面的那些模块配置,例如计数模式、输出状态配置等要正确以外,还有个关键的问题就是载波与调制波的关系。PWM这种脉宽调制技术,其输出电压的有效值是靠调节脉冲宽度来实现的,而脉冲宽度的变化又是由调制波和载波相比较之后产生对应的输出脉冲的电平变化。调制波是由控制算法产生的,例如SPWM的调制波就是正弦波,而SVPWM的调制波是马鞍形状波峰波谷的类似正弦波。载波是由ePWM里的硬件电路产生的,由多个高分辨率的计数器来计数,产生递增、递减或者连续增减的“三角波”。加引号是因为,无论ePWM计数的分辨率多高,总是要受制于时钟频率的,因此实际的三角波是由一系列的台阶波形逼近得来的。载波的一个重要参数就是载波周期,关联到PWM上即PWM的开关频率(的倒数)。PWM的开关频率在ePWM实现时,由时基周期寄存器的值和ePWM模块的时钟周期共同决定。所以,在开关频率和时钟周期已知的情况下,需要的ePWM周期寄存器的值为:非对称PWM波形(例如递增、递减)周期寄存器的值=开关周期/时钟周期-1对称PWM波形(例如连续增/减)周期寄存器的值=开关周期/2倍时钟周期可以看到在开关频率相同的情况下,对称PWM波形的周期寄存器的值是非对称PWM波形情况下的一半。这是因为在连续的增、减计数模式下,计数器的值递增计数到周期值后又会递减到0,所以只需要一半值。在一些与电机控制有关的芯片发布会上,厂商在提到与PWM功能相关的特性时,往往有个指标叫“PWM分辨率”。初学者听到之后可能会一头雾水:PWM就是电平的高低切换,怎么会有个分辨率的指标呢?从数字实现的角度来看,这个就不难理解了。上次提到PWM调制中的载波是由ePWM里的硬件电路产生的,但它不是纯粹的模拟电路(模拟、连续信号),而是由多个高分辨率的计数器来计数产生“三角波”的。PWM的分辨率,与A/D采样电路的分辨率是类似的概念,即一个信号是由多少位数字信号来逼近的。28335的ePWM的分辨率是10位的,这就意味着从0计数到计满16位的ePWM周期寄存器(65535),其分辨率是:非对称PWM波形:10位的分辨率意味着一个信号由210=1024位来逼近65536个数,即计数器的最小分辨率是65536/1024=64个数。对称PWM波形:分辨率只有非对称波形的一半,即9位,意味着由29=1512位来逼近65536个数,即计数器的最小分辨率是65536/512=128个数。在理解PWM的基本方法,确定PWM的载波频率(周期值)之后,就可以根据需要的占空比来计算出ePWM比较寄存器中的值。在每个周期中,只有当三角波与比较器中的值匹配之后,才会产生相应的比较事件。非对称PWM和对称PWM波形的比较值的计算方法相同,都是:ePWM比较寄存器器的值=(100%-占空比)*周期寄存器的值举几个例子来说明ePWM调制中周期寄存器和比较寄存器值的计算。1. 以对称载波的PWM波形为例。假设载波周期(PWM开关周期)为150kHz,占空比为25%,ePWM的时基频率为150MHz为例,并设定动作限定子模块中PWM的开关动作为软件强制高,则有:周期寄存器的值TBPRD=ePWM时基频率fTBCLK /(2 * PWM载波频率fPWM)=150MHz /(2 *150kHz)= 500比较寄存器的值CMPA =(100% - 占空比)* TBPRD=(100% - 25%)* 500 =375如果需要很低的载波频率,例如1kHz的话,怎么办?若此时ePWM的时基频率仍为150MHz,则有TBPRD = 150MHz /(2 *1kHz)=75000但是TBPRD是个16位的寄存器,用16位无符号的整数表示时最大只能表示到65535。这时就需要对ePWM时基频率进行处理,比如2分频,则表示1kHz只需要用到37500。2. 以非对称载波的PWM波形为例。此时仍假设载波周期为150kHz,占空比为25%,ePWM的时基频率为150MHz,设定动作限定子模块中PWM的开关动作为软件强制高,则有:TBPRD= fTBCLK / fPWM 1 =150MHz / 150kHz 1 = 999CMPA =(100% - 占空比)*(TBPRD + 1)- 1=(100% - 25%)* 5(999+1)- 1 =749因为是从0开始计数,所以非对称载波的PWM在计算时实际计算出的值总要减去1才能得到正确的周期寄存器和比较寄存器的值,这里一定要注意。对比也可以看出,非对称载波的PWM需要的周期值和比较值是同等载波频率、时基频率和占空比情况下对称载波的接近2倍(2倍 - 1)。这样如果非对称载波PWM想同样输出一个1kHz甚至更低载波频率的情况下,就需要对ePWM的时钟频率进行更高次的分频才能正确赋值给周期寄存器。在PWM波形的产生中,需要人为对脉冲加入死区时间。因为开关器件例如IGBT的开通和关断都不可能是立即完成的,而是因为寄生电容等原因,从关闭状态到开通状态需要一定的时间,从开通状态到关闭状态需要更长的时间(目前的技术是1微秒以上),即IGBT的拖尾效应。而逆变器的控制中,上下桥臂的开关器件一般是互补状态,在开关状态切换的时候,就存在一个管子还没有完全关闭,而另一个又在开通的过程中的情况,这样就造成直流母线的电压直接短路,在微秒级别的时间内就可以击穿开关器件,造成永久损坏。(当然,IGBT在短时间内(20微秒)可以承受几倍的过流,但这一般是在极端情况下测试时用的,且直流母线短路的话电流就不只是几倍的过流。)死区的插入方式一般有2种:一是单边死区,即在死区时间内,本来应该开通的开关管暂时不开通,等待需要关闭的开关管关闭的安全时间之后再开通,即被关闭的开关管状态不受影响,被开通的开关管将延时开通。另一种是双边死区,即被关闭的开关管提前关断,被开通的开关管延时开通,这样显然更保险,当然死区越多,造成的实际输出波形与理想值的偏差越多,输出电流的畸变也会越大。在这种死区插入模式下,可以让开通和关断的死区时间一样,即对称的波形,也可以根据器件的特性,让提前关断的死区时间小于延时开通的死区时间,因为拖尾效应的影响,关断比开通要慢的多。将死区时间插入到输出的脉冲中,在硬件实现上对计数器的精度和时钟频率上的要求都比较高。幸好在ePWM模块中,我们只需要写入死区寄存器的值和开关方式就可以,如图所示。上面提到在PWM变换器中需要插入死区时间,是因为器件关闭时存在拖尾效应,关闭的时间往往大于开通的时间,而PWM变换器又一般采用上下桥臂互补的状态,所以要用死区来避免直通造成的短路。插入死区的方法一般有两种,第一种是控制开关器件驱动电路中的门极电阻(或者改变门极电容等),如图所示。门极电阻和门极上的寄生电容相当于组成一个低通滤波电路,这样的话改变电阻就可以改变开通电路的时间常数,从而增加开关器件开通所用的时间,使得开通的时间大于关断时间,造成同样的死区效果。这种方法在设计门极驱动电路的时候就可以计算好,合适的话可以直接改变门极电阻。但是缺点也不少,一方面是要增加额外的旁路二极管,造成门极寄生电容和电感参数的改变;一方面是电阻的精度不高,且存在参数偏移等,另外电阻的值未必那么合适(如果选择固定规格电阻的话,无法做到可以选取任意值);另一方面是死区时间无法灵活改变。在早期PWM专用的驱动控制芯片较少的时候,这种方法还是有一定的应用场合的,而且那时候的开关频率因器件的限制也无法做很高,对门极驱动电路的计算参数不是特别敏感。另一种方法则方便的多,就是直接改变脉冲的宽度,比如开通延时,关断正常的方法,就是直接对开通脉冲的上升沿(PWM正逻辑的情况下)进行延时,用触发器和计数器相配合很容易实现。ePWM死区电路的原理框图如图所示。上面提到的死区插入方法有两种;一种是插入电阻和旁路二极管,方法比较简单,但是参数无法灵活调整,另外因为电路参数漂移而造成参数的不精确。另一种则是直接对PWM脉冲进行处理,例如把开通的脉冲缩短需要的死区时间,这个时间经常叫做死区、死时或者“dead-band”等。2833x的ePWM模块的死区时间是在软件中可配置的,其硬件处理则是使用芯片的内部电路,因此死区时间的处理不需要占用CPU资源。ePWM中与死区时间相关的寄存器有两个:10位的上升沿延时寄存器:EPwmxRegs.DBRED10位的下降沿延时寄存器:EPwmxRegs.DBFED实际的死区时间为:上升沿延时=TBCLK x DBRED下降沿延时=TBCLK x DBFED简化起见,给出常用的死区时间与寄存器的配置:典型延时时间配置,SYSCLKOUT=150MHz寄存器 死区时间(s) DBFED、DBRED TBCLK=SYSCLKOUT TBCLK=SYSCLKOUT/2 TBCLK=SYSCLKOUT/4 1 0.01 0.02 0.04 5 0.05 0.10 0.20 10 0.10 0.20 0.40 100 1.00 2.00 4.00 200 2.00 4.00 8.00 300 3.00 6.00 12.00 400 4.00 8.00 16.00 500 5.00 10.00 20.00 600 6.00 12.00 24.00 700 7.00 14.00 28.00 800 8.00 16.00 32.00 900 9.00 18.00 36.00 1000 10.00 20.00 40.00 因为我们选取的死区时间一般要比开关器件的手册中开通、关断所需的典型时间略长一些,所以一般而言选取表中的值更为方便。可以看出,上表中可以产生的最大的死区为40us。但是在一些大功率的开关器件中,例如GTO、IGCT这样的器件,其开关速度很慢(一般1kHz以内),相应的需要的死区时间也较大:几十到上百微秒。为产生这样的死区,一方面DBRED、DBFED的值要最大,另一方面就要降低TBCLK的值,即增大其分频系数。幸运的是,因为开关频率低的时候,周期寄存器的值也很大,这样就不会造成死区时间甚至比整个开关周期寄存器的值还大的异常情况。ePWM的死区模块,除了两个寄存器用于存储上升沿延时和下降沿延时之外,就只有一个控制寄存器了;或者说,2833x的寄存器都有这样的显著特点,控制量、标志位等一般保存在控制寄存器中,并且各个位都可以单独读写的,在目前多半都是16位的(GPIO的大部分控制寄存器是32位的,XINTF、eCAN的一部分寄存器也是32位的,而SCI的只有8位,因为232通信的数据本身就是8bit的);而数据和结果和控制量分开,保存在数据寄存器、结果寄存器等中,一般不支持在编程时直接对特定的某个位读取、赋值等(除了符号位外一般没有意义)。ePWM的死区模块并不需要读取什么反馈量,所以在设置了死区时间的值和死区输出模式之后就可以工作了。EPwmxRegs.DBCTL各个位的含义为:15-6:保留位。前面的10个位目前都没有用到,读写没有意义。5-4:输入模式的配置,这个控制位用来选择输入信号,并对特定的边沿进行延时控制。这个说起来有一点绕口:00:ePWMxA作为上升沿和下降沿延时的信号源,此为默认模式01:ePWMxA作为下降沿延时的信号源,EPWMxB作为上升沿延时的信号源10:ePWMxA作为上升沿延时的信号源,EPWMxB作为下降沿延时的信号源11:ePWMxB作为上升沿和下降沿延时的信号源3-2:极性选择,用来决定在信号输出前是否对上升沿延时信号和/或下降沿延时信号进行取反控制。这个地方是要特别小心的,因为驱动电路设计的原因,有的是高有效驱动(驱动电路输入高电平时门极电压为高),有的是低有效驱动(驱动电路输入低电平时门极电压为高),其中低有效的驱动方法比高有效的应用更广泛,主要是为了防止高压信号串入门极驱动电路导致误触发,所以这个补偿一定要和PWM管脚的高低有效配置结合起来。1-0: 输出模式的配置:00 = 禁止模式,即死区模块被旁路掉(和把死区寄存器的值设为0一样的效果)01 = ePWMxA 管脚上的脉冲无变化(不延时),ePWMxB管脚上的脉冲在其下降沿被延时(死区时间)10 = ePWMxA 管脚上的脉冲在其上升沿被延时,ePWMxB 管脚上的脉冲无变化(不延时)11 = ePWMxA和ePWMxB管脚上的脉冲在其上升沿和下降沿都被延时(即全功能的死区模式)虽然死区子模块支持各种死区配置方案,但根据实际的需求,有些可能并不常用,所以在下面的表中总结出了一些典型的死区配置方案,这些方案默认使用DBCTLIN_MODE位选择ePWMxA作为上升沿及下降沿的输入源。其它死区模式可通过改变输入信号源(例如ePWMxB)来实现。把死区产生子模块的原理框图附在这里,对照下面的表格会加容易理解。典型死区配置方案 模式模式描述DBCTLPOLSELS3 S2DBCTLOUT_MODES3 S21ePWMxA、ePWMxB的脉冲直接通过(无延时)x x0 02高电平有效,互补输出(AHC)1 01 13低电平有效,互补输出(ALC)0 11 14高电平有效(AH)0 01 15低电平有效(AL)1 11 16ePWMxA 输出=ePWMxA输入(无延时)ePWMxB输出=带有下降沿延时的ePWMxB输入0或1 0或10 17ePWMxA 输出=带有上升沿延时的ePWMxA输入ePWMxB输出=ePWMxB输入(无延时)0或1 0或11 0ePWM的斩波模块作用与动作限定子模块AQ和死区子模块DB之后,如下图所示:它有一个主要的应用对象,就是开关电源方面,例如需要以上MHz的调制波来驱动全数字开关电源电路里面的高频变压器,它的思想与F2808那些专门做电源驱动的DSP或者叫DSC思想是一样的。当然ePWM的各个模块都是可以调过的,如果是做一般的电机控制也可以不实用这个模块。它调制的原理其实和PWM是一致的,将一段电平用更高频率的载波,配合计算好的占空比,将源信号调制成高频开关信号,其原理如下图所示。斩波模块的寄存器比较简单,就一个控制寄存器,用来设置时钟频率和占空比等;因为即使是控制一个开关电源的话,其PI调节等运算也可以在定时中断里面完成,只需要把高频调制放在ePWM斩波模块的硬件电路里完成,不占用额外的CPU资源。其控制寄存器各个位的含义为:1511 保留位,目前没用到。108 DUTY 占比控制位,占空比=0.125CHPDUTY,典型值:000 = 1/8 (12.5%) 001 = 2/8 (25.0%) 010 = 3/8 (37.5%) 011 = 4/8 (50.0%) 100 = 5/8 (62.5%) 101 = 6/8 (75.0%) 110 = 7/8 (87.5%) 111 保留75 PFREQ 波时钟频率 000111:频率=系统时钟频率/8(CHPFREQ+1),典型值:000 = SYSCLKOUT/8 1 001 = SYSCLKOUT/8 2 010 = SYSCLKOUT/8 3 011 = SYSCLKOUT/8 4 100 = SYSCLKOUT/8 5 101 = SYSCLKOUT/8 6 110 = SYSCLKOUT/8 7 111 = SYSCLKOUT/8 8 41 HTWTH 脉宽宽度控制 00001111:宽度=(OSHTWTI+1)系统时钟周期8,典型值:0000 = 1 x SYSCLKOUT/8 1000 = 9 x SYSCLKOUT/8 0001 = 2 x SYSCLKOUT/8 1001 = 10 x SYSCLKOUT/8 0010 = 3 x SYSCLKOUT/8 1010 = 11 x SYSCLKOUT/8 0011 = 4 x SYSCLKOUT/8 1011 = 12 x SYSCLKOUT/8 0100 = 5 x SYSCLKOUT/8 1100 = 13 x SYSCLKOUT/8 0101 = 6 x SYSCLKOUT/8 1101 = 14 x SYSCLKOUT/8 0110 = 7 x SYSCLKOUT/8 1110 = 15 x SYSCLKOUT/8 0111 = 8 x SYSCLKOUT/8 1111 = 16 x SYSCLKOUT/8 0 PEN 控制使能位0:禁止PWM斩波控制 1:使能PWM斩波控制 为产生PWM脉冲,ePWM中在经过计数单元、比较单元、动作限定单元、死区单元、斩波单元之后,还有一个总把门的,就是故障保护单元。在2812器件的时候,一个事件管理器EV有一个故障保护输入引脚,用来接收外部发来的故障信号,并自动进入高优先级别的故障保护中断子程序。在2833x器件中,因为各个ePWM都可以独立控制,所以每个ePWM都可以单独进行故障保护功能,则ePWM1-6就对应六个TZ1-TZ6外部故障信号输入引脚。在281x系列的时候,因为故障保护输入引脚少,所以如果有多路外部故障信号输入,例如IGBT驱动电路的驱动欠压/过流/短路信号(如果用集成驱动芯片例如HCPL-316J这样的还好,要是自己设计的驱动电路就更复杂,会有很多的故障返回信号),直流母线过压信号、电机过流/过热信号等,需要把这些信号先用外部的驱动芯片,例如或门、与非门甚至CPLD、FPGA等进行逻辑运算,然后送到故障保护引脚上。在2833x上,当然也可以用上面的方法;如果不是故障信号特别多,也可以分别接到对应的TZ管脚上面。TZ保护电路是独立于CPU的片上外设电路,并且与时钟频率无关(因为是组合逻辑电路,不需要时钟驱动),这样可以在接收到故障信号时,快速地触发保护动作。这里的“保护动作”主要是指封锁ePWM管脚上输出的脉冲为高阻状态。在TZ事件产生时,如果使能相对应的高优先级别的中断,还可以进入相应的中断保护程序。不过需要注意的是,中断的延时在极端情况下可能没有办法保留足够的时间裕量来保护硬件,所以触发高阻的设置一定要有。以一个常见的有源前端AFE+逆变器(即带能量),各为三相六桥臂的结构为例,一共有12路PWM脉冲信号(绝大多数情况下使用的是6组互补PWM信号)可采用下面的故障保护结构:上面的结构,既可以保护整流器部分的6个可控器件,也可以保护逆变部分的6个器件,具体的保护包括三种异常情况:a) 过压:多种情况导致的过压,例如能量回馈过快,一些反射波等。b) 过流:多种情况导致的过流,例如负载转矩太大造成的过载等。c) 过度的温升:多种情况导致温升过大,例如散热不好,负载太大或者长时间保持在重载状态等。在上图的例子中,如果故障保护中断TZINT没有在PIE中被屏蔽的话,故障事件产生时,除了PWM管脚被置为高阻状态外,还将触发TZ中断。在TZ中断中,可以自己加入一些任务,例如显示故障信息,清除故障状态,重新使能控制等。故障保护单元TZ包含的寄存器较多,仍然同大部分外设的寄存器一样(也有一小部分32位和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基层拆除施工方案(3篇)
- 福田深水井施工方案(3篇)
- 咸宁庭院假山施工方案(3篇)
- 施工方案优化钢筋(3篇)
- 二装施工方案(3篇)
- 北京市昌平区2024-2025学年八年级下学期第二次月考历史题目及答案
- 新春趣味猜谜题目及答案
- 写意头像测试题目及答案
- 小羊和狼数学题目及答案
- 蓝色画风初中新生入学指南
- 一元二次不等式及解法
- 桩基工程验收监理质量评估报告
- 钢管中频感应加热过程的有限元分析
- 2022年脓毒血症指南解读(更新)
- 办理宽带委托书
- 第五代移动通信设备安装工程造价编制指导意见(5G补充定额)
- PCB设计检查表-PCB-checklist完整版
- 配电网中性点运行方式
- 抗菌药物临床应用指导原则2015年版
- 大金空调使用手册
- 五星班组建设评价标准(班组)
评论
0/150
提交评论