TMS320F2837xD ePWM 的 DB 死区模块详解:AHC、ALC、AH、AL 模式与通道流向分析

前言

在电机控制、逆变器、半桥/全桥驱动、BUCK/BOOST 电源等场合中,ePWM 输出的两路互补 PWM 信号通常不能同时导通。否则上下桥臂可能发生直通,轻则发热,重则烧毁功率器件。

TI 的 TMS320F2837xD 系列 DSP 在 ePWM 模块中提供了 Dead-Band Generator,也就是 DB 死区模块。它可以在 ePWMxA 和 ePWMxB 输出之间自动插入死区时间,从而减少 CPU 软件干预。

本文结合 TMS320F2837xD Technical Reference Manual 中 ePWM 的图 15-33、图 15-34 以及 DBCTL 相关表格,系统整理 DB 模块的信号流向、OUT_MODE、POLSEL、IN_MODE 的作用,并重点讲清楚 AH、AL、AHC、ALC 四种模式的区别。手册中说明,DB 模块的核心功能包括:从单路 EPWMxA 输入生成带死区关系的 EPWMxA/EPWMxB 信号对,支持 AH、AL、AHC、ALC 等极性模式,并可分别添加上升沿延时 RED 和下降沿延时 FED。

在这里插入图片描述!](https://i-blog.csdnimg.cn/direct/381083be6fea43dc8073ce4b73f48400.png)


一、DB 死区模块在 ePWM 中的位置

ePWM 的基本信号链路可以简单理解为:

text 复制代码
TB 时基模块
    ↓
CC 比较模块
    ↓
AQ 动作限定模块
    ↓
DB 死区模块
    ↓
TZ / PC / GPIO MUX
    ↓
EPWMxA / EPWMxB 引脚输出

其中 AQ 模块负责根据 CMPA、CMPB、CTR=ZERO、CTR=PRD 等事件生成原始 PWM 波形。DB 模块位于 AQ 后面,它不负责产生 PWM 占空比,而是在已有 PWM 波形基础上增加边沿延时和极性处理。

可以把 DB 模块理解成:

text 复制代码
AQ 产生原始 PWM
      ↓
DB 对上升沿、下降沿进行延时
      ↓
根据极性模式决定是否反相
      ↓
输出 ePWMxA / ePWMxB

二、DB 模块的两个核心延时:RED 和 FED

DB 模块中最重要的两个延时是:

名称 全称 作用
RED Rising Edge Delay 上升沿延时
FED Falling Edge Delay 下降沿延时

1. RED:上升沿延时

RED 由 DBRED 寄存器控制。它会把指定输入信号的上升沿向后推迟一段时间。

text 复制代码
原始信号:____|‾‾‾‾‾‾‾
RED 后:______|‾‾‾‾‾‾

2. FED:下降沿延时

FED 由 DBFED 寄存器控制。它会把指定输入信号的下降沿向后推迟一段时间。

text 复制代码
原始信号:‾‾‾‾‾‾|____
FED 后:  ‾‾‾‾‾‾‾‾|__

DBRED 和 DBFED 的数值本质上是计数值。若 HALFCYCLE=0,DB 计数器按 TBCLK 计数;若 HALFCYCLE=1,DB 计数器按 2 倍 TBCLK 计数,死区分辨率更高。手册中 DBCTL 的 HALFCYCLE 位说明了这两种计数时钟选择。

常用计算公式如下:

c 复制代码
DeadBandTime = DBRED * TBCLK_period;   // HALFCYCLE = 0
DeadBandTime = DBRED * TBCLK_period / 2; // HALFCYCLE = 1

例如 TBCLK = 100 MHz,则 TBCLK_period = 10 ns。

如果 HALFCYCLE=0,DBRED=100,则死区时间为:

text 复制代码
100 × 10 ns = 1000 ns = 1 us

如果 HALFCYCLE=1,DBRED=100,则死区时间为:

text 复制代码
100 × 5 ns = 500 ns

三、图 15-34 的核心信号流向理解

图 15-34 看起来比较复杂,但核心就是几个选择开关:

控制位 作用
DBCTLIN_MODE 选择 RED/FED 的输入来自 ePWMxA 还是 ePWMxB
DBCTLOUT_MODE 选择是否启用 RED、FED
DBCTLPOLSEL 选择 A 路、B 路是否反相
DBCTLOUTSWAP 选择是否交换 A/B 输出
DBCTLDEDB_MODE 双边沿 B 模式,可让 RED 和 FED 同时作用到 B 路
DBCTLHALFCYCLE 选择死区计数器时钟为 TBCLK 或 2×TBCLK

手册图 15-34 展示了 DB 子模块的配置路径,S4/S5 用于选择输入源,RED/FED 分别进入上升沿延时和下降沿延时计数器,S2/S3 用于极性选择,S1/S0 用于选择 OUT_MODE,S6/S7 用于输出交换。


四、IN_MODE:RED 和 FED 的输入源选择

DBCTLIN_MODE 决定 RED 和 FED 的输入来自哪里。

IN_MODE RED 输入 FED 输入 说明
00 ePWMxA ePWMxA 最常用,A 路作为唯一输入源
01 ePWMxB ePWMxA RED 来自 B,FED 来自 A
10 ePWMxA ePWMxB RED 来自 A,FED 来自 B
11 ePWMxB ePWMxB B 路作为唯一输入源

实际应用中,最常见配置是:

c 复制代码
EPwm1Regs.DBCTL.bit.IN_MODE = 0;   // 00:RED 和 FED 都使用 ePWMxA 作为输入源

也就是用 AQ 模块产生一路 ePWMxA 原始 PWM,然后 DB 模块自动生成两路带死区的 ePWMxA/ePWMxB 输出。


五、OUT_MODE:是否启用 RED 和 FED

OUT_MODE 是 DB 模块是否真正参与输出的关键。

OUT_MODE A path B path 含义
00 InA InB DB 完全旁路,RED/FED 不起作用
01 InA FED A 路旁路,B 路使用 FED
10 RED InB A 路使用 RED,B 路旁路
11 RED FED RED 和 FED 全部启用,最常用

手册中说明,OUT_MODE=00 时 DB 模块被完全旁路,此时 POLSEL 和 IN_MODE 不起作用;OUT_MODE=11 时 DB 模块完全启用,即 RED 和 FED 都参与输出。

典型互补 PWM 死区配置一般使用:

c 复制代码
EPwm1Regs.DBCTL.bit.OUT_MODE = 3;  // 11:RED 和 FED 全部启用

六、POLSEL:AH、AL、AHC、ALC 的关键

POLSEL 是理解 AH、AL、AHC、ALC 的关键。

在典型配置下:

c 复制代码
IN_MODE  = 00;  // ePWMxA 同时作为 RED 和 FED 输入
OUT_MODE = 11;  // RED 和 FED 都启用
OUTSWAP  = 00;  // 不交换 A/B 输出

此时 POLSEL 的含义如下:

POLSEL 模式 A 路是否反相 B 路是否反相 模式名称
00 AH 不反相 不反相 Active High
01 ALC A 路反相 B 路不反相 Active Low Complementary
10 AHC A 路不反相 B 路反相 Active High Complementary
11 AL A 路反相 B 路反相 Active Low

手册 DBCTL 的 POLSEL 位明确给出了这四种模式:00 为 AH,01 为 ALC,10 为 AHC,11 为 AL。


七、四种经典模式的通道流向

下面默认采用最常见配置:

c 复制代码
IN_MODE  = 00;  // RED 和 FED 都来自 ePWMxA
OUT_MODE = 11;  // RED 和 FED 全部启用
OUTSWAP  = 00;  // 不交换输出
DEDB_MODE = 0;  // 普通 DB 模式

也就是:

text 复制代码
ePWMxA 原始输入
     ├──> RED 上升沿延时 ──> A path ──> OutA
     └──> FED 下降沿延时 ──> B path ──> OutB

1. AH 模式:Active High

AH 模式配置:

c 复制代码
EPwm1Regs.DBCTL.bit.POLSEL = 0;   // 00:AH

信号流向

#mermaid-svg-EPvJsS3WuH9JtASa{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-EPvJsS3WuH9JtASa .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-EPvJsS3WuH9JtASa .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-EPvJsS3WuH9JtASa .error-icon{fill:#552222;}#mermaid-svg-EPvJsS3WuH9JtASa .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-EPvJsS3WuH9JtASa .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-EPvJsS3WuH9JtASa .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-EPvJsS3WuH9JtASa .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-EPvJsS3WuH9JtASa .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-EPvJsS3WuH9JtASa .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-EPvJsS3WuH9JtASa .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-EPvJsS3WuH9JtASa .marker{fill:#333333;stroke:#333333;}#mermaid-svg-EPvJsS3WuH9JtASa .marker.cross{stroke:#333333;}#mermaid-svg-EPvJsS3WuH9JtASa svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-EPvJsS3WuH9JtASa p{margin:0;}#mermaid-svg-EPvJsS3WuH9JtASa .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-EPvJsS3WuH9JtASa .cluster-label text{fill:#333;}#mermaid-svg-EPvJsS3WuH9JtASa .cluster-label span{color:#333;}#mermaid-svg-EPvJsS3WuH9JtASa .cluster-label span p{background-color:transparent;}#mermaid-svg-EPvJsS3WuH9JtASa .label text,#mermaid-svg-EPvJsS3WuH9JtASa span{fill:#333;color:#333;}#mermaid-svg-EPvJsS3WuH9JtASa .node rect,#mermaid-svg-EPvJsS3WuH9JtASa .node circle,#mermaid-svg-EPvJsS3WuH9JtASa .node ellipse,#mermaid-svg-EPvJsS3WuH9JtASa .node polygon,#mermaid-svg-EPvJsS3WuH9JtASa .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-EPvJsS3WuH9JtASa .rough-node .label text,#mermaid-svg-EPvJsS3WuH9JtASa .node .label text,#mermaid-svg-EPvJsS3WuH9JtASa .image-shape .label,#mermaid-svg-EPvJsS3WuH9JtASa .icon-shape .label{text-anchor:middle;}#mermaid-svg-EPvJsS3WuH9JtASa .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-EPvJsS3WuH9JtASa .rough-node .label,#mermaid-svg-EPvJsS3WuH9JtASa .node .label,#mermaid-svg-EPvJsS3WuH9JtASa .image-shape .label,#mermaid-svg-EPvJsS3WuH9JtASa .icon-shape .label{text-align:center;}#mermaid-svg-EPvJsS3WuH9JtASa .node.clickable{cursor:pointer;}#mermaid-svg-EPvJsS3WuH9JtASa .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-EPvJsS3WuH9JtASa .arrowheadPath{fill:#333333;}#mermaid-svg-EPvJsS3WuH9JtASa .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-EPvJsS3WuH9JtASa .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-EPvJsS3WuH9JtASa .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-EPvJsS3WuH9JtASa .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-EPvJsS3WuH9JtASa .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-EPvJsS3WuH9JtASa .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-EPvJsS3WuH9JtASa .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-EPvJsS3WuH9JtASa .cluster text{fill:#333;}#mermaid-svg-EPvJsS3WuH9JtASa .cluster span{color:#333;}#mermaid-svg-EPvJsS3WuH9JtASa div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-EPvJsS3WuH9JtASa .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-EPvJsS3WuH9JtASa rect.text{fill:none;stroke-width:0;}#mermaid-svg-EPvJsS3WuH9JtASa .icon-shape,#mermaid-svg-EPvJsS3WuH9JtASa .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-EPvJsS3WuH9JtASa .icon-shape p,#mermaid-svg-EPvJsS3WuH9JtASa .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-EPvJsS3WuH9JtASa .icon-shape .label rect,#mermaid-svg-EPvJsS3WuH9JtASa .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-EPvJsS3WuH9JtASa .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-EPvJsS3WuH9JtASa .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-EPvJsS3WuH9JtASa :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} ePWMxA 原始 PWM
RED 上升沿延时
FED 下降沿延时
A path 不反相
B path 不反相
OutA / ePWMxA
OutB / ePWMxB

特点

AH 模式下,A 路和 B 路都不反相。

text 复制代码
OutA = RED 后的信号
OutB = FED 后的信号

它的含义是:两路输出都是高电平有效。A 路使用上升沿延时,B 路使用下降沿延时。

这种模式不一定是最常用的半桥互补输出方式,因为 A/B 两路不是通过 DB 内部反相得到的互补波形。它更适合某些外部驱动器内部已经做了极性处理的场合。


2. AHC 模式:Active High Complementary

AHC 是电机控制、逆变器、半桥驱动中最常见的模式之一。

配置:

c 复制代码
EPwm1Regs.DBCTL.bit.POLSEL = 2;   // 10:AHC

信号流向

#mermaid-svg-8D1NwaNFuQXPTzzy{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-8D1NwaNFuQXPTzzy .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-8D1NwaNFuQXPTzzy .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-8D1NwaNFuQXPTzzy .error-icon{fill:#552222;}#mermaid-svg-8D1NwaNFuQXPTzzy .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-8D1NwaNFuQXPTzzy .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-8D1NwaNFuQXPTzzy .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-8D1NwaNFuQXPTzzy .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-8D1NwaNFuQXPTzzy .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-8D1NwaNFuQXPTzzy .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-8D1NwaNFuQXPTzzy .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-8D1NwaNFuQXPTzzy .marker{fill:#333333;stroke:#333333;}#mermaid-svg-8D1NwaNFuQXPTzzy .marker.cross{stroke:#333333;}#mermaid-svg-8D1NwaNFuQXPTzzy svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-8D1NwaNFuQXPTzzy p{margin:0;}#mermaid-svg-8D1NwaNFuQXPTzzy .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-8D1NwaNFuQXPTzzy .cluster-label text{fill:#333;}#mermaid-svg-8D1NwaNFuQXPTzzy .cluster-label span{color:#333;}#mermaid-svg-8D1NwaNFuQXPTzzy .cluster-label span p{background-color:transparent;}#mermaid-svg-8D1NwaNFuQXPTzzy .label text,#mermaid-svg-8D1NwaNFuQXPTzzy span{fill:#333;color:#333;}#mermaid-svg-8D1NwaNFuQXPTzzy .node rect,#mermaid-svg-8D1NwaNFuQXPTzzy .node circle,#mermaid-svg-8D1NwaNFuQXPTzzy .node ellipse,#mermaid-svg-8D1NwaNFuQXPTzzy .node polygon,#mermaid-svg-8D1NwaNFuQXPTzzy .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-8D1NwaNFuQXPTzzy .rough-node .label text,#mermaid-svg-8D1NwaNFuQXPTzzy .node .label text,#mermaid-svg-8D1NwaNFuQXPTzzy .image-shape .label,#mermaid-svg-8D1NwaNFuQXPTzzy .icon-shape .label{text-anchor:middle;}#mermaid-svg-8D1NwaNFuQXPTzzy .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-8D1NwaNFuQXPTzzy .rough-node .label,#mermaid-svg-8D1NwaNFuQXPTzzy .node .label,#mermaid-svg-8D1NwaNFuQXPTzzy .image-shape .label,#mermaid-svg-8D1NwaNFuQXPTzzy .icon-shape .label{text-align:center;}#mermaid-svg-8D1NwaNFuQXPTzzy .node.clickable{cursor:pointer;}#mermaid-svg-8D1NwaNFuQXPTzzy .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-8D1NwaNFuQXPTzzy .arrowheadPath{fill:#333333;}#mermaid-svg-8D1NwaNFuQXPTzzy .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-8D1NwaNFuQXPTzzy .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-8D1NwaNFuQXPTzzy .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-8D1NwaNFuQXPTzzy .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-8D1NwaNFuQXPTzzy .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-8D1NwaNFuQXPTzzy .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-8D1NwaNFuQXPTzzy .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-8D1NwaNFuQXPTzzy .cluster text{fill:#333;}#mermaid-svg-8D1NwaNFuQXPTzzy .cluster span{color:#333;}#mermaid-svg-8D1NwaNFuQXPTzzy div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-8D1NwaNFuQXPTzzy .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-8D1NwaNFuQXPTzzy rect.text{fill:none;stroke-width:0;}#mermaid-svg-8D1NwaNFuQXPTzzy .icon-shape,#mermaid-svg-8D1NwaNFuQXPTzzy .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-8D1NwaNFuQXPTzzy .icon-shape p,#mermaid-svg-8D1NwaNFuQXPTzzy .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-8D1NwaNFuQXPTzzy .icon-shape .label rect,#mermaid-svg-8D1NwaNFuQXPTzzy .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-8D1NwaNFuQXPTzzy .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-8D1NwaNFuQXPTzzy .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-8D1NwaNFuQXPTzzy :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} ePWMxA 原始 PWM
RED 上升沿延时
FED 下降沿延时
A path 不反相
B path 反相
OutA / ePWMxA
OutB / ePWMxB

特点

AHC 的核心是:

text 复制代码
OutA = RED 后的信号
OutB = FED 后的信号取反

也就是 A 路不反相,B 路反相。

由于 B 路被反相,所以 OutA 和 OutB 形成互补输出,同时 RED 和 FED 在上下管切换时插入死区。

适用场景

AHC 通常用于上下桥臂驱动信号都是高电平有效的情况。例如:

text 复制代码
OutA 高电平 → 上管导通
OutB 高电平 → 下管导通

由于上下管都是高电平有效,因此需要两路 PWM 在逻辑上互补。AHC 就是典型的"高有效互补"模式。

简单理解

text 复制代码
AHC = Active High Complementary
    = 高电平有效 + 互补输出

3. ALC 模式:Active Low Complementary

ALC 也是互补模式,但它和 AHC 的反相位置相反。

配置:

c 复制代码
EPwm1Regs.DBCTL.bit.POLSEL = 1;   // 01:ALC

信号流向

#mermaid-svg-1s08BhQcTL6ZJ2Yr{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-1s08BhQcTL6ZJ2Yr .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .error-icon{fill:#552222;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .marker{fill:#333333;stroke:#333333;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .marker.cross{stroke:#333333;}#mermaid-svg-1s08BhQcTL6ZJ2Yr svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-1s08BhQcTL6ZJ2Yr p{margin:0;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .cluster-label text{fill:#333;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .cluster-label span{color:#333;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .cluster-label span p{background-color:transparent;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .label text,#mermaid-svg-1s08BhQcTL6ZJ2Yr span{fill:#333;color:#333;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .node rect,#mermaid-svg-1s08BhQcTL6ZJ2Yr .node circle,#mermaid-svg-1s08BhQcTL6ZJ2Yr .node ellipse,#mermaid-svg-1s08BhQcTL6ZJ2Yr .node polygon,#mermaid-svg-1s08BhQcTL6ZJ2Yr .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .rough-node .label text,#mermaid-svg-1s08BhQcTL6ZJ2Yr .node .label text,#mermaid-svg-1s08BhQcTL6ZJ2Yr .image-shape .label,#mermaid-svg-1s08BhQcTL6ZJ2Yr .icon-shape .label{text-anchor:middle;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .rough-node .label,#mermaid-svg-1s08BhQcTL6ZJ2Yr .node .label,#mermaid-svg-1s08BhQcTL6ZJ2Yr .image-shape .label,#mermaid-svg-1s08BhQcTL6ZJ2Yr .icon-shape .label{text-align:center;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .node.clickable{cursor:pointer;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .arrowheadPath{fill:#333333;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-1s08BhQcTL6ZJ2Yr .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-1s08BhQcTL6ZJ2Yr .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-1s08BhQcTL6ZJ2Yr .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .cluster text{fill:#333;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .cluster span{color:#333;}#mermaid-svg-1s08BhQcTL6ZJ2Yr div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-1s08BhQcTL6ZJ2Yr rect.text{fill:none;stroke-width:0;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .icon-shape,#mermaid-svg-1s08BhQcTL6ZJ2Yr .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .icon-shape p,#mermaid-svg-1s08BhQcTL6ZJ2Yr .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .icon-shape .label rect,#mermaid-svg-1s08BhQcTL6ZJ2Yr .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-1s08BhQcTL6ZJ2Yr .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-1s08BhQcTL6ZJ2Yr .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-1s08BhQcTL6ZJ2Yr :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} ePWMxA 原始 PWM
RED 上升沿延时
FED 下降沿延时
A path 反相
B path 不反相
OutA / ePWMxA
OutB / ePWMxB

特点

ALC 的核心是:

text 复制代码
OutA = RED 后的信号取反
OutB = FED 后的信号

也就是 A 路反相,B 路不反相。

适用场景

ALC 适合某些低电平有效驱动逻辑的功率驱动器。

例如某些驱动芯片可能是:

text 复制代码
输入低电平 → 开通
输入高电平 → 关断

这种情况下,如果仍然需要互补输出,就可以选择 ALC。

简单理解

text 复制代码
ALC = Active Low Complementary
    = 低电平有效 + 互补输出

4. AL 模式:Active Low

AL 模式配置:

c 复制代码
EPwm1Regs.DBCTL.bit.POLSEL = 3;   // 11:AL

信号流向

#mermaid-svg-1KKjMAxQCwiGIXkq{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-1KKjMAxQCwiGIXkq .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-1KKjMAxQCwiGIXkq .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-1KKjMAxQCwiGIXkq .error-icon{fill:#552222;}#mermaid-svg-1KKjMAxQCwiGIXkq .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-1KKjMAxQCwiGIXkq .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-1KKjMAxQCwiGIXkq .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-1KKjMAxQCwiGIXkq .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-1KKjMAxQCwiGIXkq .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-1KKjMAxQCwiGIXkq .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-1KKjMAxQCwiGIXkq .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-1KKjMAxQCwiGIXkq .marker{fill:#333333;stroke:#333333;}#mermaid-svg-1KKjMAxQCwiGIXkq .marker.cross{stroke:#333333;}#mermaid-svg-1KKjMAxQCwiGIXkq svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-1KKjMAxQCwiGIXkq p{margin:0;}#mermaid-svg-1KKjMAxQCwiGIXkq .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-1KKjMAxQCwiGIXkq .cluster-label text{fill:#333;}#mermaid-svg-1KKjMAxQCwiGIXkq .cluster-label span{color:#333;}#mermaid-svg-1KKjMAxQCwiGIXkq .cluster-label span p{background-color:transparent;}#mermaid-svg-1KKjMAxQCwiGIXkq .label text,#mermaid-svg-1KKjMAxQCwiGIXkq span{fill:#333;color:#333;}#mermaid-svg-1KKjMAxQCwiGIXkq .node rect,#mermaid-svg-1KKjMAxQCwiGIXkq .node circle,#mermaid-svg-1KKjMAxQCwiGIXkq .node ellipse,#mermaid-svg-1KKjMAxQCwiGIXkq .node polygon,#mermaid-svg-1KKjMAxQCwiGIXkq .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-1KKjMAxQCwiGIXkq .rough-node .label text,#mermaid-svg-1KKjMAxQCwiGIXkq .node .label text,#mermaid-svg-1KKjMAxQCwiGIXkq .image-shape .label,#mermaid-svg-1KKjMAxQCwiGIXkq .icon-shape .label{text-anchor:middle;}#mermaid-svg-1KKjMAxQCwiGIXkq .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-1KKjMAxQCwiGIXkq .rough-node .label,#mermaid-svg-1KKjMAxQCwiGIXkq .node .label,#mermaid-svg-1KKjMAxQCwiGIXkq .image-shape .label,#mermaid-svg-1KKjMAxQCwiGIXkq .icon-shape .label{text-align:center;}#mermaid-svg-1KKjMAxQCwiGIXkq .node.clickable{cursor:pointer;}#mermaid-svg-1KKjMAxQCwiGIXkq .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-1KKjMAxQCwiGIXkq .arrowheadPath{fill:#333333;}#mermaid-svg-1KKjMAxQCwiGIXkq .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-1KKjMAxQCwiGIXkq .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-1KKjMAxQCwiGIXkq .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-1KKjMAxQCwiGIXkq .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-1KKjMAxQCwiGIXkq .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-1KKjMAxQCwiGIXkq .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-1KKjMAxQCwiGIXkq .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-1KKjMAxQCwiGIXkq .cluster text{fill:#333;}#mermaid-svg-1KKjMAxQCwiGIXkq .cluster span{color:#333;}#mermaid-svg-1KKjMAxQCwiGIXkq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-1KKjMAxQCwiGIXkq .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-1KKjMAxQCwiGIXkq rect.text{fill:none;stroke-width:0;}#mermaid-svg-1KKjMAxQCwiGIXkq .icon-shape,#mermaid-svg-1KKjMAxQCwiGIXkq .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-1KKjMAxQCwiGIXkq .icon-shape p,#mermaid-svg-1KKjMAxQCwiGIXkq .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-1KKjMAxQCwiGIXkq .icon-shape .label rect,#mermaid-svg-1KKjMAxQCwiGIXkq .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-1KKjMAxQCwiGIXkq .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-1KKjMAxQCwiGIXkq .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-1KKjMAxQCwiGIXkq :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} ePWMxA 原始 PWM
RED 上升沿延时
FED 下降沿延时
A path 反相
B path 反相
OutA / ePWMxA
OutB / ePWMxB

特点

AL 模式下,A 路和 B 路都反相:

text 复制代码
OutA = RED 后的信号取反
OutB = FED 后的信号取反

它对应的是 Active Low,即低电平有效。

适用场景

AL 模式通常用于外部驱动器输入为低有效的场合。与 AH 类似,它不是最常见的半桥互补配置,但在某些驱动电路中很有用。


八、AH、AL、AHC、ALC 的本质区别总结

四个模式可以拆成两个维度理解:

text 复制代码
A / L:有效电平
C:是否互补
模式 英文 有效电平 是否互补 反相关系
AH Active High 高有效 不强调互补 A、B 都不反相
AL Active Low 低有效 不强调互补 A、B 都反相
AHC Active High Complementary 高有效 互补 B 路反相
ALC Active Low Complementary 低有效 互补 A 路反相

最常用的是:

text 复制代码
AHC:高电平有效互补输出
ALC:低电平有效互补输出

在实际半桥/全桥功率驱动中,如果你的驱动芯片输入是高电平有效,一般优先考虑 AHC;如果驱动芯片输入是低电平有效,则考虑 ALC。


九、典型 AHC 死区输出波形理解

假设 AQ 产生的原始 ePWMxA 波形如下:

text 复制代码
原始 ePWMxA:
____|‾‾‾‾‾‾‾‾‾|____

在 AHC 模式下:

text 复制代码
OutA = RED
OutB = 反相后的 FED

可以理解成:

text 复制代码
OutA:
______|‾‾‾‾‾‾‾|____

OutB:
‾‾‾‾|___________|‾‾

在 OutA 打开之前,OutB 已经先关断;在 OutB 打开之前,OutA 也已经先关断。中间这一小段两路都关闭的时间,就是死区时间。

这正是半桥驱动最需要的效果:

text 复制代码
上管关断
    ↓
等待死区时间
    ↓
下管导通

或者:

text 复制代码
下管关断
    ↓
等待死区时间
    ↓
上管导通

十、常用寄存器配置总结

1. DBRED 和 DBFED

c 复制代码
EPwm1Regs.DBRED.bit.DBRED = 100;   // 上升沿死区计数
EPwm1Regs.DBFED.bit.DBFED = 100;   // 下降沿死区计数

一般情况下,DBRED 和 DBFED 可以设置相同值。

如果功率器件开通、关断速度不同,也可以设置不同值:

c 复制代码
EPwm1Regs.DBRED.bit.DBRED = 80;
EPwm1Regs.DBFED.bit.DBFED = 120;

2. 最常见 AHC 配置

c 复制代码
// 1. RED 和 FED 都使用 ePWMxA 作为输入源
EPwm1Regs.DBCTL.bit.IN_MODE = 0;      // 00

// 2. RED 和 FED 全部启用
EPwm1Regs.DBCTL.bit.OUT_MODE = 3;     // 11

// 3. AHC:A 路不反相,B 路反相
EPwm1Regs.DBCTL.bit.POLSEL = 2;       // 10

// 4. 不交换 A/B 输出
EPwm1Regs.DBCTL.bit.OUTSWAP = 0;      // 00

// 5. 普通 DB 模式
EPwm1Regs.DBCTL.bit.DEDB_MODE = 0;

// 6. 设置死区时间
EPwm1Regs.DBRED.bit.DBRED = 100;
EPwm1Regs.DBFED.bit.DBFED = 100;

3. ALC 配置

c 复制代码
EPwm1Regs.DBCTL.bit.IN_MODE  = 0;     // ePWMxA 作为 RED/FED 输入
EPwm1Regs.DBCTL.bit.OUT_MODE = 3;     // RED/FED 全启用
EPwm1Regs.DBCTL.bit.POLSEL   = 1;     // ALC
EPwm1Regs.DBCTL.bit.OUTSWAP  = 0;

EPwm1Regs.DBRED.bit.DBRED = 100;
EPwm1Regs.DBFED.bit.DBFED = 100;

4. AH 配置

c 复制代码
EPwm1Regs.DBCTL.bit.IN_MODE  = 0;
EPwm1Regs.DBCTL.bit.OUT_MODE = 3;
EPwm1Regs.DBCTL.bit.POLSEL   = 0;     // AH
EPwm1Regs.DBCTL.bit.OUTSWAP  = 0;

EPwm1Regs.DBRED.bit.DBRED = 100;
EPwm1Regs.DBFED.bit.DBFED = 100;

5. AL 配置

c 复制代码
EPwm1Regs.DBCTL.bit.IN_MODE  = 0;
EPwm1Regs.DBCTL.bit.OUT_MODE = 3;
EPwm1Regs.DBCTL.bit.POLSEL   = 3;     // AL
EPwm1Regs.DBCTL.bit.OUTSWAP  = 0;

EPwm1Regs.DBRED.bit.DBRED = 100;
EPwm1Regs.DBFED.bit.DBFED = 100;

十一、完整 ePWM + DB 配置示例

下面给出一个比较典型的 ePWM1 配置示例,产生 AHC 互补 PWM 输出。

c 复制代码
void EPWM1_DB_Init(void)
{
    EALLOW;

    /*
     * 假设前面已经完成:
     * 1. GPIO0 配置为 EPWM1A
     * 2. GPIO1 配置为 EPWM1B
     * 3. ePWM 时钟已经打开
     */

    //==============================
    // 1. Time-Base 配置
    //==============================
    EPwm1Regs.TBCTL.bit.CTRMODE = 2;      // Up-Down count mode
    EPwm1Regs.TBPRD = 5000;               // PWM 周期
    EPwm1Regs.TBCTR = 0;

    EPwm1Regs.TBCTL.bit.PHSEN = 0;        // 禁用相位加载
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;    // 高速时钟分频
    EPwm1Regs.TBCTL.bit.CLKDIV = 0;       // 时钟分频

    //==============================
    // 2. Counter-Compare 配置
    //==============================
    EPwm1Regs.CMPA.bit.CMPA = 2500;       // 50% 占空比

    //==============================
    // 3. AQ 配置:先产生原始 PWM
    //==============================
    EPwm1Regs.AQCTLA.bit.CAU = 1;         // CTR = CMPA 且向上计数时,A 置低
    EPwm1Regs.AQCTLA.bit.CAD = 2;         // CTR = CMPA 且向下计数时,A 置高

    /*
     * 注意:
     * 这里主要使用 ePWMxA 作为 DB 输入源。
     * ePWMxB 可以不由 AQ 直接生成,而由 DB 模块生成。
     */

    //==============================
    // 4. DB 死区配置
    //==============================

    // RED 和 FED 都来自 ePWMxA
    EPwm1Regs.DBCTL.bit.IN_MODE = 0;      // 00

    // RED 和 FED 全部启用
    EPwm1Regs.DBCTL.bit.OUT_MODE = 3;     // 11

    // AHC:高有效互补模式
    EPwm1Regs.DBCTL.bit.POLSEL = 2;       // 10

    // 不交换 A/B 输出
    EPwm1Regs.DBCTL.bit.OUTSWAP = 0;      // 00

    // 普通 DB 模式
    EPwm1Regs.DBCTL.bit.DEDB_MODE = 0;

    // 是否半周期计数
    EPwm1Regs.DBCTL.bit.HALFCYCLE = 0;    // 0:TBCLK 计数;1:2*TBCLK 计数

    // 设置死区计数
    EPwm1Regs.DBRED.bit.DBRED = 100;
    EPwm1Regs.DBFED.bit.DBFED = 100;

    EDIS;
}

十二、配置时最容易踩的坑

1. 只配置了 DBRED/DBFED,但 OUT_MODE 没开

很多初学者只写了:

c 复制代码
EPwm1Regs.DBRED.bit.DBRED = 100;
EPwm1Regs.DBFED.bit.DBFED = 100;

但是忘记配置:

c 复制代码
EPwm1Regs.DBCTL.bit.OUT_MODE = 3;

此时 DB 模块可能没有真正参与输出。


2. POLSEL 配错,导致上下管逻辑反了

如果驱动芯片是高电平有效,一般要用 AHC:

c 复制代码
EPwm1Regs.DBCTL.bit.POLSEL = 2;

如果误写成 ALC:

c 复制代码
EPwm1Regs.DBCTL.bit.POLSEL = 1;

就可能导致输出极性和预期完全相反。


3. IN_MODE 不小心改成了 01、10、11

最常用的是:

c 复制代码
EPwm1Regs.DBCTL.bit.IN_MODE = 0;

也就是 RED 和 FED 都来自 ePWMxA。

如果改成其他值,RED 和 FED 的输入源会变成 ePWMxA/ePWMxB 的组合,波形可能和想象不一样。


4. OUTSWAP 导致 A/B 输出被交换

OUTSWAP 可以交换 A path 和 B path。如果你发现示波器上 ePWMxA 和 ePWMxB 正好反了,可以检查:

c 复制代码
EPwm1Regs.DBCTL.bit.OUTSWAP

通常初学阶段建议先设置为:

c 复制代码
EPwm1Regs.DBCTL.bit.OUTSWAP = 0;

5. 死区时间太大导致占空比异常

死区时间不能随便设置过大。

例如 PWM 周期很短,而 DBRED/DBFED 设置得很大,就可能导致有效脉宽被严重压缩,甚至出现输出异常。

一般建议:

text 复制代码
DBRED + DBFED 不要接近 PWM 有效导通时间

尤其在高频 PWM、小占空比情况下要特别注意。


十三、一句话记忆

text 复制代码
OUT_MODE 决定 DB 是否参与输出;
IN_MODE 决定 RED/FED 从哪里取输入;
POLSEL 决定 AH、AL、AHC、ALC;
DBRED 控制上升沿死区;
DBFED 控制下降沿死区;
AHC 是最常用的高电平有效互补输出模式。

十四、总结

TMS320F2837xD 的 ePWM DB 死区模块本质上是一个"边沿延时 + 极性选择 + 通道选择"的硬件模块。它的核心不是重新产生 PWM,而是在 AQ 产生的原始 PWM 基础上,对上升沿和下降沿进行延时处理。

在实际工程中,最常用配置通常是:

c 复制代码
IN_MODE  = 00;   // ePWMxA 同时作为 RED 和 FED 输入
OUT_MODE = 11;   // RED 和 FED 全部启用
POLSEL   = 10;   // AHC,高有效互补
OUTSWAP  = 00;   // 不交换输出

也就是:

text 复制代码
ePWMxA 原始 PWM
    ├── RED → OutA
    └── FED → 反相 → OutB

AH、AL、AHC、ALC 的区别不要死记硬背,可以从两个角度理解:

text 复制代码
H / L:有效电平是高还是低
C:是否互补

其中 AHC 表示高电平有效互补输出,是半桥、全桥、逆变器、电机控制中最常见的 DB 配置模式。


参考资料

  1. Texas Instruments, TMS320F2837xD Dual-Core Real-Time Microcontrollers Technical Reference Manual, SPRUHM8K, ePWM Dead-Band Generator Submodule(手册)
相关推荐
superonion062017 小时前
【DB2】【Oceanbase】使用OMS将DB2迁移到Oceanbase测试
oceanbase·db
杨云龙UP15 天前
ODA/Oracle 19c CDB/PDB 环境下报错ORA-65162:common user密码过期问题排查与处理_2026-05-15
linux·运维·数据库·oracle·dba·db
黄俊懿20 天前
复合索引设计指南:最左前缀 & 字段排座次
数据库·sql·mysql·adb·性能优化·dba·db
黄俊懿1 个月前
MySQL主从复制:从“异步“到“GTID“,数据同步的进化之路
数据库·sql·mysql·oracle·架构·dba·db
曲幽2 个月前
我用fastapi-scaff搭了个项目,两天工期缩到两小时,老板以为我开挂了
python·api·fastapi·web·celery·cli·db·alembic·fastapi-scaff
那人如此可好2 个月前
MongoDB从零基础搭建到实战
mongodb·db
程序猫A建仔2 个月前
【AI智能体】——OpenClaw(龙虾)深度研究分享(一)功能架构解读+部署全流程
人工智能·al
宝桥南山2 个月前
Microsoft Fabric - 试一下在Blazor应用中使用 GraphQL API去连接Lakehouse
microsoft·c#·asp.net·.netcore·fabric·db
Natalia_Portman3 个月前
springboot整合DolphinDB
java·数据库·spring boot·后端·db