标准版
VL53L1激光测距
5.9k
0
0
2
简介
已经打板验证,此模块是ST公司的长距离测距传感器模块,新一代长距离测距飞行时间激光传感器 基于 ST 的 FlightSense™ 技术,超小功率,工作电流微安级别。
简介:已经打板验证,此模块是ST公司的长距离测距传感器模块,新一代长距离测距飞行时间激光传感器 基于 ST 的 FlightSense™ 技术,超小功率,工作电流微安级别。开源协议
:GPL 3.0
创建时间:2021-07-10 15:31:55更新时间:2021-07-21 11:09:36
描述
VL53L1X不同于VL53L0X模块,此模块测算距离四米以内,可以给它加一个模子,增加它的性能,IIC接口,精度较好,但是比较难以焊接,对大家的焊接要求比较高。
模拟IIC写法如下:
uint8_t VL_IIC_Write_1Byte(uint8_t SlaveAddress, uint16_t REG_Address, uint8_t REG_data)
{
IIC_start();
IIC_Send_Byte(SlaveAddress );
if (IIC_wait_ack())
{
IIC_stop(); //释放总线
return 1; //没应答则退出
}
IIC_Send_Byte(REG_Address >> 8);
if (IIC_wait_ack()) //等待ACK
{
IIC_stop();
return 1;
}
IIC_Send_Byte(REG_Address & 0x00ff);
if (IIC_wait_ack()) //等待ACK
{
IIC_stop();
return 1;
}
delay_ms(1);
IIC_Send_Byte(REG_data);
if (IIC_wait_ack()) //等待ACK
{
IIC_stop();
return 1;
}
IIC_stop();
return 0;
}
uint8_t VL_IIC_Read_1Byte(uint8_t SlaveAddress, uint16_t REG_Address, uint8_t *REG_data)
{
IIC_start();
IIC_Send_Byte(SlaveAddress ); //发写命令
if (IIC_wait_ack())
{
IIC_stop(); //释放总线
return 1; //没应答则退出
}
IIC_Send_Byte(REG_Address >> 8);
if (IIC_wait_ack())
{
IIC_stop(); //释放总线
return 1; //没应答则退出
}
IIC_Send_Byte(REG_Address & 0x00ff);
if (IIC_wait_ack())
{
IIC_stop(); //释放总线
return 1; //没应答则退出
}
delay_ms(1);
IIC_start();
IIC_Send_Byte(SlaveAddress | 0x01); //发读命令
if (IIC_wait_ack())
{
IIC_stop(); //释放总线
return 1; //没应答则退出
}
*REG_data = IIC_Read_Byte(0);
IIC_stop();
return 0;
}
测试代码:
uint8_t VL_Init(void)
{
uint8_t res;
IIC_Init();
VL_IIC_Read_1Byte(VL_ADDR, module_type, &res);
if (res == 0xCC) //器件ID正确
{
UART_printf(UART0_BASE, "SUCCESS!\n");
return 1;
}
else
{
UART_printf(UART0_BASE, "failed!\n");
}
return 0;
}
设计图
未生成预览图,请在编辑器重新保存一次
BOM
暂无BOM
克隆工程
添加到专辑
0
0
分享
侵权投诉
评论