STM32通用定时器TRC含义解析
1. TRC信号作为捕获部分的输入
在STM32定时器中,捕获/比较通道(CCx)的输入源是可以配置的。标准输入是外部引脚(TIx),但内部信号(包括来自触发控制器的信号)也可以路由到捕获通道。
-
关键配置寄存器:
TIMx_CCMRx
(Capture/Compare Mode Register) -
关键位域:
CCxS[1:0]
(Capture/Compare x Selection)-
00
: 输出 (Compare mode) -
01
: 输入,映射到TIx
(标准引脚输入) -
10
: 输入,映射到TIy
(交叉映射,y≠x) -
11
: 输入,映射到TRC
(内部触发信号) <<< 这就是您指的功能!
-
-
TRC信号来源:
-
这里的"TRC"信号直接来源于触发控制器(Trigger Controller)的输出。
-
触发控制器的输入源(TRGI)正是由
TIMx_SMCR
寄存器的TS[2:0]
位选择的(之前讨论的ITR0, ITR1, ITR2, ITR3, TI1F_ED, TI1FP1, TI2FP2, ETRF)。 -
简单路径:
TS[2:0]
选择的源 (TRGI) -> 触发控制器 -> TRC信号 -> 被CCxS[1:0]=11
选中的捕获通道。
-
-
为什么这样做?应用场景:
-
测量内部事件间隔: 捕获通道原本用于测量外部引脚信号的边沿间隔。配置为
TRC
输入后,它可以用来测量内部触发信号的间隔。 -
间接测量外部事件: 例如,将
TS[2:0]
配置为TI1F_ED
(TI1引脚上的任何边沿作为触发源TRGI)。当TI1引脚有边沿时,它会产生TRGI信号,触发控制器输出TRC信号。如果配置一个捕获通道(如CC4)的CCxS=11
(输入源选TRC),那么CC4就能捕获到这个TRC信号(即TI1边沿事件)发生的时刻。这样,即使信号没有直接连接到CC4引脚,也能通过TRC间接捕获其时间戳。 -
测量定时器同步/触发事件: 如果TRGI源是另一个定时器的TRGO(
TS=ITRx
),那么捕获通道可以精确测量主定时器发出触发信号的时间间隔。 -
节省引脚/复杂路由: 当外部信号已经连接到某个输入通道(如TI1),但你想用另一个捕获通道(如CC2)来测量它时,可以通过
TS=TI1F_ED
+CC2S=11
实现,而不需要把物理信号再连到CC2的引脚。
-
总结: 将捕获通道的输入源配置为TRC
,实质上是让捕获通道去“监听”定时器内部触发控制器产生的信号。这个信号源于TS[2:0]
选择的触发源(TRGI),使得捕获功能可以脱离外部引脚,用于测量内部事件或间接测量外部事件。
2. TRC信号与无刷电机(BLDC)驱动
在STM32(尤其是带高级定时器TIM1/TIM8的型号)驱动BLDC电机时,触发控制器(TRC是其输出体现)和内部连接扮演着核心角色,主要用于实现基于霍尔传感器的换相。
-
关键需求:
-
BLDC电机需要6步换相。
-
霍尔传感器(通常3个)输出信号(H1, H2, H3)指示转子位置,决定何时切换到下一相。
-
换相点需要精确、低延迟地触发定时器更新PWM输出(改变通道开关状态)。
-
-
如何实现(典型方案):
-
霍尔信号输入: 将3个霍尔传感器信号连接到定时器的输入通道(通常是TI1, TI2, TI3)。
-
配置霍尔接口模式:
-
在
TIMx_CR2
寄存器中设置TI1S
位(有时也叫HALLSEN
),将TI1, TI2, TI3配置为组合的霍尔模式输入。 -
定时器内部硬件会自动解码TI1/TI2/TI3上的信号,生成一个综合的转子位置状态。
-
-
霍尔事件作为触发源:
-
关键点: 每当检测到有效的霍尔传感器信号变化(即转子位置改变,需要换相时),定时器硬件会自动产生一个内部触发信号(TRGI)。这个信号本质上等价于将
TS[2:0]
配置为TI1F_ED
(或类似)产生的效果,但它是霍尔模式特有的硬件行为。 -
这个触发信号(TRGI)输入到触发控制器。
-
-
触发控制器产生TRC并驱动动作:
-
触发控制器接收到这个代表换相点的TRGI信号。
-
触发控制器可以配置(通过
TIMx_SMCR
)在接收到此TRGI时执行特定动作:-
Slave Mode: Reset Mode (
SMS=100
): 最常见!收到霍尔触发信号(TRGI)后,定时器计数器立即复位 (CNT=0
)。 -
(可选) Gate Mode, Trigger Mode等。
-
-
同时,触发控制器会产生TRC信号(作为其活动的输出)。
-
-
TRC信号触发换相动作:
-
配置主模式输出 (
TIMx_CR2.MMS
): 将主模式输出设为Update Event
(MMS=010
最常见) 或Enable
。 -
结果: 当触发控制器因霍尔事件产生TRC信号时,它会立刻在TRGO引脚上输出一个更新事件(或使能事件)信号。
-
级联或自反馈:
-
这个TRGO信号可以连接到自身定时器的从模式触发输入(TRGI)(如果支持),形成一个闭环。
-
更常见的是连接到负责产生PWM的定时器(通常是同一个高级定时器本身) 的TRGI输入。
-
-
触发PWM更新: 作为“从”的PWM定时器,配置其从模式为
Trigger Mode
(SMS=110
) 或Reset Mode
(SMS=100
)。当它收到来自“主”(即它自己或另一个定时器)的TRGO信号(代表换相点)时,它会:-
立即复位计数器 (
SMS=100
): 这确保了PWM波形在新换相周期的精确起点开始。 -
和/或: 产生一个更新事件(UEV)。这个更新事件是关键!
-
-
更新事件加载新PWM参数: 在高级定时器中,更新事件会:
-
将预装载寄存器(
ARR
,CCRx
)的值更新到影子寄存器。 -
在BLDC驱动中,预先根据下一个换相状态计算好的PWM占空比、通道极性(有效电平)、通道开关状态(死区控制)、刹车状态等参数,会在更新事件发生时一次性生效! 这就是实现无缝、精确换相的核心机制。硬件自动在换相点切换所有PWM设置,避免了软件延迟。
-
-
-
-
TRC在BLDC驱动中的核心作用:
-
桥梁: TRC是霍尔传感器事件(转子位置变化)转换为控制PWM定时器立即更新/复位的关键内部信号。
-
实现硬件自动换相: 通过配置触发控制器和主/从模式,利用TRC信号(最终体现为TRGO),可以在几乎零延迟(硬件自动完成)的情况下,在精确的换相点复位PWM计数器并加载新的预装载值(ARR, CCRx)和配置(CCER, BDTR等),实现平滑、高效的换相。软件只需要在中断中(如捕获中断或更新中断)计算好下一个换相周期的PWM参数并写入预装载寄存器即可。
-
总结: 在STM32无刷电机驱动中,“TRC”信号(更准确说是触发控制器的输入TRGI和输出TRC/TRGO构成的路径)是实现基于霍尔传感器的硬件自动换相的关键基础设施。它确保了换相动作由硬件在检测到霍尔信号跳变后立即、精确地触发,将PWM输出切换到下一个状态,这是高效可靠驱动BLDC电机的基石。高级定时器的强大之处就在于将这些复杂的联动逻辑用硬件实现。