stm32采集脉冲信号_STM32 TIM 编码器模式采集编码器信号

这篇博客介绍了如何使用STM32的TIM编码器模式来采集和解析增量编码器的正交信号,包括编码器的工作原理、STM32的编码器接口配置、标准库接口的使用以及编码器信号计数的方法。文章还提供了基于STM32F103系列的编码器初始化代码和中断处理示例。
摘要由CSDN通过智能技术生成

layout: post

tags: [STM32]

comments: true

什么是正交解码?

对于常用增量式编码器,光学编码器,采用带槽圆盘,一侧是发射光线的发射端,而光电晶体管在相对的一侧。当圆盘转动时,光程被阻断,得到的脉冲指示轴的转动和方向。通常的说法是1000线的编码器,即转一圈会产生1000个方波脉冲,马盘上刻了1000个栅格,中间被镂了1000个空,举个例子,未免显得有点啰嗦,下面直奔主题,至于什么是编码器还是搜索引擎说的明明白白。

增量编码器通常有A,B两相信号,相位相差90°,所以也叫正交,还有一个复位信号是机械复位,即转了一圈,复位信号会有一个跳变沿。具体如下图所示:

所以,正交解码,就是把解码A,B两相的方波信号,检测相位,以及脉冲数和转向,当然也可以计算出转速,加速度,以及转动到相应的位置。

编码器接口模式

参考《STM32 参考手册中文版》,可以看到,对于TIM定时器中通用的功能,普遍支持编码器接口模式,下面配合手册和标准库进行配置。

标准库接口

首先看到标准库的代码stm32f10x_tim.h中的接口,先简单分析以下源码,找到以下四个数据类型:

TIM_TimeBaseInitTypeDef:时基单位,配置定时器预分频参数,计数器模式(上溢/下溢),周期频率以及分频系数;

TIM_OCInitTypeDef:振荡输出单元,可以用于产生PWM波形;

TIM_ICInitTypeDef:输入捕获单元,可以用于检测编码器信号的输入;

TIM_BDTRInitTypeDef:适用于TIM1和TIM8作为插入死区时间配置的结构体;

所以,综合以上,只需要关注时基单元和输入捕获单元即可,下面对于其成员的以及其注释做一下简单解释;

TIM_TimeBaseInitTypeDef

typedef struct

{

uint16_t TIM_Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock.

This parameter can be a number between 0x0000 and 0xFFFF */

uint16_t TIM_CounterMode; /*!< Specifies the counter mode.

This parameter can be a value of @ref TIM_Counter_Mode */

uint16_t TIM_Period; /*!< Specifies the period value to be loaded into the active

Auto-Reload Register at the next update event.

This parameter must be a number between 0x0000 and 0xFFFF. */

uint16_t TIM_ClockDivision; /*!< Specifies the clock division.

This parameter can be a value of @ref TIM_Clock_Division_CKD */

uint8_t TIM_RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter

reaches zero, an update event is generated and counting restarts

from the RCR value (N).

This means in PWM mode that (N+1) corresponds to:

- the number of PWM periods in edge-aligned mode

- the number of half PWM period in center-aligned mode

This parameter must be

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值