一.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通信時序、邏輯波形分析
評論