STM32F429第二十六篇之编码器功能
Posted 海洋想想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F429第二十六篇之编码器功能相关的知识,希望对你有一定的参考价值。
前言
编码器功能是F429的定时器重要的功能之一,在项目中经常要用到。本章主要介绍F429的编码器功能。
主要参考文献:
- RM0090参考文档
编码器
编码器通常可以分成以下两类:
- 增量式编码器:输出编码器的旋转量
- 绝对式编码器:直接输出编码器的位置
下面简单介绍一下需要用到F429编码器模块的增量式编码器。
如上图所示,增量式编码器一般输出通道A和通道B两组信号。这两组信号之间有90度的相位差(即四分之一的相位差),通过判断脉冲的频率即可得到编码器的旋转速度,而通过判断通道A和通道B之间的相位关系,即可判断编码器的旋转方向。一般来说,当编码器正转时,通道A的脉冲信号相位超前通道B,而当编码器反转时,正好相反,通道B的脉冲信号相位超前通道A。
功能框图
如上图所示,编码器模块的功能很简单:
- 信号通过通道1和通道2进入计时器模块。
- 信号经过编码器模块的处理,形成可以让计数器增减的脉冲信号。
- 脉冲信号经过预分频,驱动计数器增减。
通过以上分析,可知编码器模块的最简单使用方法为:
- 配置完成定时器的编码器初始化。
- 没经过一段固定时间,读取编码器的值CNT。
功能
F429选择编码器接口模式时,共有三种计数模式,通过TIMx_SMCR位的SMS位配置:
- 仅在TI1处计数
- 仅在TI2处计数
- 在TI1和TI2处都计数
通过编程 TIMx_CCER 寄存器的 CC1P 和 CC2P 位,选择 TI1 和 TI2 极性。如果需要,还可 对输入滤波器进行编程。CC1NP 和 CC2NP 必须保持低电平。
在 TIMx_CR1 寄 存器的 CEN 位中写入“1”,使能计数器。根据该信号转换序列,计数器相应递增或递减计数,同时硬件对 TIMx_CR1 寄存器的 DIR 位进行相应修改。
因此,在启动前必须先配置 TIMx_ARR。计数器从 0 递增计数到 ARR,或从 ARR 递减计数到 0。
定时器配置为编码器接口模式时,会提供传感器当前位置的相关信息。使用另一个配置为捕获模式的定时器测量两个编码器事件之间的周期,可获得动态信息(速度、加速度和减速度)。根据两个事件之间的时间间隔,还可定期读取计数器。如果可能,可以将计数器值锁存到第三个输入捕获寄存器来实现此目的(捕获信号必须为周期性信号,可以由另一个定时器产生);还可以通过由实时时钟生成的DMA 请求读取计数器值。
以上是关于STM32F429第二十六篇之编码器功能的主要内容,如果未能解决你的问题,请参考以下文章