Stm32高级定时器(四)

Stm32高级定时器(四)

1 编码器接口模式

1.1 编码器原理

什么是正交?如果两个信号相位相差90度,则这两个信号称为正交。由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向、根据每个信号脉冲数量的多少及整个编码轮的周长就可以算出当前行走的距离、如果再加上定时器的话还可以计算出速度。

增量式旋转编码器通过内部两个光敏接受管转化其角度码盘的时序和相位关系,得到其角度码盘角度位移量增加(正方向)或减少(负方向)。

A,B两点对应两个光敏接受管,A,B两点间距为 S2 ,码盘的光栅间距分别为S0和S1。S0+S1的距离是S2的四倍。这样保证了A,B波形相位相差90度。旋转的反向不同,锯齿波A,B先到达高电平的顺序就会不同,如上图左侧所示,顺序的不同,就可以得到旋转的方向。

以上两图说明,编码器的计数方向可以判别TI1与TI2的先后关系,继而得到外部的正反转关系。

1.2 配置步骤

CC1S=01 (TIMx_CCMR1寄存器,IC1FP1映射到TI1)

CC2S=01 (TIMx_CCMR2寄存器,IC2FP2映射到TI2)

CC1P=0 (TIMx_CCER寄存器,IC1FP1不反相,IC1FP1=TI1)

CC2P=0 (TIMx_CCER寄存器,IC2FP2不反相,IC2FP2=TI2)

SMS=011 (TIMx_SMCR寄存器,所有的输入均在上升沿和下降沿有效).

CEN=1 (TIMx_CR1寄存器,计数器使能)

2 与霍尔传感器的接口模式

使用高级控制定时器(TIM1或TIM8)产生PWM信号驱动马达时,可以用另一个通用TIMx(TIM2、TIM3、TIM4或TIM5)定时器作为“接口定时器”来连接霍尔传感器,3个定时器输入脚(CC1、CC2、CC3)通过一个异或门连接到TI1输入通道(通过设置TIMx_CR2寄存器中的TI1S位来选择),“接口定时器”捕获这个信号。

即:

TIM1产生PWM信号驱动马达

TIMx(TIM2、TIM3、TIM4或TIM5) 定时器作为“接口定时器”来连接霍尔传感器,捕获霍尔传感器接口的信息(转速等),反馈给TIM1改变PWM的输出,控制转速。

3 理解更深

如需理解更深,请看通用定时器一章,定时器同步,更好的理解定时器的工作状态。

4 参考文献

[1] STM32 TImer几种模式_通用定时器

[2] 利用STM32编码器进行任意位置确定

[3] 编码器速度和方向检测

时间: 2024-08-25 19:16:13

Stm32高级定时器(四)的相关文章

Stm32高级定时器(一)

Stm32高级定时器(一) 1 定时器的用途 2 高级定时器框图 3 时基单元 4 通道 1 定时器的用途 已知一个波形求另一个未知波形(信号长度和占空比) 已知波形的信号长度和占空比产生一个相应的波形 增量正交编码器驱动电机获得动态信息(速度.加速度) 测量输入信号的脉冲宽度(输入捕获) 产生输出波形(输出比较.PWM.嵌入死区时间的互补PWM等) …… 我们知道,当我们需要测量一段直线的长度时,我们需要一把直尺,根据直尺上的刻度读出直线的长度,定时器也相当于直尺能够测量和产生特定的波形. 比

Stm32高级定时器(二)

Stm32高级定时器(二) 1 主从模式:主?从? 谈论主从,可知至少有两个以上的触发或者驱动信号,stm32内部有多个定时器,可以相互之间驱动或者控制. 主模式:定时器使能只受驱动时钟控制或者输出控制信号(TRGO). 从模式:复位模式, 在发生一个触发输入事件时,计数器和它的预分频器能够重新被初始化:同时,如果IMx_CR1寄存器的URS 位为低,还产生一个更新事件UEV :然后所有的预装载寄存器(TIMx_ARR ,TIMx_CCRx)都被更新了. 从模式:门控模式, 计数器的使能依赖于选

Stm32高级定时器(三)

Stm32高级定时器(三) 1 互补输出和死区插入 1.1 死区:某个处于相对无效状态的时间或空间 本来OCX信号与OCXREF时序同相同步,OCXN信号与OCXREF时序反相同步.但为了安全考虑,以OCXREF为参考基准,OCXN和OCX通道将理论上本该导通的时间点往后延时一下,即做从截止切换到导通状态的延时. 特点: ● OCx输出信号与参考信号相同,只是它的上升沿相对于参考信号的上升沿有一个延迟. ● OCxN输出信号与参考信号相反,只是它的上升沿相对于参考信号的下降沿有一个延迟. 1.2

stm32高级定时器的应用——spwm

用过stm32定时器的朋友都知道,定时器的CCR寄存器,可以用来配置PWM的输出,但同样也可以用来配置spwm.废话不多说,直接上代码. 首先,你得考虑一下几个因素: 1.同步调制还是异步调制.  2.载波比N设置为多少 3.spwm计算法 4.prescaler和period的值 5.改变CCR还是改变ARR 下面是程序的大致情况: 1.使用同步 2.载波比设置为N = 360 3.采用对称规则采样法 4.通过中断时实改变CCR的值 5.使用stm32f429,它的高级定时器时钟频率为180M

Stm32高级定时器(转自:luowei_memory)

1 定时器的用途 2 高级定时器框图 3 时基单元 4 通道 1 定时器的用途 已知一个波形求另一个未知波形(信号长度和占空比) 已知波形的信号长度和占空比产生一个相应的波形 增量正交编码器驱动电机获得动态信息(速度.加速度) 测量输入信号的脉冲宽度(输入捕获) 产生输出波形(输出比较.PWM.嵌入死区时间的互补PWM等) -- 我们知道,当我们需要测量一段直线的长度时,我们需要一把直尺,根据直尺上的刻度读出直线的长度,定时器也相当于直尺能够测量和产生特定的波形. 比较项 定时器 直尺 最小刻度

高级定时器TIM1&TIM8

                                           高级定时器 初识stm32高级定时器:      (1)高级控制定时器(TIM1 和 TIM8)和通用定时器在基本定时器的基础上引入了外部引脚,可以实现输入捕获和输出比较功能.      (2)高级控制定时器比通用定时器增加了可编程死区互补输出.重复计数器.带刹车(断路)功能,这些功能都是针对工业电机控制方面.      (3)高级控制定时器时基单元包含:                            

stm32 PWM & 定时器总结

学习后发现stm32的定时器功能确实很强大,小总结一下方便以后使用的时候做参考.Stm32定时器一共分为三种:tim1和tim8是高级定时器,6和7是基本定时器,2-5是通用定时器.从名字就可以看得出来主要功能上的差异.今天我主要是用定时器做pwm输出,所以总结也主要是针对pwm方面的. 先大致说下通用和高级定时器的区别.通用的可以输出四路pwm信号互不影响.高级定时器可以输出三对互补pwm信号外加ch4通道,也就是一共七路. 所以这样算下来stm32一共可以生成4*5+7*2=30路pwm信号

STM32通用定时器配置

一.STM32通用定时器原理 STM32 系列的CPU,有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生.其它6个为普通定时器,时钟由APB1的输出产生. 下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图: 从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分. 下面以通用定时器2的时钟说明这个倍频器的作用:当APB1的预分频

stm32之定时器彻底研究

分类: C/C++ 这里介绍两种方式使用stm32的定时器:直接操作寄存器和使用st的官方的库文件. 相比较而言,直接操作定时器比较简洁,对着寄存器看十分明了.而使用库文件有一点晕头转向. (个人观点) 程序如下:(以下程序在DX32的例程修改而来,使用的是比较古老的3.0固件库) 1.timer.c文件 #include "STM32Lib\\stm32f10x.h"void TIM2_Configuration(void){ TIM_TimeBaseInitTypeDef  TIM