
说明 本节比较简单,主要是演示I2C接口和SPI接口读取编码器角度。为增加大家对编码器的理解,后半部提供四种常用编码器的操作说明,并提供源代码。 一、硬件介绍 本节实验适合运行在SimpleMotor和STM32最小系统板上(Bluepill)。 1.1、硬件准备 1.1.1、SimpleMotor方案 ![]() 两个编码器可以是两个AS5600,也可以是两个TLE5012B,或者一个是AS5600,一个是TLE5012B。 ![]() 1.1.2、STM32方案 ![]() 两个编码器可以是两个AS5600,也可以是两个TLE5012B,或者一个是AS5600,一个是TLE5012B。 ![]() 1.2、硬件连接 1.2.1、原理图 ![]() ![]() 1.2.2、接线 ![]() 或者 ![]() 二、代码编译下载 本节代码只演示AS5600和TLE5012B两种编码器,其它编码器请自行移植代码。 2.1、代码解析 1、主循环读角度值,每隔1秒打印一次。可以同时读两个编码器,只需读一个的屏蔽另一个。 如果需要打印速度,可以把屏蔽打开。 ![]() 2、“MyProject.h”文件中选择编码器型号,1表示使用,0表示不用。只用一个编码器的,可以把不用的都设置为0。 ![]() 3、上电初始化,根据“MyProject.h”中的宏定义编译。 ![]() 4、需要说明的是I2C读编码器的代码,本节代码采用硬件I2C,支持I2C1和I2C2。STM32的硬件I2C代码网上有很多参考,但是写的比较乱,移植了几个都不能用,在ST官网上找了一个例程,因年代久远,与现在常用的库函数风格不同,都是直接操作寄存器,不过做为底层代码,不会影响大家的体验。 ![]() 5、ST官网I2C例程,我放在网盘了,有需要的可以下载看看。 ![]() 6、I2C的波特率是400KHz,SPI波特率是9MHz。 ![]() ![]() 2.2、下载验证 1、根据实际连接的编码器类型,设置“MyProject.h”中的参数, 2、编译下载。串口或者SWD, 3、转动电机,观察角度变化。(角度的单位是rad,速度单位是rad/s) ![]() 2.3、其它说明 1、I2C和SPI速度对比: - 两个编码器都使用AS5600,主循环3420Hz, - 两个编码器都使用TLE5012B,主程序15200Hz, - M1是AS5600,M2是TLE5012B,主程序5530Hz, - M1是TLE5012B,M2是AS5600,同上 以上数据来自实际测试,会有误差。 2、不同编码器工作电压电流对比: - AS5600:3.3-5V,6.5mA @max - TLE5012B:3-5.5V,14mA @Type, - AS5047/AS5048:3.3-5V,15mA @max - MA730:3.3V,11.7mA @Type, 以上数据来自各芯片的数据手册。 本节会把这两个芯片的代码开源,有兴趣的可自行测试移植。 三、百度网盘代码说明 3.1、STSW_STM32020_V4.0.0 ST官方例程,包含I2C硬件通信,请自行查看。 ![]() 3.2、STM32ReadTLE5012B_spi2_m2 ①、原理图 ![]() ②、SimpleMotor的M2接口连接 ![]() ③、也可以用STM32最小系统板连接 ![]() ④、串口打印角度0—360° ![]() 3.3、STM32ReadTLE5012B_spi2_m1 ①、原理图 ![]() ②、SimpleMotor的M1接口连接 ![]() ③、也可以用STM32最小系统板连接 3.4、STM32ReadTLE5012B_spi1 ①、原理图 ![]() ②、不支持SimpleMotor,用STM32最小系统板连接 ![]() 3.5、STM32ReadTLE5012B_ABZ ①、原理图, 利用定时器的编码器接口模式,捕获AB信号;配置I信号为中断输入,电机每转一圈触发一次中断,把AB信号的脉冲计数打印。 ![]() ②、用STM32最小系统板连接 3.6、STM32ReadMA730 请自行对照手册查看代码 3.7、STM32ReadAS5600 注意:这是模拟I2C ①、原理图 ![]() ②、SimpleMotor的I2C2连接 ![]() ③、也可以用STM32最小系统板连接 ![]() ④、串口打印角度0—360° ![]() ———————————————— 版权声明:loop222 |
STM32 GUI LTDC 最大像素时钟评估方法
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南