國產3D霍爾傳感器的SPI封裝技術分析

2023-08-15 10:13:40 來源:云深之無跡

拿到一個供應商給的傳感器,正好是項目用的上,直接進行一手研究,順便把封裝和最近搞的SPI用起來。

關于SPI的相關知識可以先去看我寫的兩個文章。


【資料圖】

這個是國產的傳感器框圖

國外的一款

這個地方是使用協議時候一些要注意的地方

標準的CMOS器件

測量時候的一些點參數,算功耗的時候有用

靈敏度有點小

這個是幾倍于國產芯片的靈敏度

芯片安裝時候的方向

方向

我們先從測量法方式開始封裝

SPI的通訊使用的是模式3

主機一開始發送的0001就是一個COMMAND,連續測量的意思,接著就是對里面的ZYXT進行測量,接著把發送的權力交給我們的從機,從機開始工作。

對應的把里面的一個項設置1就是對這個通道進行測量。

OK,這就是第一步,我們把commad做好

第二個也是這樣的封裝

我們這個在使用SPI信號的時候需要有一個拉低信號線的操作

這兩行宏定義是對SPI通信中的片選信號引腳進行控制的。

#define CS_Clr() HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_RESET)

CS_Clr()定義了拉低片選信號的操作。

它調用了HAL庫的GPIO寫引腳函數,將CS_GPIO_Port端口的CS_Pin引腳寫入GPIO_PIN_RESET低電平。

#define CS_Set() HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET)

CS_Set()定義了拉高片選信號的操作。

同樣通過HAL庫GPIO函數,將同一片選引腳寫入GPIO_PIN_SET高電平。

這樣,在代碼中可以通過簡單調用CS_Clr()和CS_Set()兩個宏來控制SPI的片選信號,不需要每次都寫一長串GPIO控制代碼。

這個時序圖就是我們的讀寄存器

讀這個0x16寄存器的位置,這個數值

22->88,這個確實是要移動2位

可以按照上面封裝的樣子把讀取的傳感器地址寫好

把這個操作合并在一起第一個八位是操作,后一個八位是寄存器的地址,但是要注意移位。

我們發送兩個字節,所以這里就是2,接著回收的數據的數據是3個字

這個地方就是一個字節

data這里就要連續傳輸了,要2個字節

數據在此

資料看見的

文章應該還有很長的,馬上要12點了,完整的版本就看下一篇吧。

編輯:黃飛

標簽:

上一篇:鋰離子電池充電器電路圖解析
下一篇:最后一頁