TI C2000 DSP ePWM模块实战:从基础配置到电机驱动与电源应用

📅 2026/8/2 21:41:04 👁️ 阅读次数 📝 编程学习
TI C2000 DSP ePWM模块实战:从基础配置到电机驱动与电源应用

1. 项目概述:从芯片选型到PWM核心价值

最近在整理手头的几个电机控制项目,发现无论是无刷直流电机(BLDC)还是永磁同步电机(PMSM),其驱动核心都绕不开一个关键模块:PWM(脉冲宽度调制)。而在我经手的多个基于TI C2000系列DSP的方案中,TMS320F28335及其增强型号F28355出现的频率极高。这次笔记,我就以F28355为例,深入聊聊其增强型PWM(ePWM)模块的配置心得。这不是一份照搬数据手册的说明书,而是结合了实际调参、调试甚至“踩坑”经验后的实战总结,目标是让你看完后,不仅能配出PWM,更能理解为什么要这样配,以及如何应对那些数据手册里不会写的“幺蛾子”。

F28355作为F28335的升级版,主频更高、外设更丰富,但其ePWM模块的核心思想一脉相承。PWM本质上是一种用数字信号模拟模拟量的方法,通过调节一个周期固定方波的“高电平时间”(即占空比),来控制平均电压或电流。在电机驱动里,它直接决定了施加在电机绕组上的电压,进而控制转速和扭矩;在电源领域,它是开关电源稳压的核心;甚至LED调光、舵机控制都离不开它。所以,掌握ePWM的配置,是玩转C2000进行实时控制的基础功。

2. ePWM模块架构深度解析

2.1 模块概览与核心子模块协同

F28355的ePWM模块非常强大,一个芯片上通常有多个独立的ePWM模块(如ePWM1, ePWM2...)。每个ePWM模块都不是一个简单的计数器,而是一个由多个精密协同的子模块构成的“小型控制系统”。理解这个架构,是进行灵活配置的前提。

每个ePWM模块的核心是一个时基子模块(TB),它产生最基础的时基计数器TBCTR,这个计数器的计数模式(递增、递减、先增后减)决定了PWM的计数形式。TBCTR的值会实时与比较子模块(CC)中的寄存器值进行比较,当两者匹配时,就会产生事件,进而通过动作限定子模块(AQ)来改变输出引脚(EPWMxA和EPWMxB)的电平状态。这就是生成PWM波最基础的路径。

但远不止于此。死区子模块(DB)会在AQ输出的原始动作上,插入可编程的上升沿和下降沿延迟,这是驱动半桥或全桥电路防止上下管直通的关键。PWM斩波子模块(PC)可以生成高频载波信号,常用于驱动需要高频开关的栅极驱动器。事件触发子模块(ET)则负责在特定时间点(如计数器等于0、等于周期值、等于比较值时)产生中断或启动ADC转换,实现精准的采样控制。最后,故障保护子模块(TZ)是安全底线,当外部引脚检测到过流、过压等故障时,它能强制PWM输出高阻态或固定安全状态。

这些子模块通过精密的寄存器配置串联起来,就像一条生产线:时基模块提供节拍,比较模块设定动作点,动作限定模块执行开关,死区模块确保安全间隔,而触发和故障模块则负责监督和应急。配置ePWM,本质上就是在配置这条生产线上各个工位的参数和联动关系。

2.2 关键寄存器组与功能映射

配置是通过写寄存器完成的。虽然TI提供了库函数,但直接理解寄存器能让你在出问题时更快地定位。以下是一些最核心的寄存器组及其功能:

  1. 时基子模块寄存器(TB)

    • TBCTL:控制寄存器,配置计数模式(CTRMODE)、相位使能(PHSEN)、时钟预分频(HSPCLKDIVCLKDIV)。
    • TBSTS:状态寄存器,查看计数器方向等。
    • TBPHS:相位寄存器,用于多个ePWM模块同步时设置相位偏移。
    • TBPRD:周期寄存器,这是最重要的寄存器之一,它设定了PWM波的周期。TBCTR从0计数到TBPRD(递增模式)或从TBPRD递减到0(递减模式),或在此区间往复(先增后减模式)。
  2. 比较子模块寄存器(CC)

    • CMPCTL:控制影子加载模式。为了防止PWM周期中间比较值突变导致波形畸形,通常采用影子寄存器。即你写入CMPA的值不会立即生效,而是在TBCTR=0(或TBPRD)时,从影子寄存器加载到活动寄存器。
    • CMPACMPB:比较值寄存器。TBCTR的值会与它们比较,产生CTR=CMPACTR=CMPB事件。通过改变CMPA/B,就能调节PWM的占空比。
  3. 动作限定子模块寄存器(AQ)

    • AQCTLAAQCTLB:控制寄存器。它们定义了当发生特定事件(如CTR=PRDCTR=0CTR=CMPA上升/下降沿)时,输出引脚EPWMxA和EPWMxB应该执行什么动作:置高(SET)、置低(CLEAR)、翻转(TOGGLE)或无操作(NONE)。PWM波形的基本形状就是在这里被“画”出来的。
  4. 死区子模块寄存器(DB)

    • DBCTL:控制寄存器,选择输入信号源(通常来自AQ的输出)和死区模式。
    • DBRED:上升沿延迟寄存器。信号从低变高时,延迟多少个时钟周期后才输出高。
    • DBFED:下降沿延迟寄存器。信号从高变低时,延迟多少个时钟周期后才输出低。
    • 通过组合DBREDDBFED,可以生成多种互补带死区的PWM对,这是驱动桥式电路的标准配置。

注意:在电机控制等实时性要求高的场合,务必使用影子寄存器来更新CMPACMPB甚至TBPRD。直接写入活动寄存器可能导致当前周期内比较点错乱,产生非对称的脉冲,可能引起电机转矩脉动甚至桥臂直通。

3. 单路PWM与互补带死区PWM配置实战

3.1 单路PWM输出配置步骤与代码

我们先从最简单的单路PWM开始,假设使用ePWM1模块,输出引脚为EPWM1A,目标频率为10kHz,系统时钟SYSCLKOUT为150MHz。

第一步:计算周期值。PWM频率由时基时钟和周期寄存器TBPRD决定。时基时钟TBCLK = SYSCLKOUT / (HSPCLKDIV * CLKDIV)。我们先设置预分频HSPCLKDIV=2CLKDIV=2,则TBCLK = 150MHz / (2*2) = 37.5MHz。 对于递增计数模式,PWM周期Tpwm = (TBPRD + 1) / TBCLK。 所以,TBPRD = Tpwm * TBCLK - 1 = (1/10000) * 37.5e6 - 1 = 3750 - 1 = 3749

第二步:初始化时基模块。

// 假设使用TI的Driverlib库 EPWM_setTimeBasePeriod(EPWM1_BASE, 3749); // 设置周期值 EPWM_setPhaseShift(EPWM1_BASE, 0); // 无相位偏移 EPWM_setTimeBaseCounter(EPWM1_BASE, 0); // 计数器从0开始 EPWM_setTimeBaseCounterMode(EPWM1_BASE, EPWM_COUNTER_MODE_UP); // 设置为递增模式 EPWM_setClockPrescaler(EPWM1_BASE, EPWM_CLOCK_DIVIDER_2, // CLKDIV = 2 EPWM_HSCLOCK_DIVIDER_2); // HSPCLKDIV = 2

第三步:配置比较子模块与动作限定。我们希望产生一个占空比为30%的PWM波。比较值CMPA = TBPRD * DutyCycle = 3749 * 0.3 = 1124.7,取整1125。 我们设定动作规则:计数器等于0时,将EPWM1A置高;计数器等于CMPA时,将EPWM1A置低。这样就能产生一个正脉冲。

// 配置CMPA的影子加载模式,在CTR=0时加载 EPWM_setCounterCompareShadowLoadMode(EPWM1_BASE, EPWM_COUNTER_COMPARE_A, EPWM_COMP_LOAD_ON_CNTR_ZERO); EPWM_setCounterCompareValue(EPWM1_BASE, EPWM_COUNTER_COMPARE_A, 1125); // 设置CMPA值 // 配置动作限定器 EPWM_setActionQualifierAction(EPWM1_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_HIGH, // CTR=0时置高 EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO); EPWM_setActionQualifierAction(EPWM1_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW, // CTR=CMPA时置低 EPWM_AQ_OUTPUT_ON_COUNTER_COMPARE_A);

第四步:使能引脚。还需要在GPIO复用配置中,将对应的引脚设置为EPWM功能。这通常在InitGPIO()函数中完成。

GPIO_setPinConfig(GPIO_0_EPWM1A); // 假设EPWM1A对应GPIO0 GPIO_setPadConfig(0, GPIO_PIN_TYPE_STD); // 推挽输出

至此,一个占空比30%、频率10kHz的单路PWM就从EPWM1A引脚输出了。你可以通过改变CMPA的值(在影子寄存器模式下,安全地在一个周期结束时更新)来动态调整占空比。

3.2 互补带死区PWM配置详解(针对H桥驱动)

驱动一个H桥或半桥,需要两路互补的PWM信号(例如EPWM1A和EPWM1B),并且必须插入死区时间防止上下管同时导通。配置思路如下:

  1. 时基配置:与单路类似,设置相同的周期和计数模式(通常使用递增-递减模式以产生对称PWM,这对电机控制中减少谐波有益)。

  2. 动作限定配置:这是关键。我们以EPWM1A为高侧驱动,EPWM1B为低侧驱动(假设高电平有效)为例,配置对称PWM。

    • 目标:在周期中心,CMPA的值控制占空比。我们希望EPWM1A和EPWM1B信号互补。
    • 配置动作:
      • TBCTR等于CMPA时(上升沿匹配),EPWM1A置低,EPWM1B置高
      • TBCTR等于CMPA时(下降沿匹配,在递减计数阶段),EPWM1A置高,EPWM1B置低
    • 这样,在TBCTR从0递增到CMPA期间,EPWM1A高,EPWM1B低;从CMPA递减到0期间,EPWM1A低,EPWM1B高。两者波形互补。
  3. 死区模块配置:将上述AQ输出的信号(设为A和B)送入死区模块。死区模块有几种经典模式,比如“高侧有效信号插入上升沿延迟,低侧有效信号插入下降沿延迟”(Active High Complementary模式)。我们需要设置DBREDDBFED的值。

    • 死区时间Tdb通常根据功率管的开关特性决定,比如设为1微秒。
    • 需要的时钟周期数DBRED = DBFED = Tdb * TBCLK。假设TBCLK=37.5MHzTdb=1us,则DBRED = DBFED = 1e-6 * 37.5e6 = 37.5,取整38。
    • 配置后,死区模块会确保EPWM1A的上升沿相对于原始信号A延迟DBRED个时钟,EPWM1B的下降沿相对于原始信号B延迟DBFED个时钟,从而在两者之间形成一段同时为低电平的死区时间。

核心代码片段:

// 1. 时基配置为递增-递减模式 EPWM_setTimeBaseCounterMode(EPWM1_BASE, EPWM_COUNTER_MODE_UP_DOWN); EPWM_setTimeBasePeriod(EPWM1_BASE, 3749); // 周期值,频率计算需注意,UP_DOWN模式周期为2*TBPRD/TBCLK // 2. 配置比较值与影子加载 EPWM_setCounterCompareShadowLoadMode(EPWM1_BASE, EPWM_COUNTER_COMPARE_A, EPWM_COMP_LOAD_ON_CNTR_ZERO); EPWM_setCounterCompareValue(EPWM1_BASE, EPWM_COUNTER_COMPARE_A, dutyCycleValue); // dutyCycleValue为比较值 // 3. 配置动作限定器(生成互补原始信号) // 当TBCTR = CMPA 且计数方向向上时(上升沿),EPWM1A置低,EPWM1B置高 EPWM_setActionQualifierAction(EPWM1_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_COUNTER_COMPARE_A_UP); EPWM_setActionQualifierAction(EPWM1_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_COUNTER_COMPARE_A_UP); // 当TBCTR = CMPA 且计数方向向下时(下降沿),EPWM1A置高,EPWM1B置低 EPWM_setActionQualifierAction(EPWM1_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_COUNTER_COMPARE_A_DOWN); EPWM_setActionQualifierAction(EPWM1_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_COUNTER_COMPARE_A_DOWN); // 4. 配置死区模块 EPWM_setDeadBandDelayMode(EPWM1_BASE, EPWM_DB_RED, EPWM_DB_FED); // 使能上升沿和下降沿延迟 EPWM_setDeadBandDelayPolarity(EPWM1_BASE, EPWM_DB_POLARITY_ACTIVE_HIGH_COMPLIMENTARY); // 设置为高有效互补模式 EPWM_setRisingEdgeDeadBandDelay(EPWM1_BASE, 38); // 设置上升沿延迟 EPWM_setFallingEdgeDeadBandDelay(EPWM1_BASE, 38); // 设置下降沿延迟 // 选择死区输入信号源为AQ的输出 EPWM_setDeadBandInputSignal(EPWM1_BASE, EPWM_DB_INPUT_EPWMA);

3.3 高级同步与相位控制

在复杂系统中,如三相逆变器驱动三相电机,需要三个相位互差120度的PWM对。F28355的ePWM模块支持硬件同步。你可以将ePWM1配置为主模块,将其CTR=0事件(通过EPWMSYNCO信号)输出,然后配置ePWM2和ePWM3为从模块,使能相位加载(PHSEN=1),并将主同步信号作为其时钟输入。通过设置从模块的TBPHS寄存器为不同的值,就能实现精确的相位偏移。

例如,对于50kHz的PWM,周期对应TBPRD=1499(假设TBCLK=75MHz)。要实现120度相位差,时间差为(1/50000)/3 ≈ 6.67us。对应的相位寄存器值TBPHS = 6.67e-6 * 75e6 = 500。那么,ePWM2的TBPHS设为0,ePWM3的TBPHS设为500,ePWM4的TBPHS设为1000(如果使用),就能实现精确的120度间隔。这种硬件同步避免了软件干预的延迟和抖动,对于高性能电机驱动至关重要。

4. 关键参数计算、调试与故障排查实录

4.1 频率、占空比、死区时间计算精要

计算是配置的基础,但实际中常常因为忽略细节而出错。

  • PWM频率计算

    • 递增计数模式(UP)Fpwm = TBCLK / (TBPRD + 1)
    • 递减计数模式(DOWN)Fpwm = TBCLK / (TBPRD + 1)
    • 递增-递减计数模式(UP-DOWN)Fpwm = TBCLK / (2 * TBPRD)这是最容易搞错的一点!因为在UP-DOWN模式下,计数器从0到TBPRD再到0才算一个完整周期,所以实际周期时钟数是2*TBPRD
  • 占空比计算

    • UP模式Duty = CMPA / (TBPRD + 1)
    • DOWN模式Duty = (TBPRD - CMPA) / (TBPRD + 1)(取决于动作配置)
    • UP-DOWN模式(对称PWM)Duty = CMPA / TBPRD。在对称PWM中,高电平时间集中在周期中心,CMPA控制的是高电平的半宽。例如,TBPRD=1000,CMPA=300,则高电平时间为2*300=600个TBCLK,占空比Duty=600/(2*1000)=30%。许多库函数提供的占空比设置API内部已经做了这个转换,但自己直接写寄存器时必须清楚。
  • 死区时间计算Tdead = (DBRED or DBFED) / TBCLK。这里DBREDDBFED是寄存器值,单位是TBCLK周期。注意:死区模块的输入时钟可能有时钟预分频,需根据DBCTL寄存器确认。通常它与TBCLK同源。

实操心得:在项目初期,我强烈建议在CCS的表达式窗口或观察窗口,实时监控TBCTRCMPACMPB这些关键寄存器的值。同时,用示波器测量实际输出的PWM频率和占空比,与计算值对比。经常能发现因为预分频设置不对、计数模式理解错误导致的频率偏差。养成“理论计算 -> 代码配置 -> 实测验证”的闭环习惯,能节省大量调试时间。

4.2 示波器调试技巧与常见波形问题

示波器是调试PWM最好的朋友。连接好探头后,重点关注以下几点:

  1. 基础波形验证:首先看单路PWM,检查频率、占空比是否与设定一致。检查上升/下降沿是否干净,有无过冲或振铃(这可能与PCB布局、驱动电阻有关)。

  2. 互补波形与死区验证:将EPWMxA和EPWMxB通道同时显示,使用示波器的延迟扫描或放大功能,仔细观察两个信号切换的瞬间。你应该能看到一段明显的“空白区”,即死区时间。测量这个空白区的实际时间,是否与寄存器设置值相符。一个常见的错误是死区时间看起来不对称或不存在,这通常是因为死区模块的输入信号源(DBCTL[IN_MODE])或输出极性(DBCTL[POLSEL])配置错误。

  3. 同步信号观察:如果使用了多模块同步,可以用一个空闲的GPIO引脚,配置其在同步事件发生时翻转,然后用示波器测量这个引脚和各个ePWM输出之间的时序关系,验证相位偏移是否准确。

典型问题与波形诊断:

问题现象可能原因排查步骤
无PWM输出1. 模块时钟未使能。
2. GPIO引脚未正确复用为EPWM功能。
3. 时基计数器未启动(TBCTL[FREE_SOFT]被设置为停止)。
4. 输出被强制拉高/低(检查AQ输出强制寄存器AQSFRC)。
1. 检查外设时钟控制寄存器(PCLKCRx)。
2. 检查GPIO复用配置寄存器(GPxMUX)。
3. 检查TBCTL寄存器,确保计数器在运行。
4. 检查AQSFRCAQCSFRC寄存器。
PWM频率不对1.TBCLK预分频计算错误。
2.TBPRD值计算错误,特别是UP-DOWN模式。
3. 系统时钟SYSCLKOUT配置有误。
1. 核对TBCTL[HSPCLKDIV][CLKDIV]
2. 重新计算TBPRD,区分计数模式。
3. 检查系统初始化代码中的PLL配置。
占空比不受控或跳动1.CMPA影子寄存器未使能,在任意时刻写入了活动寄存器。
2. 中断服务程序中更新CMPA的时机不对,错过了加载点。
3. 写CMPA的语句被编译器优化。
1. 确认CMPCTL[LOADAMODE]配置为在CTR=0CTR=TBPRD时加载。
2. 确保在CTR=0的中断中或安全的时间点更新比较值。
3. 将CMPA变量声明为volatile
互补信号有重叠(无死区)1. 死区模块未使能(DBCTL[OUT_MODE]=0)。
2.DBREDDBFED寄存器值为0。
3. 死区输入信号选择错误。
1. 检查DBCTL[OUT_MODE]是否设置为需要的模式(如0x3)。
2. 检查DBRED/DBFED寄存器值。
3. 检查DBCTL[IN_MODE],确保选择AQ输出作为源。
高精度模式下波形有毛刺1. 高分辨率周期(HRP)或占空比(CMPAHR)控制时,微边沿定位(MEP)逻辑未校准或校准错误。
2. 系统时钟抖动太大。
1. 运行TI提供的MEP校准例程,并正确配置HRCNFG寄存器。
2. 检查电源和时钟源的稳定性。

4.3 故障保护(TZ)模块的紧急应用

在功率电路中,故障保护是最后的安全网。F28355的ePWM模块与GPIO上的故障输入引脚(TZn)直接相连。当这些引脚被触发(通常由比较器电路驱动,检测过流),ePWM可以立即响应,无需CPU干预。

配置故障保护主要涉及:

  1. 配置TZ引脚:将对应的GPIO配置为异步故障输入功能,并设置滤波参数。
  2. 配置ePWM的TZ子模块:决定当故障发生时,每个ePWM输出通道采取什么动作(TZCTL寄存器)。常见动作有:
    • TZ_FORCE_HI:强制输出高(可能用于关断上管,开通下管进行刹车)。
    • TZ_FORCE_LO:强制输出低(安全关断)。
    • TZ_HIZ:强制输出高阻态(最常用的安全状态)。
  3. 选择触发模式:是单次触发(OST)还是周期触发(CBC)?OST模式下,故障发生后需要软件清除标志位才能恢复PWM输出;CBC模式下,每个PWM周期都会检查,如果故障消失则自动恢复。电机驱动中通常使用CBC模式,实现逐周期限流。

一个关键的避坑点:故障发生后,即使故障信号消失,ePWM输出也可能被锁存在安全状态。你必须确保在安全条件下,正确清除故障标志位TZCLR寄存器),否则PWM将无法自动恢复。清除标志的时机非常重要,通常需要在确认故障原因已排除后,在一个安全的软件流程中进行。

5. 从基础到进阶:不同应用场景下的配置策略

掌握了基本配置后,ePWM模块的灵活性才能体现出来。不同的应用场景需要不同的配置策略。

5.1 电机控制中的SVPWM实现

对于空间矢量脉宽调制(SVPWM),需要生成三相对称、相位互差120度的PWM波。利用ePWM的同步和相位功能可以轻松实现硬件同步。通常的做法是:

  • 将一个ePWM模块(如ePWM1)设为主模块,工作在UP-DOWN模式。
  • 将另外两个模块(ePWM2, ePWM3)设为从模块,接收主模块的同步信号。
  • 为ePWM2和ePWM3设置不同的TBPHS值,实现固定的120度相位差。
  • 在每个PWM周期(CTR=0CTR=TBPRD的中断)中,根据Clark和Park变换计算出的新的电压矢量,更新三个模块的CMPA寄存器(使用影子寄存器),以生成所需占空比的PWM波。这种硬件同步保证了三相PWM的严格相位关系,软件只需负责计算占空比。

5.2 数字电源中的移相全桥控制

在移相全桥拓扑中,需要四路PWM,两两互补,并且桥臂之间需要可调的相位差(移相角)来实现软开关。这可以借助ePWM的相位加载和同步功能来实现更复杂的联动。

  • 使用两个ePWM模块(如ePWM1和ePWM2)分别生成两个半桥的互补PWM对(带死区)。
  • 将ePWM1设为主模块,ePWM2设为从模块。
  • 通过动态改变ePWM2的TBPHS寄存器值,就能实时调整两个半桥之间的相位差,即移相角。这个更新同样需要在同步事件的安全点进行,通常也是在主模块的周期中断里完成。

5.3 高精度PWM与HRPWM技术

当需要的PWM分辨率超过时基时钟的限制时(例如,150MHz系统时钟下,20kHz的PWM周期对应7500个计数点,分辨率约为1/7500),就需要用到高分辨率PWM(HRPWM)技术。F28355的HRPWM利用微边沿定位器(MEP),通过数字延迟线在传统的时钟边沿之间再插入精细的时间调整,可以将分辨率提高8-12倍。

配置HRPWM的关键步骤:

  1. 使能HRPWM:在HRCNFG寄存器中使能对应通道的高分辨率模式(针对周期或占空比)。
  2. MEP校准:必须运行TI提供的校准程序。这个程序会测量芯片内部MEP步进的实际时间,并将校准值写入HRMSTEP寄存器。不同芯片、不同温度下的MEP步长时间会有差异,因此校准至关重要。
  3. 使用高分辨率寄存器:使用CMPAHR寄存器(或TBPRDHR)来存放高分辨率部分的值(通常是最低8位)。CMPA存放整数部分,CMPAHR存放小数部分,两者共同决定精确的边沿位置。
  4. 注意跨时钟域:写CMPAHRCMPA需要遵循特定的顺序(通常先写CMPAHR),并且要注意影子加载机制。

个人体会:HRPWM功能非常强大,但对于开关频率很高的应用(如>500kHz),由于每个开关周期内可用的MEP步数有限,其精度提升效果会减弱。此外,MEP校准值对温度和电压敏感,在对精度要求极高的场合,可能需要考虑在线校准或温度补偿。

5.4 与ADC模块的联动触发

在电机控制或数字电源中,经常需要在PWM波形的特定时刻(如中心点或谷底)进行电流采样,以获得最准确的数值。ePWM的事件触发(ET)子模块可以完美实现这一点。 你可以配置ePWM在CTR=0CTR=TBPRDCTR=CMPACTR=CMPB等事件时,产生一个触发脉冲(EPWMxSOCAEPWMxSOCB)。这个脉冲可以直接连接到ADC模块,启动其转换序列。 例如,在UP-DOWN模式的中心对齐PWM中,通常将采样点设置在CTR=TBPRD(周期中点,此时开关管状态稳定,电流纹波小)。只需简单配置ETPSETSEL寄存器,就能实现硬件自动触发ADC,完全无需CPU干预,保证了采样时刻的精确性和实时性。