STM32CubeMX的正交编码器encoder

本文详细介绍了如何使用STM32CubeMX配置STM32F429IGT6芯片的正交编码器功能,并提供了代码实现及接线指导。

由于最近干活遇到需要获取正交编码的功能,所以返回来研究一下STM32CubeMX的编码器功能,之前也更新过STM32的定时器功能,但是因为之前搞平衡车的正交编码器没有搞清楚原理,就直接用了脉冲输入功能草草了事,现在也算是为之前的年轻买单了,不过看到现有的Encoder说明都比较简单,所以就当是为开发者做贡献了,我研究清楚之后来一篇博客。
书归正传,正交编码器通常是安装在电机上的,与电机转子的主轴同轴,有一些是通过主轴连接减速或加速齿轮组再接入编码器的,编码器一般有光栅编码器和磁极编码器两种,正转反转输出的脉冲都是下图这个样子
正交编码器脉冲输出
STM32本身带有处理正交脉冲的功能,也就是定时器中的Encoder模式
具体操作:

STM32CubeMX配置

1.打开STM32CubeMX,选择自己使用的芯片,此处我以STM32F429IGT6为例进行;
2.设置系统、时钟基本操作

SYS
SYS系统设置
RCCRCC时钟设置CC

3.定时器设置

此处我选用的是TIM3,TIM3位通用定时器,一般芯片通用定时器比较多
Combined Channels采用Encoder Mode(编码器模式)
选用此模式后TIM3的CH1和CH2就变为编码器接口了,记住对应的两个接口,之后要把编码器信号接到这两个口上,我的是PA6和PA7
在这里插入图片描述
下方参数设定根据需求进行设定,由于我需要记录编码器的上升沿和下降沿,所以此处选择的是Encoder Mode TI1 and TI2,这个模式将AB两组脉冲的上升下降沿都计数了,就是计数4次,不需要那么精确的同学可以把预分频系数(Prescaler)修改为4-1,那么脉冲检测到4个脉冲就会计数1次了,滤波器看个人,我用杜邦线直连的,距离10cm不到所以我设的是0,具体怎么选可以看STM32中文参考手册,懒人看下面的图
在这里插入图片描述
在这里插入图片描述

4.串口设置

为了方便观察,需要通过串口发送对应的旋转方向,旋转计数值到串口调试助手。
由于芯片只用于发送数据,就不搞中断了,直接选择异步串口即可
在这里插入图片描述

5.最后配置时钟树

这个大家自行处理,每块芯片都不同,最终让中间HCLK(MHz)为72即可
在这里插入图片描述

6.项目配置

我用的开发环境是Keil5,所以在Toolchain/IDE中选择了MDK-ARM

在这里插入图片描述
代码生成的时候把Generated files中的第一项选中,不然h文件和c文件混着,看着都难受
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值