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,接口为 ABISSC。其他型号的区别只是输出接口不一样,但都支持SSC通信。
  • 基于 巨磁阻 原理,有别于AS5047使用的霍尔。

三、硬件设计、参考电路、SPI兼容思路


TLE5012B 支持的供电范围为 3.3~5.5V

个人建议使用使用 3.3V供电,通信引脚串电阻还可以用来兼容5V的MCU电平。

SPI兼容思路:

TLE5012B 接口使用 SSC,兼容 SPI,其实相当于一个半双工的SPI
看过他人的电路。一般是直接将 MCUMOSIMISO 并联一起,直接接 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线路传输导致数据有误。

由上面两图可以看到,MOSIMISO串联电阻的电路,可以完美用标准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开漏推挽输出的主要内容,如果未能解决你的问题,请参考以下文章

第四季-专题20-SPI驱动程序设计

ZYNQ之FPGA学习----SPI协议驱动模块仿真实验

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

stc单片机的spi通信

RK3399平台开发系列讲解(内核子系统篇)2.296线SPI说明