基於stm32+VL53LXX測距功能的實現

在學習完正點原子mini開發板的iic通信部分之後,發現mini板並沒有對應iic硬件連接線的外部設備。但是好奇心嚴重(無所事事)的我也想嘗試iic通信的硬件實現,於是利用了前幾天買二手f7開發板順便要來的測距模塊,藉此來滿足了自己的求知慾。

1,模塊的引腳圖:

 

2,模塊中的引腳與mcu接線的狀況:

VIN:接5v電源線

GND:接地線

SCL:接iic時鐘線

SDA:接iic數據線

GPIO1:不知道具體的功能

XSHUT:使能引腳

測距模塊連接stm32f103的引腳連接圖如下:

3,模塊的特性

因爲該模塊沒有實際引用到一個具體的項目中,所以對它的精度以及測量模式只是粗略的瞭解一下。

VL53L0X 工作模式:

(1)Single ranging(單次測量),在該模式下只觸發執行一次測距測量,測量結束後,

VL53L0X 傳感器會返回待機狀態,等待下一次觸發。

(2)Continuous ranging(連續測量),在該模式下會以連續的方式執行測距測量。一

旦測量結束,下一次測量就會立即啓動,用戶必須停止測距才能返回到待機狀態,最後的一

次測量在停止前完成。

(3)Timed ranging(定時測量),在該模式下會以連續的方式執行測距測量。測量結束

後,在用戶定義的延遲時間之後,纔會啓動下一次測量。用戶必須停止測距才能返回到待機

狀態,最後的一次測量在停機前完成。

VL53L0X 測量精度適用範圍:

4,IIC通信測距模塊的代碼實現

功能測試部分:

 

 在vl53l0x_test()函數中,判斷模塊是否完成初始化,在模塊完成初始化之後,按鍵選擇不同的測試模式,實現對應的測試功能。

邏輯分析框圖如下:

 

模塊初始部分代碼:

設備的初始函數中,初始iic接口配置,初始vl53lxx的設備結構體。在模塊復位之後重新設置模塊設備的地址,設置地址成功之後,調用api函數 VL53L0X_DataInit()初始模塊設備。讀取id信息,讀取校準信息,判斷在完成初始化之後,iic與模塊的通信是否正常。最後打印代碼執行的狀態信息。

邏輯分析框圖如下:

 

校準模式代碼:

代碼中初始狀態,打印調試信息之後進入任務循環,在循環中根據按鍵的狀態執行不同的任務;

如果按鍵1按下,調用校準函數vl53l0x_adjust(),進入校準處理。判斷校準的狀態,打印結果信息。

如果按鍵0按下,led1點亮,同時返回上層界面。

vl53l0x普通測量模式測試代碼:

在普通測試模式的代碼中,初始各種參數(mode,key等),顯示普通測試模式對應的界面後進入任務循環,在循環中根據按鍵的狀態執行不同的任務;

WK_UP按鍵按下:返回主界面。

按鍵1按下:mode++(局部變量mode值用來決定,循環選擇不同的測試模式),顯示當前模式的選擇。

按鍵0按下:調用vl53l0x_general_start()函數,開始執行測距功能。

模塊中斷模式的測試代碼的處理和普通模式下的處理的架構是相同的,但是調用的功能函數是vl53l0x_interrupt_start();

 

在原驅動模塊的程序中,將原代碼中軟件模擬iic的通信方式更改爲硬件iic通信。

由於是菜雞程序員,所以這其實也是我第一次獨立配置模塊,所以如果文章存在問題也歡迎各位大佬進行指正。

 

網盤下載地址:

鏈接:https://pan.baidu.com/s/1Zsp-d5gn8GMMt82Db7Fw1Q 
提取碼:bz55

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章