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)的输出(或可理解为路由),但此为来自本定时器内部的输出或者可以理解为本定时器内部的路由,与提供给该定时器外部的(如其他定时器或DAC等片内外设)TRGO输出信号由很大的不同。

    • 触发控制器的输入源(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),但你想用另一个捕获通道(如CC3)来测量它时,可以通过TS=TI1F_ED 并且 CC3S=11实现,而不需要把物理信号再连到CC3的引脚。

总结: 将捕获通道的输入源配置为TRC,实质上是让捕获通道去“监听”定时器内部触发控制器产生的信号。这个信号源于TS[2:0]选择的触发源(TRGI),使得捕获功能可以脱离外部引脚,用于测量芯片内部事件或间接测量芯片外部事件。

2. TRC信号与无刷电机(BLDC)驱动

       当STM32(尤其是带高级定时器TIM1/TIM8的型号)驱动BLDC电机时,触发控制器(TRC是其输出现)及其内部路由连接在系统中起着至关重要的作用,主要用于实现基于霍尔传感器的换相

  • 关键需求:

    • BLDC电机需要6步换相。

    • 霍尔传感器(通常3个)输出信号(H1, H2, H3)指示转子位置,决定何时切换到下一相。

    • 换相点需要精确、低延迟地触发定时器更新PWM输出(改变通道开关状态)。

  • 如何实现(典型方案):

    1. 霍尔信号输入: 将3个霍尔传感器信号连接到定时器的输入通道(通常是TI1, TI2, TI3)。

    2. 配置霍尔接口模式:

      • TIMx_CR2寄存器中设置TI1S位(有时也叫HALLSEN),将TI1, TI2, TI3配置为组合的霍尔模式输入(三元异或运算)

      • 定时器内部硬件会自动解码TI1/TI2/TI3上的信号,生成一个综合的转子位置状态

    3. 霍尔事件作为触发源:

      • 关键点: 每当检测到有效的霍尔传感器信号变化(即转子位置改变,需要换相时),定时器硬件会自动产生一个内部触发信号(TRGI)。这些个信号TI1, TI2, TI3的三元异或运算后的外部信号本质上等价于将TS[2:0]配置为TI1F_ED(或类似)产生的效果,但它是霍尔模式特有的硬件行为。

      • 这个触发信号(TRGI)输入到触发控制器

    4. 触发控制器产生TRC并驱动动作:

      • 触发控制器接收到这个代表换相点(TI1, TI2, TI3的三元异或运算)的TRGI信号。

      • 触发控制器可以配置(通过TIMx_SMCR)在接收到此TRGI时执行特定动作:

        • 从模式Slave Mode: 复位模式Reset Mode (SMS=100): 最常见!收到霍尔触发信号(TRGI)后,定时器计数器立即复位 (CNT=0)。

        • (可选) Gate Mode, Trigger Mode等。

      • 同时,触发控制器会产生TRC信号,作为其活动的内部输出(路由)TRC。设置通道x(如x=1、2、3或4)为捕获模式(选中TRC),即置TIMx_CCMRx寄存器中CCxS=11(如x=1)。

    5. TRC信号触发换相事件COM:

      • 配置主模式输出 (TIMx_CR2.MMS): 将主模式输出设为OCxREF输出比较有效电平(OCxM=001)或PWM2模式(OCxM=111),即把OCxREF的上升沿信号作为向其他定时器提供的触发输出TRGO并同时提供一定的延时使得主从定时器同步。部分资料也有选择Update Event (MMS=010) 或 Enable(MMS=001)

      • 结果: 当触发控制器因霍尔事件产生TRC信号时,它会立刻在TRGO引脚上输出一个OCxREF输出比较有效电平或PWM2模式的(也可能是更新事件或使能事件)信号。这个主定时器输出的TRGO可以被从定时器的TRGI用作COM换向事件。

      • 级联:

        • 常见的是连接到负责产生PWM的定时器(通常是另一个高级定时器本身) 的TRGI输入。

      • 触发PWM更新: 作为“从”的PWM定时器(一般是高级定时器),配置其TRGI为ITRx(TS=000、001、010、011),TIMx_CR2中CCPC=1(CCxE 、CCxNE和OCxM捕获比较预加载控制位)和CCUS=1(换向事件COMG或TRGI上升沿触发更新CCxE 、CCxNE和OCxM位),从模式为触发模式Trigger Mode (SMS=110) 或复位模式 Reset Mode (SMS=100)。当它收到来自片其他定时器的片外管脚的触发输入信号即“主定时器”(另一个通用定时器的TRGO信号)(代表换相点)时,它会:

        • 立即复位计数器 (SMS=100): 这确保了PWM波形在新换相周期的精确起点开始。

        • 产生一个换向事件(COM)。这个换向事件是关键!

      • 换向COM事件加载新PWM参数: 在高级定时器中,换向事件COM会:

        • 将预装载寄存器(ARRCCRx)的值更新到影子寄存器。

        • 在BLDC驱动中,预先根据下一个换相状态(即高级定时器根据通用定时器的输入捕获数值,也就是霍尔传感器两次翻转的间隔)计算好的PWM占空比、通道极性(有效电平)、通道开关状态(死区控制)、刹车状态等参数,会在更新事件发生时一次性生效! 这就是实现无缝、精确换相的核心机制。硬件自动在换相点切换所有PWM设置,避免了软件延迟。

  •         6. 通过触发一个COM换向事件,来于改变高级定时器TIM1TIM8各个OC1 OC1N OC2 OC2N OC3 OC3N 各个通道的属性。在一次COM事件后,写入下一步的PWM控制位(CCxEOCxM),这可以在捕获霍尔定时器的通用定时器处理OC2REF上升沿的中断子程序里实现。
  • TRC在BLDC驱动中的核心作用:

    1. 桥梁: TRC是霍尔传感器事件(转子位置变化)转换控制PWM定时器立即更新/复位的关键内部信号。

    2. 实现硬件自动换相: 通过配置触发控制器和主/从模式,利用TRC信号(最终体现为TRGO),可以在几乎零延迟(硬件自动完成)的情况下,在精确的换相点复位PWM计数器并加载新的预装载值(ARR, CCRx)和配置(CCER, BDTR等),实现平滑、高效的换相。软件只需要在中断中(如捕获中断或更新中断)计算好下一个换相周期的PWM参数并写入预装载寄存器即可。

总结: 在STM32无刷电机驱动中,“TRC”信号(更准确说是触发控制器的输入TRGI和输出TRC/TRGO构成的路径)是实现基于霍尔传感器的硬件自动换相的关键基础设施。它确保了换相动作由硬件在检测到霍尔信号跳变后立即、精确地触发,将PWM输出切换到下一个状态,这是高效可靠驱动BLDC电机的基石。高级定时器的强大之处就在于将这些复杂的联动逻辑用硬件实现。

<think>我们正在讨论STM32定时器TRC信号。根据引用[1],定时器的时钟源包括内部时钟源(CK_INT)、外部输入脚TIx、外部触发输入TIMx_ETR、内部触发输入ITRx。这里的TRC信号可能是指定时器的触发信号(Trigger)或者更具体的是指内部触发输入(ITRx)。在STM32中,内部触发输入ITRx通常用于定时器之间的级联,即一个定时器作为另一个定时器的时钟源。引用[1]中提到“触发控制器”的功能,包括复位和使能定时器,设定计数方式,以及设置成其他定时器或DAC/ADC的触发源。因此,TRC信号很可能与触发控制器相关。另外,引用[2]和[3]中描述了时基结构体,但没有直接提到TRC信号。但是,引用[4]中提到了输入捕获,虽然不直接相关,但说明了定时器可以对外部信号进行测量。综合上述引用,我们可以推断TRC信号是指定时器的触发输入信号,它可以是外部触发输入(TIMx_ETR)或内部触发输入(ITRx)。内部触发输入ITRx来源于其他定时器的输出触发信号(如TRGO),用于定时器级联。因此,TRC信号的工作原理如下:1.外部触发输入(TIMx_ETR):通过特定的GPIO引脚输入外部信号。2.内部触发输入(ITRx):来自其他定时器的触发输出(TRGO)。例如,定时器1的TRGO可以作为定时器2的ITR0信号。触发信号的作用是启动定时器的计数(例如作为计数器的时钟源)或者触发定时器的特定事件(如复位、使能、捕获等)。下面详细解释TRC信号的来源和工作原理。来源:-外部触发输入(TIMx_ETR):来自芯片外部,通过特定的GPIO引脚输入。-内部触发输入(ITRx):来自片内其他定时器的触发输出(TRGO)。STM32内部有多个定时器,它们可以通过内部连接进行级联。每个定时器都可以配置其触发输出(TRGO)事件,例如更新事件、捕获比较事件等,然后这个TRGO信号可以连接到其他定时器的内部触发输入(ITRx)。工作原理:定时器可以配置为使用触发信号(TRC)作为时钟源(外部时钟模式2)或者作为复位、使能等操作的触发信号。具体的工作方式取决于定时器的配置。例如,当配置为外部时钟模式2时,定时器使用ETR信号作为时钟源。此时,ETR引脚上的信号经过极性选择、分频和滤波后,直接作为计数器的时钟。另外,触发信号也可以用于从模式(SlaveMode)。定时器可以配置为从模式,由触发信号(TRGI)来启动或复位计数器等。从模式包括:-复位模式:触发信号导致计数器和预分频器复位。-门控模式:触发信号高电平时计数,低电平时停止。-触发模式:触发信号启动计数器。-外部时钟模式:使用触发信号作为时钟。内部触发输入(ITRx)的映射关系是固定的,例如:-定时器1的TRGO连接到定时器2、3、4的ITR0。-定时器2的TRGO连接到定时器1、3、4的ITR1。-等等。因此,要使用内部触发输入,需要配置主定时器(产生TRGO)和从定时器(配置为从模式,并选择相应的内部触发源)。配置步骤(以两个定时器级联为例):1.配置主定时器:-设置主定时器的TRGO事件(例如更新事件)。2.配置从定时器:-选择内部触发源(例如ITR0,表示使用定时器1的TRGO)。-配置从模式(例如外部时钟模式1,则触发信号作为计数器的时钟)。这样,主定时器的更新事件就会触发从定时器的计数器计数一次,从而实现定时器的级联。总结:TRC信号在STM32定时器中指的是触发输入信号,它可以是外部触发输入(ETR)或内部触发输入(ITRx)。该信号用于驱动定时器的计数或控制定时器的行为(如复位、启动等),在定时器级联和同步中起到关键作用。</think>### STM32 定时器 TRC 信号解析 #### 一、TRC 信号来源 TRC(Trigger Controller)信号指定时器的**触发控制信号**,其来源可分为两类: 1. **外部触发源** - **TIMx_ETR 引脚**:专用外部触发输入引脚(如 TIM1_ETR 对应 PA12 引脚) - **TIx 引脚**:捕获/比较通道的复用引脚(如 TIMx_CH1/2/3/4) - 需配置 GPIO 为复用模式,通过 `TIM_ETRConfig()` 设置滤波器和极性[^1][^2] 2. **内部触发源** - **ITRx 信号**:来自其他定时器的触发输出(TRGO),映射关系固定: - 定时器 1 TRGO → 定时器 2/3/4 的 ITR0 - 定时器 2 TRGO → 定时器 1/3/4 的 ITR1 - 定时器 3 TRGO → 定时器 1/2/4 的 ITR2 - 定时器 4 TRGO → 定时器 1/2/3 的 ITR3[^1][^3] - **ADC/DAC 触发信号**:定时器事件触发模数转换 --- #### 二、TRC 工作原理 通过**触发控制器(Trigger Controller)** 实现信号处理: ```mermaid graph LR A[TRC信号源] --> B[触发控制器] B --> C{触发操作模式} C --> D[复位计数器] C --> E[启动计数器] C --> F[产生DMA请求] C --> G[触发ADC/DAC] ``` 1. **信号路径** $$ \text{TRC 输入} \xrightarrow{\text{滤波/分频}} \text{触发控制器} \xrightarrow{\text{模式选择}} \text{执行操作} $$ 2. **关键配置寄存器** - **TIMx_SMCR**:从模式控制寄存器 - `TS[2:0]`:选择触发源(如 101=ITR2) - `SMS[2:0]`:设置从模式(如 010=复位模式) - **TIMx_CR2**:控制寄存器 2 - `MMS[2:0]`:主模式选择(配置 TRGO 输出事件) 3. **典型工作流程** - 外部脉冲通过 ETR 引脚输入 - 经滤波消除噪声(可设置 1-16 个时钟周期滤波) - 触发控制器检测到有效边沿(上升沿/下降沿可配) - 根据 `SMS` 模式执行操作(如复位 CNT 计数器) --- #### 三、配置示例 实现定时器级联(TIM1 触发 TIM2): 1. **配置 TIM1 为主模式** ```c TIM_SelectMasterSlaveMode(TIM1, TIM_MasterSlaveMode_Enable); TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Update); // 更新事件触发 TRGO ``` 2. **配置 TIM2 为从模式** ```c TIM_SelectInputTrigger(TIM2, TIM_TS_ITR0); // 选择 ITR0(来自 TIM1) TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset); // TRC 信号复位计数器 ``` --- #### 四、应用场景 1. **精密时序同步** - 多定时器级联实现长周期定时 - 例:TIM1(1ms)触发 TIM2 → 扩展至 1 小时定时 2. **信号测量** - 配合输入捕获测量脉冲频率(如引用[4]方波测量) - 外部触发启动计数器,消除手动触发误 3. **事件驱动系统** - 定时器触发 ADC 采样(如电机控制电流采样) - 触发 DAC 输出波形
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值