3. ePWM 模块进阶:时基周期、比较逻辑、动作限定器、死区插入、斩波与故障捕获

各位同学,咱们接着聊 ePWM。上一章我们把基础框架搭起来了,这一章要深入进去,看看那些真正让 ePWM 变得强大的“内功心法”。说白了,前面是让你能跑起来,这一章是让你跑得稳、跑得巧。

3.1 时基周期:不只是个计数器

时基周期(TBPRD)是 ePWM 模块的心脏。它决定了 PWM 的开关频率。但很多人用起来就设一个固定值,其实这里面有不少门道。

频率计算
PWM 频率 = SYSCLKOUT / (2 × TBPRD × TBCLK 分频系数)

举个例子,系统时钟 100MHz,TBCLK 不分频,想要 20kHz 的 PWM:
TBPRD = 100,000,000 / (2 × 20,000) = 2500

嗯,这里要注意:TBPRD 是 16 位的,最大值 65535。所以最低频率能到多少?你自己算算看。

我个人的习惯:在项目初期,我会把 TBPRD 设成一个变量,而不是硬编码。这样调试时改频率特别方便。我曾经在一个电机驱动项目里,就因为频率设得太死,导致换了个电机就得重新编译,那叫一个痛苦。

时基周期同步
多相电源、电机控制这些场景,多个 ePWM 模块需要同步。C2000 提供了相位同步机制:

  • 主模块产生同步信号(SYNCO)
  • 从模块接收同步信号(SYNCI)
  • 通过 TBPHS 寄存器设置相位偏移

说白了,就是让几个 ePWM 模块“对齐”一下。我见过有人用软件延时来做同步,结果温度一变,相位就跑了。用硬件同步才是正道。

3.2 比较逻辑:精确到纳秒的时机控制

比较逻辑是 ePWM 的“眼睛”。它时刻盯着时基计数器的值,一旦匹配就触发动作。

CMPA 和 CMPB 是两个比较寄存器。它们可以工作在两种模式:

模式 说明 典型应用
立即加载 写入后立即生效 动态调整占空比
影子加载 在特定事件(如周期匹配)时更新 避免 PWM 波形畸变

避坑指南:我曾经在数字电源项目里,直接修改 CMPA 寄存器,结果 PWM 波形中间出现了一个“毛刺”,把 MOSFET 给烧了。后来改用影子加载模式,问题就解决了。记住:影子加载是你的朋友。

比较事件可以触发中断。这在需要精确控制采样时刻的场合特别有用——比如在 PWM 的中间点触发 ADC 采样。

3.3 动作限定器:让 PWM 听话

动作限定器(AQ)是 ePWM 的“手”。它根据比较事件,决定输出是高电平、低电平、翻转还是不变。

常见的动作配置:

  • 递增计数模式:CTR = 0 时置高,CTR = CMPA 时置低 → 上升沿调制
  • 递减计数模式:CTR = CMPA 时置高,CTR = 0 时置低 → 下降沿调制
  • 增减计数模式:CTR = CMPA 时置低,CTR = CMPB 时置高 → 对称 PWM

你想想看,为什么增减计数模式能产生对称 PWM?因为计数器先增后减,比较点自然就对称了。

我建议:刚开始学的时候,把动作配置画成时序图。我当年就是这么干的,画了十几张图之后,那些寄存器配置就再也忘不掉了。

3.4 死区插入:保护你的功率管

死区插入(DB)是 ePWM 的“安全气囊”。在上下桥臂切换时,必须插入一段“同时关断”的时间,防止直通短路。

死区模块的工作原理:

  • 上升沿延时(RED):让开通信号延迟
  • 下降沿延时(FED):让关断信号提前

死区时间 = RED + FED(具体看配置模式)

死区模式有四种:

  1. 独立模式:上下桥臂独立设置延时
  2. 上升沿延时模式:只延时上升沿
  3. 下降沿延时模式:只延时下降沿
  4. 上升/下降沿延时模式:两个沿都延时

警告:死区时间不是越大越好。太大会导致波形失真,电机电流谐波增加。太小又可能烧管子。我一般从 100ns 开始试,用示波器看波形,直到没有直通风险为止。

死区补偿是个高级话题。简单说,就是在软件里把死区造成的电压损失补回来。嗯,这个我们后面专门讲。

3.5 斩波:高频载波调制

斩波(PC)模块,说白了就是把 PWM 信号再“切碎”。它用高频载波(通常几 MHz)去调制 PWM 信号。

为什么要这么做?

  • 变压器驱动:脉冲变压器需要交流信号,斩波后变成高频脉冲串
  • 隔离驱动:光耦或磁耦需要一定的频率才能正常工作
  • EMI 控制:把能量分散到更宽的频带上

斩波参数:

参数 说明 典型值
载波频率 斩波时钟频率 1-10 MHz
占空比 载波的高电平比例 50%
第一个脉冲宽度 启动时的特殊脉冲 可配置

我记得有个客户做 IGBT 驱动,变压器总是饱和。后来我建议他用斩波模式,把连续脉冲变成高频脉冲串,问题就解决了。有时候,一个功能模块就能救你一命。

3.6 故障捕获:系统的最后一道防线

故障捕获(TZ)是 ePWM 的“紧急刹车”。当系统检测到过流、过压等异常时,它能立即将 PWM 输出强制到安全状态。

故障源可以是:

  • 外部引脚(TZ1-TZ6)
  • 内部比较器输出
  • 软件强制触发

故障响应动作:

  1. 强制高:输出高电平(很少用)
  2. 强制低:输出低电平(常用)
  3. 高阻:输出呈高阻态(用于半桥驱动)
  4. 无动作:忽略故障(调试用)

关键点:故障捕获是硬件级别的响应,延迟只有几个时钟周期。比软件中断快得多。所以,任何可能损坏硬件的场景,都必须用故障捕获来保护。

故障后的恢复方式有两种:

  • 一次性触发:故障发生后,PWM 锁死,需要软件清除标志位才能恢复
  • 周期性触发:故障消失后自动恢复(慎用!)

我曾经在一个变频器项目里,用了周期性恢复模式。结果电机堵转时,PWM 反复重启,把 IGBT 模块给震坏了。从那以后,我所有项目都用一次性触发模式。

小结

这一章我们讲了 ePWM 的六个核心进阶功能。时基周期是骨架,比较逻辑是眼睛,动作限定器是手,死区插入是安全气囊,斩波是特殊武器,故障捕获是最后防线。

这些功能单独看都不复杂,但组合起来就能实现各种复杂的控制策略。下一章我们会讲 ePWM 的中断和同步,到时候这些模块会协同工作,威力更大。

记住一句话:纸上得来终觉浅,绝知此事要躬行。找个开发板,把这些功能都试一遍,比看十遍文档都管用。