简介

1、一共有6对ePWM,其中每队有两路ePWM输出组成,分别为 ePWMxA 和 ePWMxB,这一对 PWM输出,可以配置成两路独立的单边沿 PWM 输出,或者两路独立的但互相相对称的双边沿 PWM 输出,或者一对双边沿非对称的 PWM 输出,共有 6 对这样的 ePWM 模块。因为每对 PWM 模块中的两个 PWM 输出均可以单独使用,所以也可以认为有12 路单路 ePWM,除此之外还有 6 个 APWM,这 6 个 APWM 通过 CAP 模块扩展配置,可以独立使用,所以 F28335 最多可以有 18 路 PWM 输出。
2、每组 ePWM 模块支持以下特点:

  • 专用 16 位时基计数器,控制输出的周期和频率。
  • 两个互补对称 PWM 输出(ePWMxA 和 ePWMxB)可以配置如下方式:
    (1)两个独立的单边沿操作的 PWM 输出。
    (2)两个独立的双边沿操作对称的 PWM 输出。
    (3)一个独立的双边沿操作非对称的 PWM 输出。
  • 软件实现 PWM 信号异步控制
  • 可编程的相位控制以支持超前或滞后其余的 PWM 模块
  • 逐周期硬件同步相位
  • 双边沿延时死区控制
  • 可编程错误联防
  • 产生错误时可以强制 PWM 输出高电平、低电平或者高阻态。
  • 所有的事件都可以触发 CPU 中断和 ADC 开始转换信号
  • 高频 PWM 斩波,用于基于脉冲变压器的门极驱动

模块

每一组 ePWM 模块都包含以下 7 个模块:

  • 时基模块 TB:产生时基信号,可以设定PWM波形的周期
  • 计数比较模块 CC:对PWM波形的脉宽进行配置
  • 动作模块 AQ:限定PWM输出状态,即脉冲波形的起落
  • 死区产生模块DB:对同组的互补输出PWM中的其中一个进行延时(一个先波先改变,互补那个在改变)
  • PWM 斩波模块 PC:进行第一个脉冲宽度的设置和后级脉冲占空比调整以适应基于脉冲变压器的门级驱动控制(我理解为将一个正常的脉宽,斩成多个高低电平)
  • 错误联防模块 TZ:若PWM波形输出后,功率器件有错误响应,可以将错误信号引入错误联防模块,从而强制复位PWM输出。
  • 事件触发模块 ET:触发一些事件,如ADC装换开始,中断什么的。

esp32 pwm引脚 esp32的pwm_stm32


esp32 pwm引脚 esp32的pwm_寄存器_02

esp32 pwm引脚 esp32的pwm_esp32 pwm引脚_03


esp32 pwm引脚 esp32的pwm_寄存器_04

时基模块 TB

简介

1、功能:

  • 通过TBPRD设定周期也就是频率。
  • 可以选择将多个ePWM模块的同步到一起,也就是通过信号输入的时候,让周期相位寄存器的值瞬间加载到计数器中(也可以设定为软件同步:向 TBCTL 的 SWFYNC 位写入 1 后,时基计数器也 会在时基模块时钟 TBCLK 的下一个边沿自动加载 TBPHS 的值)
  • 产生下列事件:1、CTR=PRD:时基计数器的值与周期寄存器的值相同(TBCTR=TBPRD);2、CTR=ZERO:时基计数器的值为 0(TBCTR=0x0000)

2、存在一个时基周期影子寄存器

  • 使用影子寄存器来更新值,可以有效防止在PWM周期内出现故障以及毛刺
  • 影子寄存器与活动寄存器的内存地址映射值是一致的,写或者读哪一个寄存器,主要取决于TBCTL[PRDLD]位。该位可以对TBPRD 的影子寄存器进行使能或者禁止
  • 当TBCTL[PRDLD]=0时,就是使能影子寄存器,当计数器值为 0 时,就会将影子寄存器中的值装载到活动寄存器中,这是就会生效这个新装载的值;当TBCTL[PRDLD]=1 时,为立即加载模式,读写时基周期寄存器对应的地址 时,都是直接到活动寄存器

寄存器

寄存器

名称

功能描述

TBPRD

时基周期寄存器

计数一个周期需要多少个数(相当于STM32的自动重装载寄存器)

TBCTR

时基计数器

用来计数的(相当于STM32中的CNT)

TBPHS

时基相位寄存器

也就是当同步信号到来时,计数器瞬间变为这个值

TBCTL

时基控制寄存器

各位功能见下

TBSTS

时基状态寄存器

见下

  • 时基控制寄存器 TBCTL,他这里的是二进制,我们实际使用的时候记得进制之间的转换


  • 时基状态寄存器 TBSTS

计数比较模块

简介

1、功能:

  • 以时基计数器的值作为输入,与比较寄存器CMPA和比较寄存器CMPB不断进行比较,当时基计数器的值等于其中之一时,就会产生相应的事件。

2、注意事项

  • 向上(向下)计数模式,一个周期发生一次;而向上向下模式,一个周期发生两次。
  • 计数器比较模块比较寄存器 CMPA、CMPB 各自都有一个影子寄存器(默认情况是使能的,通过CMPCTL[SHDWAMODE]控制)。当使能的情况下,当发生以下两种事件即CTR=PRD(时基计数器值与周期寄存器值相同)或者CTR=ZERO(时基计数器为 0),影子寄存器的值会传递到有效寄存器中(具体可以自己设定,详见寄存器)。当禁止影子寄存器时,一旦将值写入到CMP时,就会立即生效。

esp32 pwm引脚 esp32的pwm_esp32 pwm引脚_05

寄存器

寄存器

名称

功能描述

CMPA

计数比较寄存器 A

当CMPA中的值与时基计数器的值相同时,计数比较模块就会产生CTR=CMPA事件,送给动作模块进行相应的动作

CMPB

计数比较寄存器 B

CMPCTL

计数比较控制寄存器

详见下面

esp32 pwm引脚 esp32的pwm_esp32 pwm引脚_06

esp32 pwm引脚 esp32的pwm_物联网_07

动作限定模块AQ

简介

1、功能

  • 决定了相应事件发生时应该输出什么样的电平,从而使ePWMxA 和 ePWMxB 输出所需要的开关波形

esp32 pwm引脚 esp32的pwm_esp32 pwm引脚_08

2、注意事项

  • 一个PWM接口可以同时使用,CMPA和CMPB这两个寄存器进行比较,从而输出波形

寄存器

  • AQCTLA 动作控制寄存器A (还有一个B),各位不同数字代表的含义、动作都是像下面这样的(其中不动作但还是可以产生相应的事件触发信号以及相关中断)


名称

描述

15-12

保留

11-10

CBD

向下计数时,时基计数器的值与CMPB寄存器的值相等时的动作

9-8

CBU

向上计数时,时基计数器的值与CMPB寄存器的值相等时的动作

7-6

CAD

向下计数时,时基计数器的值与CMPA寄存器的值相等时的动作

5-4

CAU

向上计数时,时基计数器的值与CMPA寄存器的值相等时的动作

3-2

PRD

当时基寄存器的值与周期寄存器的值相等时的动作

1-0

ZRO

当时基寄存器的值等于0时的动作

  • AQSFRC 动作软件强制寄存器
  • esp32 pwm引脚 esp32的pwm_esp32 pwm引脚_09


  • esp32 pwm引脚 esp32的pwm_esp32 pwm引脚_10

  • AQCSFRC 动作模块软件强制持续
  • esp32 pwm引脚 esp32的pwm_esp32 pwm引脚_11

具体使用