VL53L5CX 程式架構與移植
前言
有別於傳統 IR 感測器,VL53L5CX 採用 ST 最新一代的直接 ToF 技術,無論目標顏色和反射情況為何,都能達到絕對距離量測。它提供長達 400 cm 的準確測距,並能高速運作 (60 Hz),是目前市面上最快的多區域小型 ToF 感測器。
硬體接線
這邊因ST官方資料還蠻齊全的,針對幾個特點注意事項說明即可
這邊VL53L5線路部分基本上大多為電源與地線,主要通訊部分2 pin I2C與INT 還有一PIN GPIO output(Ln)去控制
這邊下載官方範例中可以看到定義腳位有點多,是因為這邊把左右側的小板也遇設上去
軟體移植
軟體部分可先下載STSW-IMG023,下載完成後如下圖
主要會使用到的為VL53L5CX_ULD_API與Platform,這邊官方很貼心,讓需要移植至不同平台開發者方便使用針對Platform這個資料夾中把該平台的I2C Bus Lib設定好即可使用
未定義
ST sample code已定義
如果單純只是ST 不同MCU移植可以直接拿取CubeIDE_F401RE_Example裡面Platform檔案直接覆蓋
這邊僅移植至不同ST MCU上把對應Code直接搬移即可使用
但這邊會發現解析度只有4*4需要改成8*8解析度可以在code上增加
status =vl53l5cx_set_resolution(&Dev, VL53L5CX_RESOLUTION_8X8);
其中
#define VL53L5CX_RESOLUTION_4X4 ((uint8_t) 16U)
#define VL53L5CX_RESOLUTION_8X8 ((uint8_t) 64U)
X-Talk CAL
這邊範例並沒有針對Offset與X-Talk寫上去,流程圖如下
只要在Ranging前把Xtalk數值抓出來即可並附加上去即可
printf("Running Xtalk calibration...\n");
status = vl53l5cx_calibrate_xtalk(&Dev, 3, 4, 600);
if(status)
{
printf("vl53l5cx_calibrate_xtalk failed, status %u\n", status);
return status;
}else
{
printf("Xtalk calibration done\n");
/* Get Xtalk calibration data, in order to use them later */
status = vl53l5cx_get_caldata_xtalk(&Dev, xtalk_data);
/* Set Xtalk calibration data */
status = vl53l5cx_set_caldata_xtalk(&Dev, xtalk_data);
}