VL53L0x 是ST公司生成的 TOF激光测距传感器,得益于非常小巧的尺寸,很容易放入手机、无人机中,提供更加精准、稳定的测距方式。
本文代码,使用 STM32F4xx的 HAL库。
VL53L0x.c
#include "VL53L0x.h"
#include <math.h>
#include "PersonalMath.h"
struct VL53L0xData VL53L0x_Bottom; //底部连接在IIC2的VL53L0x的数据
void VL53L0x_init(I2C_HandleTypeDef *hi2c)
{
uint8_t VL53L0x_SendData[2] = {0x01};
uint8_t VL53L0x_RecData[5] ;
/* //Revision ID:
HAL_I2C_Mem_Read(hi2c, VL53L0x_add, VL53L0X_REG_IDENTIFICATION_REVISION_ID, I2C_MEMADD_SIZE_8BIT, VL53L0x_RecData, 1, 10);
//Device ID:
HAL_I2C_Mem_Read(hi2c, VL53L0x_add, VL53L0X_REG_IDENTIFICATION_MODEL_ID, I2C_MEMADD_SIZE_8BIT, VL53L0x_RecData+1, 1, 10);
//PRE_RANGE_CONFIG_VCSEL_PERIOD =
HAL_I2C_Mem_Read(hi2c, VL53L0x_add, VL53L0X_REG_PRE_RANGE_CONFIG_VCSEL_PERIOD, I2C_MEMADD_SIZE_8BIT, VL53L0x_RecData+2, 1, 10);
//FINAL_RANGE_CONFIG_VCSEL_PERIOD=
HAL_I2C_Mem_Read(hi2c, VL53L0x_add, VL53L0X_REG_FINAL_RANGE_CONFIG_VCSEL_PERIOD, I2C_MEMADD_SIZE_8BIT, VL53L0x_RecData+3, 1, 10);
*/
HAL_I2C_Mem_Write(hi2c, VL53L0x_add, VL53L0X_REG_SYSRANGE_START, I2C_MEMADD_SIZE_8BIT, VL53L0x_SendData, 1, 1);
//HAL_Delay(500);
VL53L0x_SendData[1] = 100;
while(VL53L0x_SendData[1]--)
{
HAL_Delay(1);
HAL_I2C_Mem_Read(hi2c, VL53L0x_add, VL53L0X_REG_RESULT_RANGE_STATUS, I2C_MEMADD_SIZE_8BIT, VL53L0x_RecData+4, 1, 1);
if (VL53L0x_RecData[4] & 0x0

本文介绍VL53L0x激光测距传感器的STM32驱动实现,包括初始化、距离读取及数据处理。通过HAL库进行I2C通信,实现精准测距。

2750

被折叠的 条评论
为什么被折叠?



