TI_EPWM原理及应用(附代码)
epwm模块表示一个完整的PWM通道,由两个PWM输出组成:EPWMxA和EPWMxB。一些模块允许更精确的控制PWM输出的硬件扩展,该扩展为高分辨率脉冲宽度调制器(HRPWM)。各个ePWM模块通过时钟同步方案链接在一起,允许它们在需要时作为一个系统运行,此外,该同步方案可以扩展到捕获外围子模块(eCAP)。每个ePWM模块由一个从1开始的数值表示,例如,ePWM1是系统中第一个实例,ePWM3
1.什么是EPWM?
EPWM:增强型脉冲宽度调制器,是一种常用于数字信号处理和电力电子领域的技术。
工作原理:
EPWM通过定时器和比较器等模块来产生脉宽调制信号。
特点:
高精度控制:能够提供高精度的脉宽调制信号。可精确控制外部设备的运行参数。
灵活性强:具有多种工作模式和配置选项,可以根据不同的应用需求进行灵活设置。
多通道输出:
PinMux 初始化函数
/*gpio/
GPIO_setPinConfig(myEPWM1_EPWMA_PIN_CONFIG);
GPIO_setPadConfig(myEPWM1_EPWMA_GPIO, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(myEPWM1_EPWMA_GPIO, GPIO_QUAL_SYNC);
GPIO_setPinConfig(myEPWM1_EPWMB_PIN_CONFIG);
GPIO_setPadConfig(myEPWM1_EPWMB_GPIO, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(myEPWM1_EPWMB_GPIO, GPIO_QUAL_SYNC);
EPWM子模块概述
epwm模块表示一个完整的PWM通道,由两个PWM输出组成:EPWMxA和EPWMxB。DSP内一般有多个EPWM模块。大多数epwm模块都是相同的,只有个别模块是例外。一些模块允许更精确的控制PWM输出的硬件扩展,该扩展为高分辨率脉冲宽度调制器(HRPWM)。
每个ePWM模块由一个从1开始的数值表示,例如,ePWM1是系统中第一个实例,ePWM3是第三个实例,ePWMx表示任何实例。
各个ePWM模块通过时钟同步方案链接在一起,允许它们在需要时作为一个系统运行,此外,该同步方案可以扩展到捕获外围子模块(eCAP)。子模块数量取决于设备,并取决于目标应用程序的需要,子模块也可以独立运行,每个ePWM模块都支持以下功能:
·带周期和频率控制的专用16位时基计数器
·两个PWM输出(EPWMxA和EPWMxB),可用于以下配置:
-两个独立的PWM输出,单边操作
-两个独立的PWM输出,具有双边缘对称操作
-一个独立的PWM输出,具有双边缘不对称操作
·通过软件对PWM信号进行异步优先控制
·可编程的相位控制,支持相对于其他ePWM模块的滞后或超前操作
·以周期为基础的硬件锁定(同步)相位关系。
·死区产生,具有独立的上升沿和下降沿延迟控制
·可编程错误联防分配,用于故障条件下逐周期错误联防和一次性错误连防。
·错误联防条件可强制PWM输出高,低或高阻抗状态逻辑电平。
·所有事件均可触发CPU中断和ADC转换启动(SOC)
·可编程事件预分级可最大限度减少中断时的CPU开销。
·通过高频载波信号进行PWM斩波,用于脉冲变压器栅极驱动
每个ePWM模块连接到图ePWM模块所示的输入、输出信号。信号将在后续章节中详细描述。
每个ePWM的连接顺序可能与图模块所示不同。有关特定设备的同步方案,参考后续章节。每个ePWM模块由八个子模块组成,通过如图所示的信号在系统内连接


图显示了单个ePWM模块的更多内部细节。ePWM模块使用的主要信号有:
·PWM输出信号(AEPWMxA和EPWMxB)
PWM输出信号通过设备的“系统控制与中断”一章中所述的GPIO外围设备在设备外部可用
·错误联防信号(TZ1至TZ6)
这些输入信号向ePWM模块发出ePWM模块外部故障条件警报。设备上的每个子模块可配置为使用或忽略任何错误联防信号。TZ1至TZ3错误联防信号可通过GPIO外围设备使用输入XBAR逻辑配置为异步输入。TZ4连接到反向EQEPx错误信号(EQEPxERR),该信号可以从任何一个EQEP子模块(对于带有EQEP模块的设备)生成。TZ5连接到系统时钟故障逻辑,TZ6连接到CPU的EMUSTOP输出,这允许在时钟故障或者CPU停止时配置错误联防动作。
·时基同步输入(EPWMxSYNCI),输出(EPWMxSYNCO)和外围(EPWMxSYNCPER)信号,同步信号通过菊花链将ePWM模块连接在一起,每个模块都可以通过INPUTXBAR6配置为使用或忽略其同步输入。时钟同步输入和输出信号仅用于ePWM1(ePWM模块#1)的引脚。ePWM模块分为三组,用于同步。外部同步输入信号(EXTSYNCIN1或EXTSYNCIN2)可用于向每条链中的第一个ePWM模块发出同步信号,这些模块还可以向GPIO发送其EPWMxSYNCOUT信号
每个ePWM模块还生成另一个PWMSYNC信号,称为EPWMxSYNCPER.
EPWMxSYNCPER转到GPDAC和CMPSS进行同步,它使用HRPCTL寄存器进行配置,但与HRPWM无关,有关GPDAC和CMPSS如何使用EPWMxSYNCPER的更多信息,请参阅各自章节。
·ADC启动转换信号(AEPWMxSOCA和EPWMxSOCB)
每个ePWM模块有两个ADC启动转换信号。任何ePWM模块都可以触发转换开始。在ePWM的事件触发子模块中配置触发转换开始的事件。
·比较输出信号(COMPxOUT)
来自比较器模块的输出信号可通过输入X-BAR馈送至一个或全部12个错误联防输入[TRIPIN1-TRIPIN12],并与错误联防信号一起生成数字比较事件。
·外围总线
外围总线为32位宽,允许16位和32位写入ePWM寄存器文件。
A.这些事件由ePWM数字比较(DC)子模块根据TRIPIN输入的电平生成
ePWM模块和关键内部信号互联
配置设备引脚
要将设备输入引脚连接到模块,必须使用输入X-BAR。可能需要外部信号的一些示例包括TXx、TRIPx和EXTSYNCIN。设备上的任何GPIO都可以配置为输入,应通过将适当的GPxQSEL寄存器设置为11b,将GPIO输入限定设置为异步模式。可以在GPyPUD寄存器中配置内部上下拉。由于使用GPIO模式,GPYNV寄存器可以反转信号。此外,一些TRIPx(TRIP4-12,不包括TRIP6)信号必须通过ePWMx-Bar和输入X-Bar进行路由。
必须为此外设配置GPIOmux寄存器。为避免管脚出现故障,必须首先配置GPyGMUX位(同时将相应的GPyMUX位保持为默认值零),然后将GPyMUX寄存器写入所需值。
有关GPIOmux、GPIO设置和XBAR配置的更多详细信息,请参阅GPIO一章
ePWM模块概述
每个ePWM外围设备包括八个子模块。这些子模块的每一个子模块都执行可由软件配置的特定任务。
表中的子模块配置参数列出了八个关键子模块及其主要配置参数列表。例如,如果需要调整或控制PWM波形的占空比,则应参阅计数器比较子模块了解相关详细信息


时基(TB)子模块
每个ePWM模块都有自己的时基子模块,用于确定ePWM模块的所有事件计时,内置同步逻辑允许多个ePWM模块的时基作为一个系统一起工作。图1-4说明了时基模块在ePWM中的位置

时基子模块
时基子模块的用途
你可以通过配置时基子模块来实现以下各项功能:
·指定ePWM时基计数器(TBCTR)频率或周期 ,以控制事件发生的频率。
·管理与其他ePWM模块的时基同步。
与其他ePWM模块保持相位关系。
将时基计数器设置为向上计数,向下计数或向上和向下计数模式。
生成以下时间
-CTR=PRD:等于指定周期的时基计数器(TBCTR=TBPRD)
CTR=0:时基计数器等于零(TBCTR=0X00).
配置时基时钟的速率:ePWM时钟(EPWMCLK)的预分频器,这将允许时基计数器以较慢的速率递增/递减。
注意:
如果应用程序代码要在TBCLR计数时通过软件更新TBCTR值必须注意,时基模块需要至少1个TBCLK周期后才能更新。因此,TBCTR应使用TBCTR=PRD-1而不是TBCTR=PRD(如果计数器正在向上计数时)写入,并且应使用TBCTR=1而不是TBCTR=0(如果计数器正在向下计数)写入,以便实现更新想要写入的值。
控制和监控时基子模块
图1-5中的方框图显示了时基子模块的关键信号和寄存器,表1-2关键时基信号提供了与时基子模块相关的关键信号的说明

A:这些信号由数字比较(DC)子模块生成
时基子模块信号和寄存器
关键时基信号

计算PWM周期和频率
PWM事件的频率由时基周期(TBPRD)寄存器和时基计数器的模式控制,图1-6显示了当周期设置为4(TBPRD=4)时,向上计数、向下技术和向上向下计数时基计数器模式的周期(Tpwm)和频率(Fpwm)的关系,每一步的时间增量由时基时钟(TBCLK)定义
时基计数器有三种操作模式,由时基控制寄存器(TBCTL)选择;
上下计数模式:
在上下计数模式下,时基计数器从零开始递增,直到达到周期(TBBPRD)值,当达到周期值时,时基计数器将递减,直到达到零,此时计数器重复模式并开始递增。
向上计数模式:
在此模式下,时基计数器从零开始递增,直到达到周期计数器(TBPRD)中的值。当达到周期值时,时基计数器重置为0并再次开始递增。
向下计数模式:
在倒计时模式下,时基计数器从周期(TBPRD)值开始递减直到达到零,当它达到零时,时基计数器重置为周期值,并再次开始递减。

时基频率和周期
时基周期影子寄存器
时基周期影子寄存器(TBPRD)有一个影子寄存器,影子寄存器更新与硬件同步,以下定义用于描述ePWM模块中的所有影子寄存器、
·活动寄存器
活动寄存器控制硬件,并负责硬件引起或调用的操作
·影子寄存器
影子寄存器缓冲或提供活动寄存器的临时保持位置。他对任何控制硬件都没有直接影响。在关键的时间点,影子寄存器的内容被转移到活动寄存器。这可以防止由于软件异步修改寄存器而导致的损坏或伪操作。
影子周期寄存器的内存地址与活动寄存器相同。写入或读取哪个寄存器由TBCTL[PRDLD]位决定。此位启用和禁用TBPRD阴影寄存器,如下所示:
时基周期影子模式:
当TBCTL[PRDLD]=0时,TBPRD影子寄存器启用。从TBPRD内存地址读取和写入到影子寄存器。当时基计数器等于零(TBCTR=0x00)和/或 TBCTL2[PRDLDSYNC]位确定的同步事件时,影子寄存器内容 被传输到活动寄存器(TBPRD(活动)←TBPRD(影子))。只有当TBCTL[PRDLD]=0时,PRDLDSYNC位才有效,默认情况下,TBPRD阴影寄存器处于启用状态。同步输入来源在其他章节介绍
通过在全局负载配置寄存器(GLDCFG)中配置适当的位,全局负载控制机制也可以与时基周期寄存器一起使用。当选择全局加载模式时,对于启用此模式的所有寄存器,从影子寄存器到活动寄存器的内容传输发生在由全局影子到活动加载控制寄存器(GLDCTL)中的配置位定义的同一事件中。全局负载控制机制在其他章节讲解。
·时基期即时负载模式
如果选择立即加载模式(TBCTL[PRDLD]=1),则TBPRD内存地址的读取或写入直接进入活动寄存器。
时基时钟同步
外围时钟启用寄存器中的TBCLKSYNC位允许所有用户将所有启用的ePWM模块全局同步到时基时钟(TBCLK)
当设置时,所有启用的ePWM模块时钟将在TBCLK的第一个上升沿对齐的情况下启动,对于完全同步的TBCLK,每个ePWM模块的预分频器必须设置相同
启用ePWM时钟正确程序如下:
1.在PCLKCRx寄存器中启用ePWM模块时钟
2.设置TBCLKSYNC=0
3.配置ePWM模块
4.设置TBCLKSYNC=1
时基计数器同步
ePWM类型4引入了一种新的同步方案,使PWM模块的同步更加灵活,每个ePWM模块都有一个同步输入(SYNCI),一个同步输出(SYNCO)和一个外围同步输出(SYNCPER)。在下图中,EXTSYNC1来源于INPUTXBAR5、EXTSYNC2来源于INPUTXBAR6,可以配置为选择任何GPIO作为同步输入,使用SYNCSEL寄存器配置同步链传播路径时,确保最长路径不超过四个ePWM/eCAP模块。


每个ePWM模块可配置为使用或忽略同步输入。如果设置了TBCTL[PHSEN]位,则当出现以下情况之一时,ePWM模块的时基计数器(TBCTR)将自动加载相位寄存器(TBPHS)内容:
·EPWMxSYNCI:同步输入脉冲:
当检测到输入同步脉冲时,相位寄存器的值加载到计数器寄存器中(TBPHS➡TBCTR)。此操作发生在下一个有效的时基时钟(TBCLK)边缘。
从内部主模块到从模块的延迟如下:
TBCLK:时基时钟。这是ePWM时钟(EPWMCLK)的预分频器,由ePWM内的所有子模块使用。该时钟确定时基计数器递增或递减的速率
-if(TBCLK=EPWMCLK):2个EPWMCLK/2个TBCLK
-if(TBCLK<EPWMCLK):1xTBCLK
·软件强制同步脉冲:
将1写入TBCTL[SWFSYNC]控制位将调用软件强制同步,该脉冲与同步输入信号进行OR运算,因此与EPWMxSYNCI上的脉冲具有相同的效果,
·数字比较时间同步脉冲
DCAEVT1和DCBEVT1数字比较事件可配置生成与EPWMXsync具有相同影响的同步脉冲.
注意:
如果EPWMxSYNCI信号保持高电平,则同步不会持续发生.EPWMxSYNCI处于上升沿激活状态。
此功能使ePWM模块能够自动与另一个ePWM模块的时基同步。超前或滞后相位控制可以添加到不同ePWM模块生成的波形中,以使其同步。在上下计数模式下,TBCTL[PSHDIR]位在同步事件发生后立即配置事基计数器的方向,新方向独立于同步事件之前的方向。在向上计数或向下计数模式下忽略PHSDIR位。清除TBCTL[PHSEN]位将ePWM配置为忽略同步输入脉冲。同步输入脉冲仍可通过EPWMxSYNCO并用于同步其他ePWM模块。通过这种方式,你可以设置主时基(例如:ePWM1),并且下游模块(ePWM2-ePWMx)可以选择与主模块同步运行。
多个ePWM模块的时基时钟锁相
TBCLKSYNC位可用于全局同步设备上所有启用ePWM模块的时基时钟,该位是设备时钟启用寄存器的一部分,在本手册的“系统控制和中断”部分进行了描述。当TBCLKSYNC=0时,所有ePWM模块的时基时钟停止(默认)。
当TBCLKSYNC=1时,所有ePWM时基时钟均以TBCLK的上升沿对其的方式启动。
对于完全同步的TBCLK,每个ePWM模块的TBCTL寄存器中的预分频器位必须设置相同。启用ePWM时钟的正确
程序如下:
1.启用各个ePWM模块时钟。这在系统控制和中断章节进行了描述。
2.设置TBCLKSYNC=0。这将停止任何启用ePWM模块内的时基时钟。
3.配置预分频器值和所需的ePWM模式。
4.设置TBCLKSYNC=1。
ePWM模块之间对TBPRD和CMPx寄存器的同时写入
对于变频应用,需要在ePWM模块之间同时写入TBPRD和CMPx寄存器,这可以防止在ePWM模块之间更新所有寄存器之前,CTR=0或CTR=PRD脉冲强制这些寄存器的影子寄存器加载到活动状态(在CTR=0或CTR=PRD触发脉冲时,导致一些寄存器从新影子寄存器值加载,而另一些寄存器从旧影子寄存器加载)。为了支持这一点,在PWM模块之间添加了TBPRD:TBPRDHR、CMPA:CMPAHR、CMPB:CMPBHR、CMPC和CMPD寄存器的ePWM寄存器链接方案。
对于特定的ePWM模块#A,用户代码将“B+1”写入EPWMXLINK中的链接寄存器位字段,“B”是链接到的ePWM模块(即,TBPRD:TBPRDHR、CMPA:CMPAHR、CMPB:CMPBHR或CMPC将同时写入ePWM模块“A”中的相应寄存器)。
例如,如果
更多推荐



所有评论(0)