TLE5012B 硬件电路设计4线SPI通信,驱动完美兼容4线SPI不用改MOSI开漏推挽输出
Posted Mark_md
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TLE5012B 硬件电路设计4线SPI通信,驱动完美兼容4线SPI不用改MOSI开漏推挽输出相关的知识,希望对你有一定的参考价值。
一、TLE5012B 简介
TLE5012B 是一种款高分辨率旋转位置传感器,用于在整个 360 度范围内进行角度测量。
它通过使用单片集成 巨磁阻 (iGMR) 元件
,来测量正弦和余弦角分量,这些原始信号(正弦和余弦)在内部进行数字处理,以计算磁场(磁铁)的角度方向。
数据通信是通过与 SPI
兼容的 双向同步串行通信 (SSC)
完成的。传感器配置存储在寄存器中,可通过 SSC
接口访问。此外,TLE5012B
还提供其他四个接口:脉宽调制 (PWM) 、短 PWM (SPC) 、霍尔开关模式 (HSM) 和增量接口 (IIF)。这些接口可以与 SSC
并行或单独使用。
二、硬件参数
- 15 位绝对角度位置传感器。
- 在整个使用寿命和温度范围内,启用自动校准,最大1.0° 角度误差。
- 高达 8 Mbit/s 的双向 SSC 接口。(实测跑到18MHz也能正常通信)
- 接口:SSC、PWM、增量接口 (IIF)、霍尔开关模式 (HSM)、短 PWM 代码(SPC,基于 SAE J2716 中定义的 SENT 协议)
- ESD > 4 kV (HBM)
- 最常用的型号为
TLE5012B E1000
,接口为ABI
和SSC
。其他型号的区别只是输出接口不一样,但都支持SSC
通信。 - 基于
巨磁阻
原理,有别于AS5047使用的霍尔。
三、硬件设计、参考电路、SPI兼容思路
TLE5012B 支持的供电范围为 3.3~5.5V
。
个人建议使用使用 3.3V供电,通信引脚串电阻还可以用来兼容5V的MCU电平。
SPI兼容思路:
TLE5012B 接口使用 SSC
,兼容 SPI
,其实相当于一个半双工的SPI
。
看过他人的电路。一般是直接将 MCU
的 MOSI
和 MISO
并联一起,直接接 TLE5012的 DATA
引脚。
通过更改驱动,控制MOSI
的输出类型为开漏或推挽。发送命令时设置MOSI
为推挽输出,接收数据时设置MOSI
为开漏,以实现正常通信。
存在问题:
上面的方法听着巧妙,但并不算完美。因为有的MCU或者模组,其不一定提供寄存器手册,其开发方式可能是由原厂团队维护的SDK,通过库的方式来调用接口,从而进行二次开发。而SDK的库中会不会预留设置GPIO输出类型
的接口,要看开发团队的心情。如果没有,就基本宣布拜拜。
并且直接并联的方式,也容易在调试过程中,因代码不稳定造成GPIO损毁。
再者不方便移植,换个主机设备,很可能因为要改SPI驱动底层,而用不了。
让SSC完美兼容4线SPI的参考电路:
我摸索出个方式是,像下图那样串联电阻。通信方式与标准4线SPI
完全一致,波形也基本一致,用不着额外更改SPI
驱动,可以直接用原有的SPI
驱动去读TLE5012B
的数据。串两个电阻就能让TLE5012B有更多的设备兼容性,何乐而不为呢。
只不过MOSI
发数据时,也能在MISO
上看到波形。但因为SSC
是个半双工的SPI,不需要同时发送和接收,对TLE5012B的读数据不会造成影响。
(使用下面的电路,配置SPI时要将MOSI的空闲电平
配置为0,配置为1可能会对返回数据有影响。)
(实际波形 见 下面的逻辑分析仪
的读角度
测试波形)
完全兼容4线SPI通信的参考电路:
四、SPI通信时序、读寄存器流程
TLE5012B 的 SPI 使用 模式1
(CPOL=0,CPHA=1)来交换数据。
数据传输从 CSn 的下降沿开始,TLE5012B 在 SCL 的下降沿采样 MOSI 数据。 SPI 命令在帧结束(CSn 的上升沿)时执行。
读寄存器流程
读 磁极旋转角度
的流程在另一篇用户手册中。
读磁极旋转角度:SPI 先发送 0x8021
,等待 t_{wr_delay} (最小130ns
)后,读 4个字节。
读到的 4个字节中,前2个字节是磁极的角度
,后2个自己是安全验证位
,用来承载传感器错误信息和数据帧的校验。
(上述过程只读2个字节也可以,只不过因为缺少了安全字,可能会因SPI线路传输导致数据有误)
读磁极角速度 也是一样的:SPI 发送 0x8031
,等待 t_{wr_delay} 后,读 6个字节。
五、逻辑分析仪波形、数据波动测试
测试的 MCU 使用 ESP32
,以 4MHz-SPI 的速率通信。
(实测信号线串联220R电阻,SPI以18MHz的速率也能正常通信,远高于手册推荐的8MHz。)
源码暂未放出,待后续完善个人ESP32驱动库后一同开源。获取预览版可先评论区留下邮箱。
4线SPI 读磁极转子角度。(0x8021)
仅读了2个字节的寄存器值,没有读后面的安全字,可能会因SPI线路传输导致数据有误。
仅读了2个字节的寄存器值,没有读后面的安全字,可能会因SPI线路传输导致数据有误。
由上面两图可以看到,MOSI
、MISO
串联电阻的电路,可以完美用标准4线SPI
驱动。
虽然在 MOSI
发数据时,影响到了 MISO
的波形。但因为SSC
是个半双工的SPI,不需要同时发送和接收,所以对TLE5012B的读数据不会造成影响。
(使用上面的电路,需配置SPI MOSI的空闲电平
为 0,配置为1可能会对返回的数据有影响。)
数据波动测试
磁极转子静止时的数据输出。波动不大,很稳定,波动基本在 ±2内。
输出的角度为旋转角度的绝对值,15Bit,0 ~ 32768,对应着 0~360°。用于运动控制的场合,不用像ABI每次上电都要归零点,使用很方便。
相关推荐链接
AS5047P磁编码器应用设计大全解:硬件电路设计、SPI通信时序、逻辑波形分析、注意事项
TLE5012B磁编码器原理,巨磁阻(GMR)磁编码器原理及优点,径向充磁磁铁的安装
各厂商磁编码器对比,AS5047、AS5048、AS5600、TLE5012、MA730
AMS磁编码器:AS5048与AS5047区别,伺服电机闭环系统位置反馈
ODrive踩坑(四)ODrive配置AS5047P-SPI绝对值磁编码器
ODrive踩坑(二)电机和编码器参数配置、校准、位置闭环模式转动电机(TLE5012B - ABI)
↓ 欢迎点赞收藏。
以上是关于TLE5012B 硬件电路设计4线SPI通信,驱动完美兼容4线SPI不用改MOSI开漏推挽输出的主要内容,如果未能解决你的问题,请参考以下文章
Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)