变相位PWM模式:从原理到H桥与电机驱动实战

发布时间:2026/9/11 21:45:24
变相位PWM模式:从原理到H桥与电机驱动实战 上个月调一块H桥驱动板电机低速堵转时电流波形总是一边大一边小用示波器抓PWM才发现上下管控制脉冲不对称换到中心对齐模式后波形立刻对称了死区也好插了。这个“中心对齐模式”在很多老手册里有一个更拗口的名字叫变相位PWM模式。当年在英飞凌CCU6的文档里第一次看到“Variable Phase PWM”这个词我还以为是多路PWM之间的移相控制后来翻寄存器才发现它指的是让PWM脉冲在周期内的位置随占空比变化、同时保持中心对称的一种输出方式。这篇文章就把变相位PWM模式讲透它和普通PWM有什么区别为什么电机控制和H桥电路离不开它怎么在TC3xx这类带CCU6的MCU上配出来以及我在实际调试中踩过的采样、死区、故障保护相关的坑。适合正在做电机驱动、数字电源、BLDC控制或者刚接触高级定时器PWM的朋友。1. 变相位PWM到底是什么从三种PWM模式说起1.1 边沿对齐、中心对齐和变相位一张表分清PWM输出在定时器层面常见有三种方式模式计数方式输出脉冲特征典型应用边沿对齐PWM计数器从0加到周期值后归零所有脉冲对齐周期起点上升沿位置固定普通调光、简单电机调速、信号输出中心对齐PWM计数器先加到周期值再减到0脉冲中心固定在周期中点左右边沿对称移动电机控制、H桥、数字电源、BLDC变相位PWM中心对齐基础上脉冲位置可偏移脉冲整体可在周期内移动边沿不再严格对称全桥移相、交错并联电源、商业化大功率电机驱动很多人搞不清“中心对齐”和“变相位”的关系。简单说变相位PWM是中心对齐PWM的一种扩展能力它不仅把脉冲中心放在周期中点还允许你把脉冲整体向前或向后移动几个tick这在H桥移相控制里特别有用。有些芯片文档里干脆把这两种情况统称为“对称PWM”或“变相位PWM模式”。1.2 为什么叫“变相位”从波形数学上看本质中心对齐模式下计数器的动作像一个等腰三角形从0爬到周期值再从周期值降到0。比较寄存器CCx在上升计数和下降计数时各匹配一次输出脚翻转两次所以一个完整PWM周期对应两次比较匹配。占空比和比较值的关系是PWM频率 定时器时钟频率 / [2 × (周期寄存器值 1)]占空比 比较寄存器值 / (周期寄存器值 1)举个例子定时器时钟20MHz想输出10kHz中心对齐PWM那么周期寄存器T12PR 20MHz / (2 × 10kHz) - 1 999占空比50%时比较值500。为什么叫“变相位”因为当占空比变化时比较值变大或变小脉冲的上升沿和下降沿相位都会相对于周期起始点发生移动。如果占空比是50%脉冲正好占据周期的中间50%上升沿在25%处下降沿在75%处。如果占空比变成20%上升沿在40%处下降沿在60%处。脉冲宽度变了位置也变了相位一直在变这就是“变相位”三个字的来源。相比之下边沿对齐PWM的上升沿永远在周期起点只有下降沿在动本质上是一边固定、一边移动脉冲相位相对没那么“对称”。1.3 变相位PWM和移相PWM别搞混我在技术群里看到不少人把“变相位PWM”理解成多路PWM之间有固定相位差比如两路Buck交错180°。这个理解不能说错但和本文讨论的“单路脉冲位置随占空比移动”不是一回事。多路交错电源里的移相是让不同通道的PWM起始相位错开固定的角度比如四路交错就是每路错90°。这种移相控制很多MCU是靠多个独立定时器或者把一个定时器的多个比较通道错开触发来实现的。而变相位PWM模式强调的是单路或多路输出在同一个定时器周期内脉冲中心可以移动适合H桥全桥变换器做“移相控制”时使用。所以当你看到芯片手册里写“支持变相位PWM模式”第一反应应该是它是不是指中心对称PWM、有没有脉冲位置偏移能力而不是默认它就是多路移相。方向搞错了后面配置寄存器全都会走偏。2. 变相位PWM用在哪电机、H桥和交错电源的刚需2.1 H桥和死区变相位模式的真正用武之地H桥驱动直流电机或者做逆变器上下两个功率管串联在电源和地之间如果两个管子同时导通电源直接短路轻则驱动芯片发烫重则炸管。所以上下管的控制PWM必须互补并且要插入死区先关断下管等一小段延时再开通上管。中心对齐PWM在插死区这件事上远优于边沿对齐。原因是中心对齐模式下上下管脉冲的中心都在周期中点边沿以中点为对称轴向外拓展。插入死区后上下管的开通/关断时刻围绕中点对称分布波形天然对称电流纹波小谐波也更干净。而边沿对齐模式下上下管都在周期起点动作插死区容易导致一侧脉宽缩短、另一侧不变输出波形不对称严重时会产生直流偏磁。变相位PWM在H桥中还有一层优势可以通过微调脉冲位置来控制输出交流电压的相位这在全桥逆变器和电机弱磁控制里非常关键。2.2 BLDC和三相逆变CCU6输出3相6路PWM的逻辑做BLDC方波控制或FOC需要三对互补PWM也就是3相6路。很多带高级定时器的MCU比如英飞凌TC3xx的CCU6、STM32的高级定时器都能直接输出带死区的三相PWM。三相PWM必须在同一时刻同步更新比较值否则三个相的占空比更新时刻不一致电机相电流会出现畸变。中心对齐模式天然适合这种场景计数器在周期顶点或谷底产生更新事件软件在这个事件里更新三个通道的比较值三路输出的脉冲中心都在同一个对称轴上相位关系稳定。CCU6的T12定时器有3个通道正是为三相电机控制设计的。把T12配置成中心对齐再配上死区发生器就能直接输出6路带死区的互补PWM。这也是为什么货车、工业伺服、家用变频空调里大量芯片选择带CCU6这类外设的原因。2.3 交错并联和RGB驱动相位偏移的额外价值除了电机变相位PWM在电源领域也有很大价值。多路Buck并联时如果所有路PWM同相电感电流纹波会叠加输入输出电容压力很大。如果各路PWM相位错开纹波相互抵消输出纹波能大幅降低这就是交错并联。交错并联的相位偏移量通常是360°/NN是并联路数。虽然这更多依赖多定时器同步但如果你用带多个比较通道的CCU6就能在一个定时器周期内通过设置不同的比较值、不同的输出极性模拟出多路相位错开的PWM。RGB LED驱动也能用到这个思路。三路PWM如果都从周期起点对齐瞬间电流会叠加电源纹波明显如果把三个颜色通道的PWM相位错开不同位置瞬时电流峰值降低肉眼看不到闪烁但电源和PCB压力小很多。用变相位PWM模式做RGB混光就是这个原理。3. 实操TC3xx CCU6配置变相位PWM3.1 CCU6里和变相位模式相关的寄存器英飞凌TC3xx的CCU6单元里T12定时器承担三相PWM生成任务。要配置变相位PWM核心寄存器就这几个T12PR周期寄存器决定PWM频率CC60、CC61、CC62三个通道的比较寄存器决定占空比TCTRT12控制寄存器选择计数模式中心对齐/边沿对齐T12MSEL通道输出模式选择决定输出信号是否对称翻转T12DTC死区控制寄存器T12MODENT12输出使能寄存器这几个寄存器的具体位定义不同芯片略有差异但思路一致。最关键的位是TCTR里的T12计数模式位选成中心对齐以及T12MSEL里每个通道的输出模式选成对称双边输出这样CC6x信号在上升和下降计数时各翻转一次。3.2 初始化代码一步一步配出变相位PWM我以TC3xx寄存器操作方式为例先给出核心初始化代码。要注意不同系列的头文件寄存器名字可能不同但基本逻辑通用。#include Ifx_Ccu6.h #define DT_20MHZ 20000000UL /* T12输入时钟实际由CCU6时钟分频决定 */ #define PWM_FREQ 10000UL /* 目标PWM频率10kHz */ #define T12_PERIOD (DT_20MHZ / (2 * PWM_FREQ) - 1) /* 999 */ #define DUTY_CALC(pct) ((uint16)((T12_PERIOD 1) * (pct) / 100)) void Ccu6_VaryingPhasePwm_Init(void) { /* 1. 使能CCU6模块时钟和输出引脚具体寄存器依MCU头文件而定 */ /* CCU6_ModuleClk_Enable(); */ /* CCU6_Pin_OutputEnable(); */ /* 2. 复位T12保证配置干净 */ CCU6_T12_RESET(); /* 3. 配置T12周期值中心对齐模式下PWM周期是2*(T12PR1)个时钟 */ T12PR T12_PERIOD; /* 4. 配置TCTR选择T12为中心对齐计数模式 */ TCTR | TC_CCU6_TCTR_T12M_CENTER_ALIGNED; /* 5. 配置T12MSEL选择双边对称输出模式 */ T12MSEL TC_CCU6_T12MSEL_CENTER_SYMMETRIC; /* 6. 设置初始占空比比如50% */ CC60 DUTY_CALC(50); CC61 DUTY_CALC(50); CC62 DUTY_CALC(50); /* 7. 配置死区具体值根据功率管参数计算后面详说 */ T12DTC TC_CCU6_T12DTC_DTM(120); /* 死区计数器值 */ /* 8. 使能T12输出 */ T12MODEN 0x7F; }这个代码的要点在于先选计数模式再选输出模式最后填比较值和周期值。如果计数模式选成了边沿对齐那么同样的T12PR和CCx算出来的频率和占空比公式就变了波形也会完全不同。3.3 占空比和周期的计算别再套错公式变相位PWM中心对齐和边沿对齐的公式差别很大。边沿对齐模式下PWM周期 (T12PR 1)个时钟频率 f_t12 / (T12PR 1)。中心对齐模式下计数器要爬上去再走下来完整周期需要2 × (T12PR 1)个时钟频率 f_t12 / [2 × (T12PR 1)]。很多人在中心对齐模式下直接用边沿对齐的公式配置周期结果输出频率比预期低了一半或者在示波器上看到波形频率和预期对不上。占空比也一样边沿对齐时占空比 CCx / (T12PR 1)中心对齐时占空比 CCx / (T12PR 1)但由于周期翻倍相同的比较值在高频率下对应的占空比分辨率会变高。以20MHz定时器时钟为例模式目标频率周期寄存器T12PR50%占空比比较值实际频率边沿对齐10kHz1999100020MHz/(19991)10kHz中心对齐10kHz99950020MHz/[2×(9991)]10kHz两者最终频率一样但中心对齐的分辨率是边沿对齐的两倍因为它在上升和下降各比较一次每一份计数变化对应更小的占空比步进。如果想让占空比细调更平滑中心对齐模式有明显优势。4. 变相位PWM调试中的坑死区、采样和故障保护4.1 死区设置不当轻则波形畸变重则炸管死区是互补PWM里插入的“保险丝时间”但死区不是越大越好。死区太长输出有效脉宽被吃掉电机低速扭矩下降电源效率变低波形底部会产生平顶失真死区太短功率管还没完全关断另一路就开通上下管直通瞬间大电流直接击穿桥臂。我自己的经验是死区时间要满足死区时间 功率管关断延时t_off - 开通延时t_on的差值并且留20%~30%的余量。比如用某款常见的MOSFET关断延时典型值50ns开通延时典型值20ns最小安全死区是30ns加上温度漂移和驱动芯片延迟我一般会放大到150~200ns。在20MHz的T12时钟下每个tick是50ns那死区计数器值选3~4个tick就够了。配置完死区后别急着上大电压先用小电流挡或者示波器探头在上下管栅极量波形确认关断和开通之间有明确的空档再逐步加压这是最稳妥的做法。4.2 ADC采样时刻中心对齐模式的天然优势电机FOC控制要采相电流采样点选在什么时候很讲究。电流采样如果和PWM开关瞬间重合采到的全是开关噪声波形乱成一团。中心对齐PWM有一个天然优势计数器在顶点和谷底时PWM输出正好处于占空比翻转后的稳定阶段。很多MCU允许把ADC触发信号和定时器的上溢/下溢事件对齐让采样发生在PWM周期的顶点或谷底。这时候电流处于“续流稳定期”采到的值接近电流平均值噪声最小。STM32的高级定时器在中心对齐模式下的ADC采样配置也是一样的道理用TIMx_TRGO触发ADCTRGO选择更新事件更新事件发生在计数器上溢或下溢配合中心对齐PWM采样时刻天然落在PWM周期中点或边界。做FOC的朋友如果发现电流采样毛刺大先检查一下采样触发和PWM模式是否匹配。4.3 故障保护让PWM在过流时一秒都不敢拖变相位PWM模式下的故障保护优先级高于一切软件逻辑。电机堵转、电源过流、驱动芯片过温这些告警信号必须在微秒级关断PWM输出如果靠软件中断扫描再逐行关寄存器黄花菜都凉了。CCU6的T12支持外部故障输入一旦故障引脚电平触发T12输出立即进入安全状态所有通道强制关闭或者根据配置输出指定电平。这种硬件保护不需要CPU介入是电机驱动里必须用的功能。在调试时我会做一次彻底的故障注入测试人为把故障信号拉低用示波器抓PWM输出的下降沿和故障信号之间的延时一般要求在1~2个微秒以内。如果延时偏大先查故障输入引脚有没有配置成直接关断模式再查输出级有没有并联下拉电容拖慢关断速度。5. 常见问题与排查技巧速查配置和调试变相位PWM时下面这些问题我几乎每次都会遇到整理成一张速查表方便大家对照排查。问题现象可能原因排查思路PWM频率只有预期的一半套用了边沿对齐公式周期寄存器没有按中心对齐重新计算确认计数模式再按f fclk / [2×(T12PR1)]重新计算上下管同时导通发烫死区设置过短或根本没有插入死区示波器双通道同时抓上下管栅极确认两路PWM之间存在死区空档输出波形左右不对称T12MSEL设置的输出模式和计数模式不匹配改成对称双边输出模式确保CCx在上升和下降都产生比较匹配占空比调节非线性比较值超过了周期寄存器值限制CCx最大值小于T12PR1最好设置软件钳位过流故障时PWM无法快速关断故障输入没有配置成硬件直接关断模式检查紧急关断寄存器配置用外部信号实测关断延时ADC采样值毛刺大采样时刻和PWM开关噪声重叠把ADC触发调整到计数器顶点/谷底的中心对齐更新事件三相占空比更新不同步导致电磁转矩脉动大在周期更新中断里统一更新CC60/61/62三个比较寄存器死区时间漂移死区计数器和主定时器时钟不同频确认死区时钟分频系数必要时用独立死区时钟源表格看起来简单每一条背后都是一次现场问题。最典型的还是第一和第二项我把这两项几乎当成每次调试的必查项目先确认计数模式再确认死区有没有插进去这两步都正确PWM驱动通常就成功了一大半。排查还有一个土办法把占空比设成50%用示波器量PWM输出中心对齐模式下高电平和低电平时间应该严格相等。如果高窄低宽要么比较值算错了要么输出极性反了。6. 最后分享一点实际体会我在实际调试中发现中心对齐/变相位PWM模式和ADC采样的配合是整个电机驱动系统中最容易被低估的环节。很多人把PWM波形调对称了就以为大功告成结果电流环闭环一跑噪声大、波形乱、跑不起来回头查半天发现是ADC采样点没对齐。根据我的经验先用固定占空比开环测试把示波器探头同时接到PWM输出和ADC触发信号上确认触发点在顶点/谷底附近再做闭环这样能把“PWM问题”和“采样问题”分开定位。另外就是用变相位PWM做移相时多留意比较值的更新时机一定要在定时器更新事件里同步更新所有通道不然输出会瞬间出现毛刺。这个内容后面还可以往“多通道交错PWM生成”“硬件故障保护详细实战”方向继续写如果你已经在用变相位PWM做了具体项目欢迎在评论区聊聊你踩过的坑我看到了会回复。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询