基于CubeMX-STM32F1_Encoder 接口读取 EC11

基于CubeMX-STM32F1_Encoder 接口读取 EC11


简介

Encoder

增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。
绝对式编码器的每一个位置对应一个确定的数字码,因此它的示值只与测量的起始和终止位置有关,而与测量的中间过程无关。

由上可知 EC11 属于增量式编码器的类型

EC11 旋转方向及波形图

编码器 CW、CCW

  • 当顺时针方向旋转(CW)时输出的波形为

  • 1、以 A 端为参考
    当 A 为高电平时,B 会出现上升沿跳变。
    当 A 为低电平时,B 会出现下降沿跳变。

  • 2、以 B 端为参考
    当 B 为高电平时,A 会出现下升沿跳变。
    当 B 为低电平时,A 会出现上降沿跳变。

  • 当逆时针方向旋转(CCW)时输出的波形为

  • 1、以 A 端为参考
    当 A 为高电平时,B 会出现下升沿跳变。
    当 A 为低电平时,B 会出现上降沿跳变。

  • 2、以 B 端为参考
    当 B 为高电平时,A 会出现上升沿跳变。
    当 B 为低电平时,A 会出现下降沿跳变。

当 MCU 无 Encoder 功能时可参考上述解释通过端口的中断来识别 EC11 的旋转
在这里插入图片描述

EC11 应用电路图

在这里插入图片描述

定时器的 Encoder 功能

使用通用定时器的 Encoder 功能时要确定该定时器是否支持,
例如:
STM32F1 中 高级定时器 TIM1&TIM8、通用定时器 TIM2 - TIM5 都支持 Encoder 功能,但基本定时器 TIM6&TIM7 不支持 Encoder 功能
STM32F4 中 高级定时器 TIM1&TIM8、通用定时器 TIM2 - TIM5 都支持 Encoder 功能,但通用定时器 TIM9 - TIM14 和 基本定时器 TIM6&TIM7 不支持 Encoder 功能

Encoder 功能接口:根据两个输入信号的跳变顺序,产生计数脉冲和方向信号。根据两个输入信号的跳变顺序,计数器向上或向下计数,同时硬件对 TIMx_CR1 寄存器的 DIR 位进行相应的设置。不管计数器是依据 TI1 计数、依靠 TI2 计数或者靠 TI1 和 TI2 计数,在任意输入端(TI1 或 TI2)的跳变都会改变 DIR 位。

使用 CubeMX 来配置 Encoder 功能

选择 Encoder 模式
在这里插入图片描述
计数器的预分频器
该参数设置的定时器 PSC 寄存器的值,PSC 值与计数器相关,计数器的时钟 CK_CNT = fCK_PSC/(PSC[15:0]+1)
该值的设定与选择的 Encoder 模式相关
在这里插入图片描述

在这里插入图片描述

设置 Encoder 的模式为 TI1

设置 TI1 模式下 TIMx_CCER 寄存器的 CC1P 位,计数为下降沿
在这里插入图片描述
以上配置结合 EC11 数据手册,MCU 的 Encoder 接口模式进行配置

生成代码处理

启动 Encoder 功能

在 TIMx Encoder 功能的初始化函数中添加启动编码器函数,使能通道 1

HAL_TIM_Encoder_Start(&htim2,TIM_CHANNEL_1)

获取计数器值

获取计数器寄存器 TIMx_CNT 的值

__HAL_TIM_GET_COUNTER(&htim2)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式Stark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值