定时器的主模式选择 (Master mode selection)与从模式选择 (Slave mode selection)

好的,这是一个非常核心的定时器概念。主模式(Master Mode) 和 从模式(Slave Mode) 决定了定时器如何与自身、其他定时器或外部世界进行同步和触发。

简单来说:

  • 主模式: "我作为触发源"。定时器将自己的某个事件(如更新、比较匹配)作为触发信号(TRGO)输出,去控制其他外设。
  • 从模式: "我被别人触发"。定时器等待并响应一个外部或内部的触发信号(TRGI),来控制自己的行为(如复位、启动计数等)。

1. 主模式 (Master Mode Selection)

主模式允许定时器内部的某些事件产生一个触发输出信号(TRGO)。这个信号可以连接到其他内部外设,作为它们的时钟源或触发源。

功能: 提供同步信号。

触发源(TRGO)的选择 (通过 TIMx_CR2 寄存器的 MMS2:0 位配置):

  • 复位 (Reset): TIMx_EGR寄存器的UG位置位被用于作为触发输出(TRGO)。。
  • 使能 (Enable): 定时器被使能(CEN 位被设置)时产生触发信号。
  • 更新 (Update): 最常用。每次发生更新事件(计数器的上溢或下溢事件)时产生触发信号。
  • 比较脉冲 (Compare Pulse): 在发生一次捕获或一次比较成功时,触发输出一个正脉冲(TRGO)(具体取决于定时器)。
  • 比较 - OC1REF: 通道 1 的比较匹配信号(OC1REF)作为触发输出。
  • 比较 - OC2REF: 通道 2 的比较匹配信号(OC2REF)作为触发输出。
  • 比较 - OC3REF: 通道 3 的比较匹配信号(OC3REF)作为触发输出。
  • 比较 - OC4REF: 通道 4 的比较匹配信号(OC4REF)作为触发输出。

典型应用场景:

  1. 定时器同步(Timer Cascade):

    • 主定时器(Master) 配置为 MMS=010(Update),将其更新事件作为TRGO输出。
    • 从定时器(Slave) 配置为从模式,并选择 内部触发(ITRx) 为触发源(例如ITR0),这个ITR0就来自主定时器的TRGO。
    • 效果 :每当主定时器溢出时,从定时器的计数器就加一。这样可以实现 32位甚至更长的定时器。
  2. 触发ADC采样:

    • 定时器配置为PWM模式,并设置 MMS=010(Update) 或 MMS=100(OC1REF)。
    • 在ADC配置中,选择转换触发源为 该定时器的TRGO事件。
    • 效果:PWM每个周期开始时(更新事件)或比较匹配点时,自动启动一次ADC采样,实现与PWM的精确同步,非常适合电机控制中的电流采样。
  3. 触发DAC输出:

    • 类似于ADC,可以用定时器的TRGO来触发DAC开始转换。
  4. 作为其他外设的时钟源:

    • 定时器的TRGO可以输出一个时钟脉冲,为其他外设提供时钟。

2. 从模式 (Slave Mode Selection)

从模式允许定时器被一个触发输入信号(TRGI) 所控制。这个信号可以来自外部引脚(TI1F_ED, TI1FP1, TI2FP2)、另一个定时器(ITRx)或内部的特定信号。

功能: 响应并同步于外部信号。

从模式的工作模式 (通过 TIMx_SMCR 寄存器的 SMS2: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 寄存器的 TS2: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的定时器能够构建非常复杂的同步和控制系统。

相关推荐
硅基手札1 天前
【串口技术系列文档 07】UART控制器寄存器详解
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
硅基手札1 天前
【串口技术系列文档 09】FIFO管理与流控
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
硅基手札1 天前
【串口技术系列文档 08】中断驱动vs轮询vs DMA
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
硅基手札2 天前
【串口技术系列文档 04】UART协议深度解析
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
意法半导体STM322 天前
【官方原创】LAT1724 STM32CubeIDE for VSCode 修改链接文件中的起始地址无效?
vscode·stm32·单片机·嵌入式硬件·mcu·stm32cube
蓝天居士3 天前
PY32F系列MCU在OTA时App区概率性跑不起来的根因分析(3)
mcu·嵌入式
国科安芯5 天前
航天器健康管理系统中嵌入式控制器的多源状态监测与故障诊断能力评估
mcu·健康管理·抗辐射·空间信息·航天器
Brilliantwxx5 天前
【STM32】基础定时器 TIM 详解:从极简原理到寄存器全解析
stm32·单片机·嵌入式硬件·mcu
小刘max5 天前
从半导体视角理解 NVM 与 Flash:存储单元、阵列架构与应用差异
mcu
蓝天居士5 天前
PY32F系列MCU在OTA时App区概率性跑不起来的根因分析(2)
mcu·嵌入式