1、AS5047P硬件设计



1.1 简介、性能参数


AS5047P 是一种款高分辨率旋转位置传感器,用于在整个 360 度范围内进行高速(高达 28krpm)角度测量。这种新型位置传感器配备了革命性的集成 动态角度误差补偿 (DAEC™),延迟几乎为零,并提供强大的设计,可抑制外部杂散磁场的影响。

AS5047P 非常适合具有挑战性的 BLDC 电机换向及工业应用,例如工厂自动化、楼宇自动化、机器人、PMSM(永磁同步电机)和步进电机闭环调节,以及对光学编码器的替换。

  • 14 位绝对角度位置传感器。

  • 适用于最高 28K RPM 转速的测量,动态角度误差最大值约为 ±0.2°。

  • 通信支持 标准 4线SPI 串行接口。

  • 拥有 SPI、ABI、PWM、UVW 等多种位置角度输出方式。

  • ABI 接口可配置输出为 4096/4000/2048/2000/1600/1200/1024/800/400/200/100 步每转。(有默认值,如需调整需OTP编程,只可更改一次)(注意:ABI 接口最大只支持 12位输出。)

  • 支持外部 3.3/5V 供电。封装为 TSSOP-16。


1.2 硬件设计 - 供电


AS5047P 支持两种供电方式:

  • 1、外部5V供电,使用内部LDO稳压;
  • 2、外部3.3V供电;

但要注意两种方式的通信电平不同。


1.2.1 外部5V供电,使用内部LDO稳压


使用外部5V供电,需要启用AS5047P自带的3.3V LDO。

5V由VDD输入,VDD3V3对GND接1uF电容。


1.2.2 外部3.3V供电


使用外部3.3V供电时,需要将VDD和VDD3V3短接。


1.3 硬件设计 - 注意事项


如使用外部5V的供电方式,启用AS5047P内部的3.3V LDO,则外部的供电电压必须保持在 4.5~5.5V 这个范围。

另外,还需考虑通信电平的兼容。
根据使用的 MCU3.3V/5V,来匹配 AS5047P的供电电路。

建议使用 外部3.3V-LDO 供电,CLK、MOSI、MISO、CS 串电阻以兼容5V电平。
(实测串联100R电阻,SPI以18MHz的速率也能正常通信,远高于手册推荐的10MHz。)


参考硬件,测试板


  为了方便测试 AS5047P-SPI绝对值编码器,也便于扩展不同的电机,就有了下面这块万能转接板,支持 2208、2212、3508、5008、6010、6374、42步进、57步进 等不同电机的定位安装。

  图中AS5047P转接板购买链接,我的淘宝小店:AS5047P SPI磁编码器 3206云台无刷电机 带径向磁铁 Odrive电机

  店铺详情内有安装孔位、原理图、教程、资料,手机端可能因没做适配看不到,建议用电脑打开。


2、AS5047P - SPI通信时序


从手册的第11页开始翻译

SPI 接口(从)
主机微控制器(主)使用 SPI 接口来读取或写入易失性存储器以及对非易失性 OTP 寄存器进行编程。 AS5047P 的 SPI 仅支持从模式。 它可以以高达 10 MHz 的时钟速率进行通信。

AS5047P SPI 使用模式=1(CPOL=0,CPHA=1)来交换数据。 如图 11 所示,数据传输从 CSn 的下降沿开始(SCL 为低电平)。 AS5047P 在 SCL 的下降沿采样 MOSI 数据。 SPI 命令在帧结束时执行(CSn 的上升沿)。 位顺序是 MSB 在前。 数据受奇偶校验保护。

注意:与AS5047P进行SPI通信的MCU,需要配置SPI为 SPI mode 1.(CPOL=0, CPHA=1),之前大多数情况用mode0,注意更改硬件配置。)

SPI时序
AS5047P SPI 时序如图 11 所示。

SPI事务
SPI 事务由一个 16 位的命令帧 和一个 16 位的数据帧 组成(也就是各两个字节)。 图 13 显示了命令帧的结构。
SPI命令帧

为了提高 SPI 通信的可靠性,必须生成和发送偶校验位 PARC。 奇偶校验位的错误设置会导致奇偶校验位错误,错误标志寄存器中的 PARERR 位显示了该错误。 奇偶校验位是从命令帧的低 15 位计算的。 16 位的命令帧由 寄存器地址读/写标志位 组成,该位来指示SPI事务是读还是写,以及奇偶校验位。

图 14 展示了读取的数据帧格式。

奇偶校验位 PARD 由 AS5047D数据帧的低 15 位计算。 如果前一个 SPI 命令帧中发生错误,则 EF 位被置1。 SPI 读取在 CSn 的上升沿进行采样,数据通过下一个读取命令在 MISO 上传输,如图 15 所示。
SPI读数据帧

表15很有参考意义的,图中包含了多个 SPI读 的消息帧。
CMD 和 DATA各16位,DATA会在下一次的CMD传输中被读出。很标准的SPI读过程。
AS5047的一个完整 SPI读 消息帧 = 表 13-命令帧(MOSI) + 表 14-读数据帧(MISO)

发送CMD的同时,可一同读出上次CMD指定的寄存器数据。这种读的方式,特别适合AS5047这样,需要以高刷新率读取电机转子位置的场合。

SPI写数据帧

奇偶校验位 PARD 必须根据 16 位数据计算。在 SPI 写事务中,写命令帧之后是 MOSI 的写数据帧。 写数据帧由地址在命令帧中的寄存器的新内容组成。

在通过写数据帧在 MOSI 上传输新内容期间,在 MISO 上发送旧内容。 在 MOSI 上的下一个命令中,寄存器的实际内容在 MISO 上传输,如图 17 所示。

区别于表15-SPI读
AS5047的一个完整 SPI写 消息帧 = 表 13-命令帧(MOSI) + 表 16-写数据帧(MOSI)
特别注意SPI写 消息帧时,MISO上的数据可以不读取,除非有需要此寄存器先前内容的需求。千万别让这个搞混了。正常按SPI写操作就行,不必关注MISO输出的数据。另外SPI写几乎用不到,除非有OTP编程的需求。


3、寄存器结构



3.1 易失性寄存器


易失性寄存器如图 18 所示。每个寄存器都有一个 14 位地址。

读取 NOP 寄存器相当于 AS5047P 的 nop(无操作)指令。

Figure 19~24 详细的说明了 易失性寄存器位功能。内容太多,请自己阅读数据手册。

简要汇总
NOP:读取 NOP 寄存器相当于 AS5047P 的 nop(无操作)指令。
ERRFL:错误标志寄存器。包括:奇偶校验错误、无效命令错误、帧错误。
PROG:用于对 OTP 存储器进行编程,二次开发基本用不到,不看了。
DIAAGC:磁场强度标志,CORDIC 溢出,及AGC控制,也用不到。
MAG:CORDIC 幅度信息,用不到。
ANGLEUNC:没有动态角度误差补偿的角度信息。
ANGLECOM:具有动态角度误差补偿的角度信息。(获取转子角度,不需要配置其他任何寄存器,在保证时序无误的前提下,只读这一个寄存器的值就够了。读取后要对 PARD进行偶校验,无误后将其转换为实际的转子角度)


3.2 非易失性寄存器 (OTP)


OTP(一次性可编程)存储器用于将传感器的绝对零位和客户设置永久存储在传感器 IC 中。

对于所有非易失性寄存器(软写入),可以多次进行 SPI 写/读访问。 硬件复位后软写入的寄存器内容将丢失。

自编程只可完成一次。 因此,非易失性寄存器的内容永久存储在传感器中。 硬件复位后寄存器内容仍然存在,不能被覆盖。

对于传感器的正确功能,不需要 OTP 编程。 如果未进行配置或编程,非易失性寄存器处于默认状态 0x0000h。
注意:注意上面的一行话,仅使用传感器的正常功能,是不需要OTP编程的。而且OTP只能固化一次,不可二次编程)

非易失性寄存器表

Figure 26~34 详细的说明了 非易失性寄存器位功能。内容太多,请自己阅读数据手册。

自己看了下 非易失性寄存器表 的功能,进行以下总结:

  • ZPOSMZPOSL绝对零位 的校准值。
  • SETTINGS1SETTINGS2 存储着用户自定义配置。这些配置包括:定义 PWM 的输出功能、禁用动态角度的误差补偿、ABI 脉冲的 十进制或二进制选择、启用 PWM输出、UVW 的极对数设置、滞后设置、ABI的分辨率(4096/4000/2048/2000/1600/1200/1024/800/400/200/100 步每转)。
  • 芯片出厂后,默认的OTP配置是怎样?

手册对ABI接口的概述:
AS5047P 可以通过增量接口将角度位置发送到主微控制器。 此接口可与其他接口同时使用。

默认情况下,增量接口设置为以每转 4096 步或每转 1024 脉冲 (ppr) 的最高分辨率工作。 可以分别使用位 ABIBIN 在每转十进制和二进制脉冲之间进行选择,并使用位 ABIRES 选择每转脉冲,如图 30 所示。
(不过我买的几块芯片,实测ABI默认是每转 4000 步,感觉和手册说的有点出入…关于ABI的说法暂不确定)

OTP编程的流程框图在手册中有介绍,不过自己没有用到,就不再继续介绍OTP。


4、SPI读AS5047P旋转角度


SPI读AS5047P旋转角度的流程

SPI读角度流程:

  • 1、AS5047P和MCU上电。
  • 2、上电后至少延时等待tpon=10ms。才可以发送有效数据。
  • 3、循环读 ANGLECOM寄存器(0x3FFF),得到 uint16 的数据。PARD位校验无误后,将其转换为转子的实际角度。

获取转子角度的过程较为简单,不需要配置其他任何寄存器,在保证时序无误的前提下,只读 ANGLECOM寄存器(0x3FFF) 这一个寄存器的值就可以了。读取后要对 PARD进行偶校验,无误后将其转换为实际的转子角度。

读的过程,需要计算 PARCPARD,他俩均为偶校验。

偶校验:确保整个被传输的数据中“1”的个数是偶数个。

故 如果载荷数据中“1”的个数是奇数个时,PARCPARD校验位填“1”,否则填“0”。

PARC是发送的(MOSI),PARD是接收的(MISO)。

所以我们在读寄存器的一帧数据内,要先对CMD进行偶检验,生成PARC。并添加到CMD的Bit15中,用MOSI发送出去,共16Bit。

MISO接收之后的16Bit数据,剥离出Bit15的PARD,对余下的数据进行偶检验,判断与PARD是否一致。

如一致,表示SPI数据传输无误,可继续进行转子实际角度计算;如不一致,则重读或者抛出异常提醒。


5、驱动程序、SPI测试波形


测试的 MCU 使用 ESP32,以 100KHz-SPI 的速率通信。

(实测信号线串联100R电阻,SPI以18MHz的速率也能正常通信,远高于手册推荐的10MHz。)

源码:easyio-lib-for-esp32 中的 Demo - 29_SPI_AS5047P


5.1 SPI读DIAAGC


上面已经说过了 AS5047P-SPI读角度流程。不过为了方便测试,这里换个寄存器。

注意DIAAGC 寄存器地址为 0x3FFC,默认值为 0x0180。但它的值会根据磁场状态动态变化,并不是固定的。只有当磁极转子的运动状态不变,DIAAGC的值才是静止的。

连续读 DIAAGC 寄存器 波形:
使用软CS,成功。


5.2 SPI读DIAAGC(硬CS,通信失败)


先前一直用的ESP32的 硬CS 引脚,读失败。

注意读取错误时,MISO上的波形。Bit14 EF-错误标志位 会一直置1,使读取的 uint16 的值 >= 16384,可用此判断SPI通信的正常与否。


5.3 SPI读ANGLECOM(转子角度,软CS,通信成功)


ANGLECOM,转子角度。读一次。


5.4 SPI读ANGLECOM(转子角度,软CS,通信成功)


ANGLECOM,转子角度。连续读。


6、SPI测试波形


数据静态误差测试:
磁极转子静止时的数据输出。波动不大,很稳定,波动基本在 ±3内,与手册描述的 ±0.1° 基本一致。

输出的角度为旋转角度的绝对值,0~360°。用于运动控制的场合,不用像ABI每次上电都要归零点,使用很方便。


7、AS5047P调试时注意事项


  • SPI通信速率最大为 10MHz,时序为 SPI mode 1.(CPOL=0, CPHA=1)
  • SPI线路不宜过长,高速时会导致时序错乱。
  • 需要判断 PARCPARD 偶校验位,以尽量减少通信链路中产生的错误。
  • 将AS5047上的磁极旋转一周,返回的值会从0~16383变化。(14Bit)
  • 硬CS引脚由于速率过快,很大概率会导致与AS5047P通信失败。建议使用 软件控制的CS
  • 转子上的磁铁需要使用 径向冲磁 的强磁,磁铁与芯片的推荐距离为 0.5~3mm

AS5047P这类磁编码器对编程的最大好处在于,可以随时获得磁极相对于芯片的旋转角度,即为转子角度。而不用像ABI编码器那样,每次上电都需要归位找零点。并且通信使用SPI总线,不必担心最大转速旋转时,ABI因线长或干扰等因素,导致线路传输丢步的意外情况。


同专栏相关推荐文章


TLE5012B磁编码器原理,巨磁阻(GMR)磁编码器原理及优点,径向充磁磁铁的安装

各厂商磁编码器对比,AS5047、AS5048、AS5600、TLE5012、MA730

AMS磁编码器:AS5048与AS5047区别,伺服电机闭环系统位置反馈



ESP32开发板开源计划


  现已开源一款ESP32物联网开发板,支持WIFI、蓝牙、以太网、RS485、CAN通信。板载6轴IMU、温湿度传感器、38K红外遥控收/发、独立RTC、TF卡座。USB和18650双电源供电,有2.0寸单点电容屏可用,配套各外设驱动和LVGL源码。Github、立创EDA、CSDN全云端同步更新。

  详情可见:

  • ESP32-IOT-KIT 开发板介绍
    ESP32开发板开源啦 ESP32-IOT-KIT全开源物联网开发板

  • PCB硬件
    立创EDA:ESP32开发板 IOT-KIT原理图、PCB、BOM

打样免费的时代,速去JLC白嫖PCB。

开源学习交流Q群:827686418

↓ 欢迎点赞收藏。

AS5047P磁编码器ESP32驱动程序、硬件电路设计、SPI通信时序、逻辑波形分析、注意事项相关推荐

  1. ODrive踩坑(三)AS5047P磁编码器的ABI接口

    前两篇已经介绍过ODrive在Windows下的使用环境搭建,以及TLE5012B - ABI编码器闭环运动的基本配置. ODrive教程资源导航 ODrive踩坑(一)windows下使用环境的搭建 ...

  2. TLE5012B ESP32驱动程序、硬件电路设计、4线SPI通信,驱动完美兼容4线SPI不用改MOSI开漏推挽输出

    一.TLE5012B 简介 TLE5012B 是一种款高分辨率旋转位置传感器,用于在整个 360 度范围内进行角度测量. 它通过使用单片集成 巨磁阻 (iGMR) 元件,来测量正弦和余弦角分量,这些原 ...

  3. ODrive踩坑(四)AS5047P-SPI绝对值磁编码器,不需每次上电校准无刷电机,直接上电可用

    前几篇介绍了ODrive在Windows下的使用环境搭建,以及TLE5012B.AS5047P的ABI配置. ODrive教程资源导航 ODrive踩坑(一)windows下使用环境的搭建,odriv ...

  4. 各厂商磁编码器对比,AS5047、AS5048、AS5600、TLE5012、MA730

    新增补了一篇,详细介绍了GMR磁编码器原理.同类对比优劣.安装方式.设计注意事项,欢迎阅览:TLE5012B磁编码器原理及优点,径向充磁磁铁的安装 AMS产品: 主打产品是AS5047和AS5048. ...

  5. ODrive踩坑(二)3508电机和TLE5012B磁编码器参数配置、校准、位置闭环模式转动电机(TLE5012B-E1000)

    ODrive对无刷电机进行闭环控制,需要提前获取电机和编码器的参数. 电机极对数 电机需要配置的参数为 极对数.最大电流.校准电流.电机类型.其他参数如相电阻.电感等可由驱动器自动测量. 极对数 = ...

  6. 认识EC11旋转编码器编写驱动程序

    前言 抛开工作,以电子爱好者的身份,单片机玩多了都会想着在单片机的外围设备玩出一些花样来. 这其中首先想到的就是"升级"输入输出设备. 这里先说一说我们常给单片机使用的输入设备. ...

  7. STM32 OLED显示屏--SPI通信知识汇总

    备注:在OLED显示屏部分,单片机是通过SPI和OLED进行通信的. 文章目录 目录 文章目录 一.SPI时序通信 二.SPI通信的分类 1.硬件SPI 2.软件SPI 三.硬件SPI SPI特性 硬 ...

  8. SPI硬件电路设计,SPI协议

    SPI硬件电路设计 1  SPI简介 2  SPI的特点和基本概念 2.1 SPI的特点 2.2 SPI的基本概念 3  SPI协议(摩托罗拉) 3.1 SPI控制器内部寄存器 3.2 时钟极性(CP ...

  9. TLE5012B磁编码器原理及优点,径向充磁磁铁的安装。AS5047、AS5048、AS5600、TLE5012、MA730

      磁编码器以其独特的优点,在近两年的产品应用上十分流行.它体积小巧.安装方便.分辨率高.较光电编码器成本更低.不受灰尘油渍影响.可非接触安装.便于与电机集成一体实现伺服控制.相较于光电编码器,磁编码 ...

最新文章

  1. 20个精美图表,教你玩转 Pyecharts 可视化
  2. nuxt 如何引入js_nuxtjs如何在单独的js文件中引入store和router
  3. JavaScript 开发进阶:理解 JavaScript 作用域和作用域链(上)
  4. Winform中通过代码设置DevExpress的TextEdit的类型为Numbernic
  5. 关系型数据库的核心单元是_核中的数据关系
  6. mongodb mysql配置_Nosql_MongoDB数据库配置以及基本指令
  7. osgEarth的Rex引擎原理分析(一二二)着色器程序的opengl过程
  8. [python库]psd文件操作库--psd_tools
  9. 【校招VIP 前端】电影详情模块的开发文档设计实战
  10. php实现自动续费功能,如何关闭wps自动续费
  11. mysql 中文数字转换_数据库中数字和中文的转换问题
  12. 为什么你比同龄人更显老?答案可能和“久坐”有关
  13. 开源Modbus 协议库---XTinyModbus
  14. 《中英双解》leetCode Arranging Coins (排列硬币)
  15. PoW 、PoS , DPoS 算法
  16. 人生第一个 Offer :作为算法工程师,去大公司 or 创业公司?
  17. java ip地址接口_java获取ip地址与网络接口的方法示例
  18. 网络服务器系统管理实训报告,网络系统管理与维护实训报告-20210726103142.docx-原创力文档...
  19. ssm Java试题库管理系统 maven
  20. Docker数据管理 Named volume

热门文章

  1. Leetcode811.Subdomain Visit Count子域名访问计数
  2. HTTP认证模式:Basic and Digest Access Authentication
  3. netty中的websocket
  4. erlang注意(经典)
  5. 【计算机组成原理】第1章 计算机系统概论
  6. 软件设计师备考知识06--树
  7. python标准库学习笔记
  8. [转]PlantUML画类图、流程图、时序图使用详解
  9. 只靠可视化大屏,做不了数字化,阿里总监总结3点,你做到了几个
  10. leetcode hot 3-4