目录
一、F28034包含的pwm波功能模块
可以看出F2803x系列有中断、ADC的排序触发、引脚pwm波shu'chu
可以看出F2803x系列有7路epwm波分别是ePWM1、ePWM2、ePWM3、ePWM4、ePWM5、ePWM6 、ePWM7。
二、EPWM各个模块配置与工作原理
1.TB模块
寄 存 器 | 地 址 | 是否具有映射功能 | 描 述 |
---|---|---|---|
TBCTL | 0x0000 | 无 | TB控制寄存器 |
TBSTS | 0x0001 | 无 | TB状态寄存器 |
TBPHSHR | 0x0002 | 无 | HRPWM相位扩展寄存器 |
TBPHS | 0x0003 | 无 | TB相位寄存器 |
TBCTR | 0x0004 | 无 | TB计数寄存器 |
TBPRD | 0x0005 | 有 | TB周期寄存器 |
图1 TB模块
(1)关键信号和寄存器
①ePWMxSYNCI:时基同步信号输入。输入脉冲用于时基计数器与之前的 ePWM 模块同步,每个 ePWM 模块可以通过软件配置为使用或者忽略此信号。对于第一 个 ePWM 模块,这个信号从外部引脚或得。随后的模块的同步信号可以由其他 ePWM 模块传递过来。例如第 2 个模块的同步信号可以从第 1 个模块的同步信号输出或 得,第 3 个模块由第 2 个模块产生,以此类推。 ②ePWMxSYNCO:时基同步信号输出。输出脉冲用于随后的 ePWM 的时基计数 器同步。ePWM 模块产生该信号来源于下列 3 个事件源中的一件。
--ePWMxSYNCI(同步输入脉冲)。
--CTR=ZERO,时基计数器等于 0(TBCTR=0X0000)。
--CTR=CMPB,时基计数器等于比较寄存器。
③CTR=PRD,时基计数器等于指定周期值。无论什么时候当时基计数器的值 与激活的周期寄存器(相对于影子寄存器而言)的值相等的时候,就会产生此信 号。
④CTR=ZERO,时基计数器等于 0。无论什么时候当时基计数器的值为 0 的时 候,会产生此信号。
⑤CTR=CMPB,时基计数器等于比较寄存器。时基计数器的值等于激活的比较 寄存器 B 的时候,会产生此信号。该信号由比较计数器模块产生,用于同步输出 逻辑。
⑥CTR_dir:时基计数器方向。表明时基计数器的计数方向,当高电平时,计数器向上计数,低电平时则向下计数。
⑦CTR_max:时基计数器的值为最大值。当时基计数器到最大值时会产生此 信号。该信号用作状态指示。
⑧TBCLK:时基时钟信号。这个信号来源于预分频的系统时钟信号,用于所 有的 ePWM 模块。该信号确定了时基计数器增减的速率。
(2)ePWM 周期和频率的计算
(a)时基信号-TBCTL寄存器
TBCTL (Time Base Control Register): 它控制EPWM波的时间基准,如计数器模式和计数器时钟分频等。它还可以配置同步和复位选项。
如图1所示, 计数时钟TBCLK是来自系统时钟SYSCLKOUT,再经过TBTCL分频其中TBCLK=SYSCLKOUT/(HSPCLKDIV*CLKDIV)。
(b)周期数值-TBPRD寄存器
位15-0 TBPRD:基准计时器周期值,设置PWM频率。这16位用于存储基准计时器(TB)的周期值。基准计时器通过递增计数器值来计时,当计数器值达到TBPRD值时,计数器被重置为0。TBPRD的值可用于控制PWM波形输出的频率。
- 如果TBCTL [PRDLD] = 0,则启用影子寄存器,任何写或读取操作将自动执行到影子寄存器。在这种情况下,当时间基准计数器等于零时,活动寄存器将从影子寄存器中加载。
- 如果TBCTL [PRDLD] = 1,则禁用影子寄存器,任何写或读取操作将直接指向活动寄存器,也就是直接控制硬件的寄存器。
- 活动寄存器和影子寄存器共享相同的内存映射地址。
(c)计数模式-TBCTR寄存器
位15-0 TBCTR:基准计时器计数器值,这16位用于存储基准计时器的当前计数值,在每个时钟周期内自动更新。当计数器的计数值达到计时器的周期值(通过设置TBPRD寄存器实现)时,计数器会重新加载,并产生一个中断或同步输出信号。这些位表示的是基准计时器的计数值,可以通过访问TBCTR寄存器来读取当前计数器值或向计数器写入初始计数值。在访问TBCTR寄存器之前,需要先选择正确的计数器模式、时钟源、分频器和同步选项,并在需要时启用或禁用相位同步、影子寄存器等选项。
(a)工作模式:设置时基计数器的计数模块。可以工作在向上计数(递增计数)、向下计 数(递减计数)、向上-向下计数模式(先递增后递减计数)。
(b)产生事件: 图1中中计数模式,来自TBCTL的计数信号与TBPRD的时间周期信号做比,有如下的
--CTR=PRD:时基计数器的值与周期寄存器的值相同(TBCTR=TBPRD)。
--CTR=ZERO:时基计数器的值为 0(TBCTR=0x0000)。
时基计数器按照指定模式进行计数,递增时会达到与周期寄存器的值一致, 递减时则会减到最小值 0。
下列以周期数值为4为例。
①向上-向下计数模式(先递增后递减)
在此模式下,时基计数器先从 0 开始向上计数(递增)直到递增到周期寄存器的值 4,然后再由 4 向下计数(递减)直到减到 0,再重复以上动作,如下图 所示
周期:TPWM=2*(TBPRD+1)*TBCLK
在此模式下,随着同步信号的到来,时基模块的输出波形有两种情形,需要通过设置相位方向 TBCTL[PHSDIR]来确定。如果 TBCTL[PHSDIR]=0 时,那么当同 步信号到来时,对应的输出波形如下图所示:
如果 TBCTL[PHSDIR]=1 时,那么当同步信号到来时,对应的输出波形如下图 所示
同步信号来临时,不管目前时基计数器已经到了什么值,都将置位为相位寄 存器的值,这个作用可以协调各路 ePWM 模块间的固定相位差,对于先递增后递减模式,同一相位寄存器的值,同时对应着两个段,例如相位值 3,既出现在递增的过程中,又出现在递减的过程中,通过 TBCTL 寄存器的PHSDIR 位的设置, 就可以确定究竟是递增过程还是递减过程中的3。TBCTL[PHSDIR]=1 表示为相位寄存器的值是递增过程中的值,TBCTL[PHSDIR]=0 时表示为相位寄存器的值是递 减过程中的值。当时基计数器的值变化到特定值的时候,特定事件就会产生,特 定信号就会发出。
每个 ePWM 模块可以通过软件配置使用或者忽略同步输入信号。如果 TBCTL(PHSEN)位被设置为 1,那么时基计数器在下面任意两种情况下就会自动加 载相位寄存器(TBPHS)的内容。 ①ePWMxSYNCI:同步信号脉冲:当同步信号输入脉冲到来的时候,时基计数 器就会在时基模块时钟 TBCLK 的下一个边沿自动加载 TBPHS 的值。
②软件强制同步信号脉冲:向 TBCTL 的 SWFYNC 位写入 1 后,时基计数器也 会在时基模块时钟 TBCLK 的下一个边沿自动加载 TBPHS 的值。 这个特点可以使其中一个 PWM 的时基与其他的 PWM 模块的时基同步,清除 TBCTL[PHSEN]位,可以配置 PWM 忽略同步输入信号。但是同步信号仍然可以通过 第一个 PWM 产生,经过 ePWMxSYNCO 传递给下面的 PWM 模块(ePWM2~ePWMx)。 TBCLKSYNC 位可以被用来同步在一个设备上所有使能的 PWM 模块。该位是系统时钟使能寄存器的一部分。当 TBCLKSYNC=0 时,ePWM 模块时基时钟停止(默 认情况),TBCLKSYNC=1 时,所有的 ePWM 模块在 TBCLK 的时钟上升沿到来时同 时被启动,为了更好的同步各 ePWM 模块的 TBCLK,每个 ePWM 模块的预分频系统 时钟的时基时钟 TBCTL 的寄存器都要设置为相同的值。
设置 ePWM 时钟的操作步 骤如下:
①使能各 ePWM 模块的时钟。
②设置 TBCLKSYNC=0,停止所有已使能的 ePWM 模块的时基时钟。
③配置预分频值与 ePWM 工作模式。
④设置 TBCLKSYNC=1,启动时基时钟。
②向上计数模式(递增)
在此模式下,时基计数器从 0 开始向上计数,直到递增到周期寄存器的值后, 时基计数器会自动复位到 0,重复以上动作,
周期:TPWM=(TBPRD+1)*TBCLK
在此模式下,随着同步信号的到来,时基模块的输出波形如下所示
③向下计数模式(递减)
在此模式下,时基计数器首先加载周期寄存器的值,然后开始递减,直到减 到 0 时,自动在加载周期寄存器的值,重复以上动作,如下图所示:
周期:TPWM=(TBPRD+1)*TBCLK
在此模式下,随着同步信号的到来,时基模块的输出波形如下所示
(d)其他寄存器-TBPHS
位15-0 TBPHS: 时间基准相位寄存器。这16位用于存储基准计时器的初始相位值,该值将被加到已存储在TBCTR计数器寄存器中的值,以产生计时器的实际初始值。TBPHS可以用于在基准计时器启动之前设置计数器的相位。
2.cc模块
该部分主要包含寄存器:CMPCTL/CMPAHR/CMPA/CMPB。
寄 存 器 | 地 址 | 是否具有映射功能 | 描 述 |
---|---|---|---|
CMPCTL | 0x0007 | 无 | 计数比较控制寄存器 |
CMPAHR | 0x0008 | 有 | HRPWMP计数比较A扩展寄存器 |
CMPA | 0x0009 | 有 | 计数比较B寄存器 |
CMPB | 0x000A | 有 | 计数比较A寄存器 |
CMPA和CMPB (Compare Register A和B): 这些寄存器设置EPWM波的频率和占空比。CMPA通常用于设定高电平持续时间,CMPB通常用于设定低电平持续时间。比较器CMPA、CMPB的作用为,当计数器与CA值相同,进行电平翻转,当计数器到CB时候又进行一次反转,实现脉冲宽度的设置。
①CTR=CMPA:时基计数器的值与 CMPA 的值相同时,PWM 可以根据 AQ 动作。 ②CTR=CMPB:时基计数器的值与 CMPB 的值相同时,PWM 可以根据 AQ 动作。 ③CTR=PRD:时基计数器的值与周期寄存器的值相同,PWM 可以根据 AQ 动作。 CMPA 与 CMPB 可以根据相关影子寄存器的值进行更新。
④CTR=ZERO:时基计数器的值递减到 0 时,PWM 可以根据 AQ 动作。CMPA 与 CMPB 可以根据相关影子寄存器的值进行更新
3、AQCTL
控制电平的输出,它定义EPWM波在达到特定比较值时要执行的操作,如设置断路器、强制输出或清除输出等。还可以改变输出极性和设置死区。
其使用的关键寄存器如下:
动作限定模块的输入事件:
软件强制是个异步事件,这个控制由 AQSFRC 和 AQCSF 两个寄存器处理。动 作模块可以控制输出ePWMA和ePWMB的动作。输入动作模块的事件也可以被量化, 这样就可以控制在递增或递减计数模式时,输出独立的相位。
ePWMA 和 ePWMB 输出的几种操作方式如下:
①置高(SET HIGH):使 ePWMA 和 ePWMB 输出高电平。
②置低(CLEAR LOW):使 ePWMA 和 ePWMB 输出低电平。
③取反(TOOGLE):当 ePWMA 或者 ePWMB 当前状态是低电平时,那下一时刻就是高电平;当 ePWMA 或者 ePWMB 当前状态是高电平时,那么下一时刻就是低 电平。
④不动作(DO NOTHING):不对 ePWM 输出做任何改变。但是还是可以产生 相应的事件触发信号以及相关中断。
(1)动作限定模块事件优先级
在同一时刻,动作模块可能会收到两个及两个以上的事件时,动作模块如何 执行呢?在这种情况下,就需要硬件提供事件优先级。优先级 1 最高,优先级 7 最低。根据不同的计数模式,优先级定义不同。向上向下(先增后减)计数模式 的优先级定义如下:
软件强制优先级最高,最低是计数器在增的时候,与比较寄存器 A 匹配事件。 向上计数(递增)模式的优先级如下,此时的计数方向始终是递增的,所以 不使用递减事件。
最高同样是软件强制,最低是计数器等于 0 事件。 向下计数(递减)模式的优先级如下,此时的计数方向始终是递减的,所以 不使用递增事件。
(2)动作限定模块一般配置条件下的输出波形
-
AQCTLA寄存器:AQ控制寄存器。用于配置AQ子模块的操作模式,典型配置包括非反转模式、反转模式、强制恒定高/低电平等。
-
AQCSFRC寄存器:AQ复位/设置寄存器。用于通过软件控制AQ比较子模块的状态,包括启动/停止、设置/清除、强制更新等操作。
-
AQSFRC寄存器:同AQCSFRC寄存器,但只针对特定的比较器。
-
AQCTLB寄存器:AQ控制2寄存器。用于配置AQ子模块的起始/停止指针,以及比较器的触发事件等。
-
AQSTS寄存器:AQ状态寄存器。用于显示AQ字模块的状态,并针对比较器生成触发信号。
这些寄存器分别用于控制PWM的输出和事件,包括配置PWM的输出模式、选择同步方式等。
(3) AQCTLA寄存器的位说明:
(4)AQCTLB寄存器的位说明:
4、死区DB
一般情况下前三个模块以及能够完成输出。DB用于设置EPWM死区的大小和极性,以避免电流反向。
三、epwm配置步骤
待补充