一.AS5047P 磁编码器介绍
- AS5047P 磁编码器概述
AS5047P 是一款高分辨率旋转位置传感器,适用于高速(最高达 28k rpm)下的全 360 ° 范围角度测量,该传感器将垂直于芯片表面的磁场分量转换为电压,从而获取转动角度信息。该传感器主要特点如下:
- 14 位绝对角度位置传感器;
- 适用于最高 28K rpm 转速的测量,动态角度误差最大值约为 ±0.2°;
- 通信支持 标准 4线SPI 串行接口;
- 拥有 SPI、ABI、PWM、UVW 多种接口选择;
- ABI 接口可配置输出为 4096/4000/2048/2000/1600/1200/1024/800/400/200/100 步每转。
2. AS5047P 寄存器结构
易失性寄存器如图 1.1 所示,每个寄存器地址均为 14 位。
图 1.1 易失性寄存器
简单介绍如下:
- NOP:该寄存器执行空操作,没有实际功能。
- ERRRFL:该寄存器用于存储错误信息,包含奇偶校验错误、无效命令错误、帧错误。
- PROG:该寄存器用于对 OTP 存储器进行编程。
- DIAAGC:该寄存器用于存储磁场强度诊断信息及自动增益值。
- MAG:该寄存器用于存储CORDIC 幅度信息。
- ANGLEUNC:该寄存器用于存储没有动态角度误差补偿的角度信息。
- ANGLECOM:该寄存器用于存储具有动态角度误差补偿的角度信息。
- AS5047P 与 主机的数据传输
(1)AS5047P-SPI 通信时序
AS5047P 只支持 SPI 从机模式 与主机进行数据传输,采用的是 SPI mode=1 (CPOL=0, CPHA=1),以下是 SPI mode=1时序图 2 所示:
图 1.2 SPI mode=1 时序图
(2)AS5047P-SPI 传输过程:
一个 SPI 事务由一个 16 位的命令帧和一个 16 位的数据帧组成。命令帧结构如图 3 所示:
图 1.3 AS5047P-SPI 命令帧结构
一个 命令帧包含 14 位的寄存器地址和一个读 / 写位,用于指示执行读 / 写操作,bit 15 位为奇偶校验位,由bit [14:0 ] 中 1 的个数计算得到,若 bit[14:0] 中有奇数个 1,则 bit 15 置 1,否则置0。以读取 0X3FFF 寄存器为例,地址为 0X3FFF,读写位 为 1,bit [14:0 ]为 111 1111 1111 1111,其中有 15 个 1,因此 PARC 为 1,故命令帧为 1111 1111 1111 1111,0XFFFF。
数据帧结构如图 1.4 所示:
图 1.4 AS5047P-SPI 数据帧结构
奇偶校验位由低15位计算得到,如果在上一个 SPI 命令帧中发生错误,则 EF 会置 1。
SPI 读操作在 CSn 上升沿时采样 MISO 上的数据,DATA 会在下一次命令传输过程中通过 MISO 被读出,即在发送命令的同时可以读到上一次命令指定的寄存器中的数据。具体过程如图 1.5 所示:
图 1.5 AS5047P-SPI 读操作流程
以上介绍仅针对读操作的流程,更多详细信息可查看 AS5047P Datasheet。
二. 使用 LPC845 EVK 读取 AS5047P 的流程
1. 硬件连接
首先要将 AS5047P EVK与 按照图 2.1 方式连接,硬件连接实物图如图 2.2 所示:
图 2.1 硬件连接示意图
图 2.2硬件连接实物图
2. 软件配置(本文使用的代码均以 NXP 提供的 LPC845 SDK 为基础进行修改)
读取 AS5047P 的角度信息,在保证时序无误的前提下直接读取寄存器 ANGLECOM(0X3FFF)下的数据,无需配置其他寄存器。
(1)SPI 初始化
图 2.3 SPI 初始化代码
(2) 时钟配置
图 2.4 时钟配置代码
(3)读取寄存器数据,其中 regValue 寄存器返回的数据。
图 2.5 传输数据代码
3. 功能验证:
手动转动电机,我们通过串口助手观察返回的数据如图 3 所示,数据随着电机的转动而变化:
图 3 串口助手数据
参考文档:
[1]. AS5047P Datasheet
AS5047P_DS000324_3-00.pdf (ams.com)
[2]. AS5047P磁编码器ESP32驱动程序、硬件电路设计、SPI通信时序、逻辑波形分析
评论