好的,这是一个非常核心的定时器概念。主模式(Master Mode) 和 从模式(Slave Mode) 决定了定时器如何与自身、其他定时器或外部世界进行同步和触发。
简单来说:
- 主模式: "我作为触发源"。定时器将自己的某个事件(如更新、比较匹配)作为触发信号(TRGO)输出,去控制其他外设。
- 从模式: "我被别人触发"。定时器等待并响应一个外部或内部的触发信号(TRGI),来控制自己的行为(如复位、启动计数等)。
1. 主模式 (Master Mode Selection)
主模式允许定时器内部的某些事件产生一个触发输出信号(TRGO)。这个信号可以连接到其他内部外设,作为它们的时钟源或触发源。
功能: 提供同步信号。
触发源(TRGO)的选择 (通过 TIMx_CR2 寄存器的 MMS[2:0] 位配置):
复位 (Reset)
: TIMx_EGR寄存器的UG位置位被用于作为触发输出(TRGO)。。使能 (Enable)
: 定时器被使能(CEN 位被设置)时产生触发信号。更新 (Update)
: 最常用。每次发生更新事件(计数器的上溢或下溢事件)时产生触发信号。比较脉冲 (Compare Pulse)
: 在发生一次捕获或一次比较成功时,触发输出一个正脉冲(TRGO)(具体取决于定时器)。比较 - OC1REF
: 通道 1 的比较匹配信号(OC1REF)作为触发输出。比较 - OC2REF
: 通道 2 的比较匹配信号(OC2REF)作为触发输出。比较 - OC3REF
: 通道 3 的比较匹配信号(OC3REF)作为触发输出。比较 - OC4REF
: 通道 4 的比较匹配信号(OC4REF)作为触发输出。
典型应用场景:
-
定时器同步(Timer Cascade):
- 主定时器(Master) 配置为
MMS=010(Update)
,将其更新事件作为TRGO输出。 - 从定时器(Slave) 配置为从模式,并选择 内部触发(ITRx) 为触发源(例如ITR0),这个ITR0就来自主定时器的TRGO。
- 效果 :每当主定时器溢出时,从定时器的计数器就加一。这样可以实现 32位甚至更长的定时器。
- 主定时器(Master) 配置为
-
触发ADC采样:
- 定时器配置为PWM模式,并设置
MMS=010(Update)
或MMS=100(OC1REF)
。 - 在ADC配置中,选择转换触发源为 该定时器的TRGO事件。
- 效果:PWM每个周期开始时(更新事件)或比较匹配点时,自动启动一次ADC采样,实现与PWM的精确同步,非常适合电机控制中的电流采样。
- 定时器配置为PWM模式,并设置
-
触发DAC输出:
- 类似于ADC,可以用定时器的TRGO来触发DAC开始转换。
-
作为其他外设的时钟源:
- 定时器的TRGO可以输出一个时钟脉冲,为其他外设提供时钟。
2. 从模式 (Slave Mode Selection)
从模式允许定时器被一个触发输入信号(TRGI) 所控制。这个信号可以来自外部引脚(TI1F_ED, TI1FP1, TI2FP2)、另一个定时器(ITRx)或内部的特定信号。
功能: 响应并同步于外部信号。
从模式的工作模式 (通过 TIMx_SMCR 寄存器的 SMS[2:0] 位配置):
关闭模式 (Disabled)
:SMS=000
。定时器不受触发输入影响,作为独立定时器运行。如果CEN=1,则预分频器直接由内部时钟驱动。编码器模式 (Encoder Mode)
:用于连接正交编码器。SMS=001
模式1 -- 根据TI1FP1的电平,计数器在TI2FP2的边沿向上/下计数。SMS=010
模式2 -- 根据TI2FP2的电平,计数器在TI1FP1的边沿向上/下计数。SMS=011
。模式3 -- 根据另一个信号的输入电平,计数器在TI1FP1和TI2FP2的边沿向上/下计数。
复位模式 (Reset Mode)
:SMS=100
。 最常用。当触发信号(TRGI)到来时,定时器的计数器和预分频器被复位,并产生一个更新事件。门控模式 (Gated Mode)
:SMS=101
。当触发输入(TRGI)为高时,计数器开启计数。一旦触发输入变为低,则计数器停止计数(但不复位)。计数器的启动和停止都是受控的。触发模式 (Trigger Mode)
:SMS=110
。计数器在触发输入TRGI的上升沿启动计数(但不复位计数器),只有计数器的启动是受控的。外部时钟模式 1 (External Clock Mode 1)
:SMS=111
。选中的触发输入(TRGI)的上升沿驱动计数器。这是将外部信号当作时钟最常用的模式 。
注:如果TI1F_ED被选为触发输入(TS=100)时,不要使用门控模式。这是因为,TI1F_ED在每次TI1F变化时输出一个脉冲,然而门控模式是要检查触发输入的电平。
从模式触发源(TRGI)的选择 (通过 TIMx_SMCR 寄存器的 TS[2:0] 位配置):内部触发 (ITR0, ITR1, ITR2, ITR3)
: 选择其他定时器的TRGO输出作为触发源。连接关系是芯片固定的,需查数据手册的"定时器内部触发连接"表格。TI1F_ED
: TI1上的经边沿检测(上升和下降沿都触发)的边沿信号。
TI1FP1
: TIMx_CH1引脚滤波和边沿检测后的信号。TI2FP2
: TIMx_CH2引脚滤波和边沿检测后的信号。ETRF
: ETR引脚滤波和边沿检测后的信号。
总结与对比
特性 | 主模式 (Master Mode) | 从模式 (Slave Mode) |
---|---|---|
角色 | 触发源 (Trigger Source) | 响应者 (Trigger Target) |
核心动作 | 输出 触发信号 (TRGO) | 接收 触发信号 (TRGI) |
配置寄存器 | TIMx_CR2 的 MMS[2:0] 位 |
TIMx_SMCR 的 SMS[2:0] 和 TS[2:0] 位 |
目的 | 同步其他外设(ADC, DAC, 其他定时器) | 使自身被同步(被外部信号、其他定时器控制) |
典型应用 | 触发ADC采样、级联定时器 | 外部脉冲计数、编码器接口、定时器级联中的从设备 |
关键联系:
一个定时器可以同时配置既为主模式也为从模式。例如,定时器1可以被定时器2的TRGO触发(从模式),同时它自己的更新事件又可以作为TRGO去触发ADC(主模式)。这种灵活性使得STM32的定时器能够构建非常复杂的同步和控制系统。