摘要
本篇筆記主要記錄在調試Allegro microsystem 公司生產的A1333 高速,低延遲,帶有診斷和ASIL D 認證的無接觸式的0~360°的角度位置傳感器IC時遇到的一些問題。
A1333簡介
A1333可以無接觸測量0~360°角度,符合ISO262的功能安全認證ASIL D等級。 帶有自診斷功能,是一種霍爾效應的SoC,包含三部分,CVH(Circular Vertical Hall) 前端,數字信號處理部分,和電機換向和編碼器輸出,而且片上還有EEPROM,可以用來存儲參數,因為符合ASIL D等級認證,所以是汽車應用的理想選擇,廣泛用于,電動轉向,油門控制等系統,有24腳eTSSOP 封裝的和14腳封裝的, 24腳的是雙軌的,14腳封裝的是單軌的。
系統框圖
從系統框圖也可以看出,總體包含我們前面說的由三部分組成,CVH前端,數字信號處理和電機換向輸出UVW,/編碼器輸出。
典型應用框圖
一般我們都是用一個單片機來配合控制A1333, A1333有SPI 接口和ABI接口,這次我們以SPI接口為例子。
理論上任何一款帶SPI的單片機都可以完成和A1333的通信,但如果是汽車應用,要選用帶有ASIL 認證的單片機。 我們以MPC5744p 這款帶有ASIL D認證的單片機為例子。 采用4線SPI 接口和 A1333通信,使用SPI 的模式3 CPHA, CPOL 為1,1 配置。
引腳介紹
因為我們這次是以SPI通信來和A1333交換數據,所以SPI 通信的一些參數要注意下。
輸入輸出時序圖
SPI通信幀格式
A1333有三種SPI通信格式,有三種分別是16位,17位,和20位。
其實我們的驅動軟件就是要支持幾種格式,完成通信,而讀寫邏輯也在書冊中給出了。
寫邏輯
總結起來就是,寫的時候包含一位低,一位讀寫控制位,寫為高,讀 為低,6位寄存器地址位,8位數據,如果是16位幀格式就完了, 如果是20位幀格式,末尾還需加上4位CRC校驗。 要實現一個16位數據的寫操作,需要發送兩次寫邏輯來完成。
至于代碼的實現,可以采用SPI查詢模式,也可以采用中斷或者DMA方式,這個都可以,一定要注意寫一個16位的數據要通過兩次寫操作才能完成。
讀邏輯
讀操作總結起來就是一句話,按照格式同樣的內容發兩遍這樣第二遍才能獲取結果。
代碼實現上也是這樣操作,包含一位低,一位讀寫控制位,寫為高,讀 為低,6位寄存器地址位,8位數據。 按照書冊要求,結合SDK可以很容易的完成驅動的開發和使用,重點在調試。
驅動開發
本次我們使用SDK,結合上位機初始化配置工具完成驅動的生成。 其中SPI的配置如下。
在根據自己的實際應用硬件配置相應管腳就可以生成代碼了,生成的工程是空的,我們需要調用生成的驅動函數來完成對A1333的驅動,其實就是完成讀寫函數,然后在主程序中通過狀態機去調用實現不同地址,不同寄存器的操作,包含角度的讀取,零點的校準,等操作。
測試
按照手冊要求完成了驅動開發,可是通訊的時候,A1333沒有反應,用示波器測到的波形如下。
發送的數據和時鐘波形都是正確的,可是A1333從機沒有反應,讀取到的值全是0, 是有問題的,應檢查軟件代碼和硬件排查問題。
軟件上首先排查驅動有沒有問題,經過多次手冊閱讀和軟件排查發現配置和驅動都沒有問題,最后就排查硬件,因為是從硬件工程師手里拿到的板子,一開始沒有排查硬件,后來和硬件工程師一塊排查,發現TEST腳沒有接地,而是被拉到了電源柜VCC上,這樣導致A1333工作不正常,TEST腳是廠家測試用的,一般正式用要拉地。 后將TEST腳拉地,A1333有了數據回應。
經過排查是因為Test 管腳沒有接地,直接接到了Vcc上, Test 應該接地按照手冊要求,經硬件工程師更改電路,將Test飛線接地,工作正常。
EEPROM解鎖
A1333含有EEPROM可以用來存儲參數,但是在操作前需要解鎖,而解鎖是需要特殊密碼指令的。
就是連續發送這5條寫指令,然后讀取0x3C寄存器,按照解鎖指令和時序發送完指令后,可以讀取0x3C地址,如果 寄存器的最低位 bit0 如果返回為1,表明解鎖成功。 驅動測試波形如下。
解鎖成功后,就可以進行EEPROM的操作,更改參數,例如零點的校準角度,等等,這里就不在贅述。
-
傳感器
+關注
關注
2550文章
51050瀏覽量
753176 -
接口
+關注
關注
33文章
8580瀏覽量
151052 -
調試
+關注
關注
7文章
578瀏覽量
33924 -
SPI
+關注
關注
17文章
1706瀏覽量
91531 -
allegro
+關注
關注
42文章
655瀏覽量
145139
發布評論請先 登錄
相關推薦
評論