导图社区 STM32定时器知识
一张图带你了解定时器的相关知识,包括基本定时器、通用定时器、高级定时器的框图、特性等内容,非常详细,值得收藏。
编辑于2022-04-14 16:39:46"掌握电机控制核心:从理论到实战的闭环艺术!本专题涵盖控制器增益与观测器带宽的关联设计,简化参数整定流程,涉及最优控制、稳定性分析与极点配置技术重点解析无传感器控制中的转速/位置估计方法,包括高频注入与磁链观测补偿详解经典算法(PID增强、LQR)与现代策略(MPC、ADRC),结合系统辨识工具(RLS、ARX模型)提供电机选型指南(极对数、凸极率)、机械动力学建模及震动抑制方案,覆盖感应电机、无刷电机等控制实践,附电压前馈/死区补偿等工程优化技巧" 。
CANopen是一个基于CAN串行总线系统和CAL(CAN应用层)的高层协议。 CANopen的核心概念是设备对象字典(OD: ObjectDictionary),CANopen通讯通过对象字典(OD)能够访问驱动器的所有参数
CANopen是一种架构在CAN控制局域网上的高层软件通信协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线协议
社区模板帮助中心,点此进入>>
"掌握电机控制核心:从理论到实战的闭环艺术!本专题涵盖控制器增益与观测器带宽的关联设计,简化参数整定流程,涉及最优控制、稳定性分析与极点配置技术重点解析无传感器控制中的转速/位置估计方法,包括高频注入与磁链观测补偿详解经典算法(PID增强、LQR)与现代策略(MPC、ADRC),结合系统辨识工具(RLS、ARX模型)提供电机选型指南(极对数、凸极率)、机械动力学建模及震动抑制方案,覆盖感应电机、无刷电机等控制实践,附电压前馈/死区补偿等工程优化技巧" 。
CANopen是一个基于CAN串行总线系统和CAL(CAN应用层)的高层协议。 CANopen的核心概念是设备对象字典(OD: ObjectDictionary),CANopen通讯通过对象字典(OD)能够访问驱动器的所有参数
CANopen是一种架构在CAN控制局域网上的高层软件通信协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线协议
定时器
基本定时器
TIM6,TIM7
特性
16 位自动重载递增计数器
16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1 和 65536 之间
用于触发 DAC 的同步电路
发生如下更新事件时会生成中断/DMA 请求:计数器上溢
框图
①时钟源
基本定时器的时钟源只能来自内部时钟,是由 CK_INK 提供
②控制器
定时器控制器,对基本定时器的复位、 使能以及计数的控制
DAC 转换触发
③计数器
计算:CK_CNT=CK_PSC/(PSC[15: 0]+1)
TIMx_PSC 控制寄存器具有缓冲,可以在运行过程中改变它的数值,新的预分频数值将在下一个更新事件时起作用
TIMx_CNT 值与 TIMx_ARR 的设定值相等时就自动生成事件
通用定时器
TIM10/TIM11 TIM13/TIM14
特性
16 位自动重载递增计数器(属于中等容量器件)
16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1 和 65536 之间
1个独立通道
— 输入捕获
— 输出比较
— PWM 生成(边沿对齐模式)
— 单脉冲模式输出
发生如下事件时生成中断
更新:计数器上溢、计数器初始化(通过软件)
输入捕获
输出比较
框图
通用定时器
TIM9~TIM12
框图
特性
1||| 16 位自动重载递增计数器(属于中等容量器件)
2||| 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介于 1 和 65536 之间
3||| 2 个独立通道
— 输入捕获
— 输出比较
— PWM 生成(边沿对齐模式)
— 单脉冲模式输出
4||| 使用外部信号控制定时器且可实现多个定时器互连的同步电路
5||| 发生如下事件时生成中断
更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
输入捕获
输出比较
通用定时器
TIM2~TIM5
特性
1||| 16 位( TIM3 和 TIM4)或 32 位( TIM2 和 TIM5) 递增、递减和递增/递减自动重载计数器
2||| 16 位可编程预分频器,用于对计数器时钟频率进行分频 (即运行时修改),分频系数介于 1 到 65536 之间
3||| 4 个独立通道
— 输入捕获
— 输出比较
— PWM 生成(边沿和中心对齐模式)
— 单脉冲模式输出
4||| 使用外部信号控制定时器且可实现多个定时器互连的同步电路
5||| 发生如下事件时生成中断/DMA 请求
更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
输入捕获
输出比较
6||| 支持定位用增量(正交)编码器和霍尔传感器电路
7||| 外部时钟触发输入或逐周期电流管理
TIM9~TIM12没有
框图
高级定时器
框图
①时钟源
内部时钟源
CK_INT
TIMx_SMCR 寄存器中的 SMS=000 时,可选择此模式
外部时钟模式 1
外部输入引脚 TINx(x=1,2,3,4)
TIMx_SMCR 寄存器中的 SMS=111 时,可选择此模式
步骤
1||| 选择时钟通道:TIM_CCMx 的位 CCxS[1: 0]
2||| 滤波器设置:TIMx_CCMR1 中 IC2F[3:0]
3||| 边沿检测:TIMx_CCER 的位 CCxP 和 CCxNP
4||| 触发选择:TIMx_SMCR 的位 TS[2:0]
5||| 从模式选择:TIMx_SMCR 中的 SMS
6||| 使能计数器:TIMx_CR1 寄存器中 CEN
时序图
外部时钟模式 2
外部触发输入 ETR
通过在 TIMx_SMCR 寄存器中写入 ECE=1 可选择此模式
步骤
1||| 选择时钟通道:
2||| 外部触发极性:TIMx_SMCR 寄存器中的 ETP
3||| 分频器设置:TIMx_SMCR 寄存器中的 ETPS[1:0]
4||| 滤波器设置:TIMx_CCMR1 中 IC2F[3:0]
5||| 从模式选择:TIMx_SMCR 中的 ECE=1
6||| 使能计数器:TIMx_CR1 寄存器中 CEN
时序图
内部触发输入
使用一个定时器作为另一个定时器的预分频器
②控制器
触发控制器
针对片内外设输出触发信号,比如为其它定时器提供时钟和触发DAC/ADC 转换
从模式控制器
从模式控制器可以控制计数器复位、启动、递增/递减、计数。
编码器接口
针对编码器计数而设计
③时基单元
计数器寄存器(TIMx_CNT)
向上计数模式
计数器开始从 0 计数到自动重装载值(TIMx_ARR 计数器内容) 然后重新从 0 开始并且产生一个计数器溢出事件
向下计数模式
计数器从自动重装载值(TIMx_ARR 计数器内容)开始递减计数直到 0 然后重新从自动重装载值开始递减并生成计数器下溢事件
中心计数模式
从 0 开始计数到自动加载的值(TIMx_ARR寄存器) -1, 产生一个计数器溢出事件 然后向下计数到 1 并且产生一个计数器下溢事件
如果使用了重复计数器功能,在计数重复了重复计数寄存器(TIMx_RCR) 中设定的次数后,才会产生更新事件,否则每次计数器下溢时才产生更新事件
预分频器寄存器 (TIMx_PSC)
新的预分频参数在下一次更新事件到来时被采用
自动重载寄存器 (TIMx_ARR)
这个寄存器是预先装载的,当写或读自动重装载寄存器将访问预装载寄存
TIMx_CR1中ARPE =1
预装载寄存器的内容在每次更新事件时传递给影子寄存器
TIMx_CR1中ARPE =0
修改 TIMx_ARR的值后马上有效
重复计数器寄存器 (TIMx_RCR)
高级定时器特有
④输入捕获
原理
当捕获到信号的跳变沿的时候,把计数器 CNT 的值锁存到捕获寄存器 CCR 中,把前后两次捕获到的 CCR 寄存器中的值相减,就可以算出脉宽或者频率
步骤
输入阶段对相应的 TIx 输入进行采样,生成一个滤波后的信号 TIxF
带有极性选择功能的边沿检测器生成一个信号 (TIxFPx)
TIxFPx进行预分频 (ICxPS),而后再进入捕获寄存器
输入捕获的应用
测量脉宽或频率
PWM输入模式
⑤输出比较
描述
输出比较就是通过定时器的外部引脚对外输出控制信号
模式
1||| 冻结
2||| 将通道 X(x=1,2,3,4)设置为匹配时输出有效电平
3||| 输出无效电平
4||| 强制为无效电平
5||| 强制为有效电平
6||| PWM1
7||| PWM2
结构框图
1. 比较寄存器
当计数器 CNT 的值跟比较寄存器 CCR 的值相等的时候,输出参考信号 OCxREF 的信号的极性就会改变
其中 OCxREF=1(高电平)称之为有效电平,OCxREF=0(低电平)称之为无效电平,并且会产生比较中断 CCxI
2. 死区发生器
在生成的参考波形 OCxREF 的基础上,可以插入死区时间,用于生成两路互补的输出信号 OCx 和 OCxN,死区时间的大小具体由 BDTR 寄存器的位 DTG[7:0]配置。死区时间的大小必须根据 与输出信号相连接的器件及其特性来调整
3. 输出控制
4. 输出引脚
输出比较的应用
PWM输出
PWM 输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装寄存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定
PWM边沿对齐模式
⑥刹车功能
描述
强制关闭输出,功能是防止电机损坏,此时输出为设置的空闲电平
功能
死区时间寄存器
子主题
特性
1||| 16 位递增、递减、递增/递减自动重载计数器
2||| 16 位可编程预分频器,用于对计数器时钟频率进行分频 (即运行时修改),分频系数介于 1 到 65536 之间
3||| 4个独立通道
— 输入捕获
— 输出比较
— PWM 生成(边沿和中心对齐模式)
— 单脉冲模式输出
4||| 使用外部信号控制定时器且可实现多个定时器互连的同步电路。
5||| 支持定位用增量(正交)编码器和霍尔传感器电路
6||| 外部时钟触发输入或逐周期电流管理
7||| 发生如下事件时生成中断/DMA 请求
更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
输入捕获
输出比较
断路输入
8||| 带可编程死区的互补输出
9||| 重复计数器,用于仅在给定数目的计数器周期后更新定时器寄存器
10||| 用于将定时器的输出信号置于复位状态或已知状态的断路输入
高级定时器特有功能
功能
1||| 输入捕获模式
作用
测量输出信号的者脉宽
时序图
2||| PWM输入模式
作用
模式测量脉宽和周期
时序图
3||| 强制输出模式
作用
直接由软件强置为有效或无效状态,而不依赖于输出比较寄存器和计数器间的比较结果
4||| 输出比较模式
作用
控制一个输出波形
指示已经过某一时间段
5||| PWM模式
PWM两种模式
TIMx_CCMRx 寄存器中的 OcxM 位来确定(“110 为模式 1”, “111”为模式 2)
PWM模式1
在向上计数时, TIMx_CNT<TIMx_CCR1 时通道 1 为有效电平,否则为无效电平
在向下计数时, TIMx_CNT>TIMx_CCR1 时通道 1 为无效电平,否则为有效电平
PWM 模式 2
在向上计数时, TIMx_CNT<TIMx_CCR1 时通道 1 为无效电平,否则为有效电平
在向下计数时, TIMx_CNT>TIMx_CCR1 时通道 1 为有效电平,否则为无效电平
边缘对其模式
中心对齐模式
6||| 互补输出和死区
正常波形
异常波形
7||| 编码器接口模式
模式
TIMx_SMCR 寄存器中 SMS
SMS=001
计数器只在 TI2 的边沿计数
SMS=010
计数器只在 TI1 的边沿计数
SMS=011
计数器同时在 TI1和 TI2 边沿计数
逻辑表
8||| 霍尔传感器
描述
使用高级控制定时器产生 PWM 信号驱动电机的同时,用另一个通用定时器作为“接口定时器”来连接霍尔传感器,
示例
9||| 定时器和外部触发的同步
复位模式
能够在发生触发输入事件时, 计数器和它的预分频器复位
门控模式
输入信号的电平可用来使能计数器
递增计数器仅在 TI1 输入为低电平时计数
触发模式
输入端上选择的事件使能计数器
时基单元
计数器寄存器(TIMx_CNT)
预分频器寄存器 (TIMx_PSC)
自动重载寄存器 (TIMx_ARR)
基本定时器 通用定时器
重复计数器寄存器 (TIMx_RCR)
高级定时器