STM32
登录
直播中
李慧
7年用户
872经验值
私信
关注
[问答]
什么是VL53L1X?
开启该帖子的消息推送
什么是VL53L1X?
回帖
(1)
李玉兰
2021-11-11 11:40:01
一、VL53L1X简介
VL53L1X属于STMicroelectronics即常说的意法半导体(ST)公司推出的FlightSense™ 产品系列ToF(Time of flight)激光测距传感器。
VL53L1X是目前市场上最快的微型ToF传感器,精确测距能力达4米,测距频率快至50 Hz。它采用微型、可回流焊封装,集成了一个单光子雪崩二极管(SPAD)接收阵列、一个940nm不可见激光1类发射器、物理红外滤波器和光学器件,可在各种环境照明条件下实现最佳测距性能,并提供一系列覆盖窗口选择。
由于封装小巧,因此它很容易集成到设备中。与传统的红外传感器不同,VL53L1X采用ST最新一代ToF技术,无论目标颜色和反射率如何,都可以进行绝对距离测量。还可以对接收阵列上的ROI(感兴趣区域)大小进行编程,从而减小传感器 FoV(视场角)。VL53L1X激光测距传感器的实物图如下图所示。
二、I2C概述
Inter-Integrated Circuit,即内部集成威廉希尔官方网站 接口,缩写为IIC或I2C。IIC总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。如下图所示为单片机与I2C接口的传感器之间通信示意图。
三、I2C总线协议
对I2C总线的操作实际就是主从设备之间的读写操作。大致可分为以下两种操作情况:
主设备往从设备中写数据。数据传输格式如下:
第二,主设备从从设备中读数据。数据传输格式如下:
实际上把I2C协议拆分开来它的组成有:起始条件、终止条件、地址段、数据段、响应ACK、非响应NACK。
(1)START和STOP,起始和终止条件都是由主机(master)发起产生。总线在起始条件之后处于忙碌状态,在停止条件之后又处于空闲状态。
起始条件:SCL线是高电平时,SDA线从高电平向低电平切换。
停止条件:SCL线是高电平时,SDA线从低电平向高电平切换。
地址段,地址段由7bit地址+读写位组成,一个7-bit的地址是从最高位(MSB) 开始发送的,这个地址后面会紧跟1-bit(R/W)的操作符,1表示读操作,0表示写操作。 接下来的一个bit是NACK/ACK,当这个帧中前面8 bit发送完后,接收端的设备获得SDA控制权,此时接收设备应该在第9个时钟脉冲之前回复一个ACK(将SDA拉低)以表示接收正常,如果接收设备没有将SDA拉低,则说明接收设备可能没有收到数据(如寻址的设备不存在或设备忙)或无法解析收到的消息,如果是这样,则由master来决定如何处理,比如:停止。
数据段,SDA数据线上的每个字节必须是8位,每次传输的字节数量没有限制。每个字节后必须跟一个响应位(ACK)。首先传输的数据是最高位(MSB),SDA上的数据必须在SCL高电平周期时保持稳定,数据的高低电平翻转变化发生在SCL低电平时期。
以传输Byte:1010 1010 (0xAAh)为例,SDA SCL传输时序如下所示:
响应ACK(Acknowledge)和非响应NACK(Not Acknowledge),
每个字节传输必须带响应位,相关的响应时钟也由主机产生,在响应的时钟脉冲期间(第9个时钟周期),发送端释放SDA线,接收端把SDA拉低。以上图传输101010101为例,SCL第9位时钟高电平信号期间,SDA拉低其代表了有ACK响应位。当在SCL第9位时钟高电平信号期间,SDA仍然保持高电平,这种情况定义为NACK非响应位。这种情况下,主机可以直接产生STOP条件终止以后的传输或者继续重新START开始一个新的传输。以下情况会导致出现NACK位:
a、接收机没有发送机响应的地址,接收端没有任何ACK发送给发射机;
b、由于接收机正在忙碌处理实时程序导致接无法接收或者发送;
c、传输过程中,接收机识别不了发送机的数据或命令;
d、接收机无法接收;
e、主机接收完成读取数据后,要发送NACK结束告知从机。
以下图例代表NACK时序:
根据I2C协议分解的各个部分,可得出读和写的时序图,以向某传感器的地址为0x09的寄存器写入两个字节 0x02和0x84为例,如下图所示为该过程时序图。
以从某传感器的地址为0x09的寄存器中读出两个字节0x02和0x84为例,该时序图如下所示。
四、激光测距实验
激光测距实验使用STM32的GPIO模拟I2C与激光测距模组VL53L1X相连接,串口1即UART1,通过USB转串口模块连接电脑,把I2C获取到的VL53L1X的距离值(mm为单位)通过串口1传输到电脑端的串口调试助手显示出来。做该实验的时候需要把视觉模组暂时取下,并且把USB转串口的线接到视觉模组接口处。激光测距模组VL53L1X在无人机支架底部,杜邦线和SH1.0接口接到主板上的USART3(这里用该接口的GPIO模拟I2C)的接口上,如下图所示。
根据原理图,可以看到VL53L1X的I2C接口分别是:PB10、PB11,如下图所示。
串口1的配置可以参考《串口(基础收发),配置代码(通过调用官方库)。
获取VL53L1X的测距数据代码编写的思路如下:
代码思路
1
管脚配置
1、定义结构体;
2、使能时钟;
3、填充结构体;
4、装载结构体。
2
I2C读写逻辑
I2C各个时序逻辑;
读一个字节;
写一个字节;
读多个字节;
写多个字节。
4
VL53L1X驱动
VL53L1X初始化;
测距逻辑实现。
模拟I2C的GPIO初始化代码如下:
VL53L1X的初始化代码如下。
VL53L1X的测距代码如下。
每隔5s读取一次距离,并发送到串口上。代码如下所示。
这里注意要把串口的发送也配置好,这样才能把数据发送到电脑。串口1通过USB转串口模块接到电脑,保存、编译、下载代码,可以看到串口调试助手每隔5s在打印VL53L1X的2个字节的距离数据(mm为单位),数据如下图所示:
一、VL53L1X简介
VL53L1X属于STMicroelectronics即常说的意法半导体(ST)公司推出的FlightSense™ 产品系列ToF(Time of flight)激光测距传感器。
VL53L1X是目前市场上最快的微型ToF传感器,精确测距能力达4米,测距频率快至50 Hz。它采用微型、可回流焊封装,集成了一个单光子雪崩二极管(SPAD)接收阵列、一个940nm不可见激光1类发射器、物理红外滤波器和光学器件,可在各种环境照明条件下实现最佳测距性能,并提供一系列覆盖窗口选择。
由于封装小巧,因此它很容易集成到设备中。与传统的红外传感器不同,VL53L1X采用ST最新一代ToF技术,无论目标颜色和反射率如何,都可以进行绝对距离测量。还可以对接收阵列上的ROI(感兴趣区域)大小进行编程,从而减小传感器 FoV(视场角)。VL53L1X激光测距传感器的实物图如下图所示。
二、I2C概述
Inter-Integrated Circuit,即内部集成威廉希尔官方网站 接口,缩写为IIC或I2C。IIC总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。如下图所示为单片机与I2C接口的传感器之间通信示意图。
三、I2C总线协议
对I2C总线的操作实际就是主从设备之间的读写操作。大致可分为以下两种操作情况:
主设备往从设备中写数据。数据传输格式如下:
第二,主设备从从设备中读数据。数据传输格式如下:
实际上把I2C协议拆分开来它的组成有:起始条件、终止条件、地址段、数据段、响应ACK、非响应NACK。
(1)START和STOP,起始和终止条件都是由主机(master)发起产生。总线在起始条件之后处于忙碌状态,在停止条件之后又处于空闲状态。
起始条件:SCL线是高电平时,SDA线从高电平向低电平切换。
停止条件:SCL线是高电平时,SDA线从低电平向高电平切换。
地址段,地址段由7bit地址+读写位组成,一个7-bit的地址是从最高位(MSB) 开始发送的,这个地址后面会紧跟1-bit(R/W)的操作符,1表示读操作,0表示写操作。 接下来的一个bit是NACK/ACK,当这个帧中前面8 bit发送完后,接收端的设备获得SDA控制权,此时接收设备应该在第9个时钟脉冲之前回复一个ACK(将SDA拉低)以表示接收正常,如果接收设备没有将SDA拉低,则说明接收设备可能没有收到数据(如寻址的设备不存在或设备忙)或无法解析收到的消息,如果是这样,则由master来决定如何处理,比如:停止。
数据段,SDA数据线上的每个字节必须是8位,每次传输的字节数量没有限制。每个字节后必须跟一个响应位(ACK)。首先传输的数据是最高位(MSB),SDA上的数据必须在SCL高电平周期时保持稳定,数据的高低电平翻转变化发生在SCL低电平时期。
以传输Byte:1010 1010 (0xAAh)为例,SDA SCL传输时序如下所示:
响应ACK(Acknowledge)和非响应NACK(Not Acknowledge),
每个字节传输必须带响应位,相关的响应时钟也由主机产生,在响应的时钟脉冲期间(第9个时钟周期),发送端释放SDA线,接收端把SDA拉低。以上图传输101010101为例,SCL第9位时钟高电平信号期间,SDA拉低其代表了有ACK响应位。当在SCL第9位时钟高电平信号期间,SDA仍然保持高电平,这种情况定义为NACK非响应位。这种情况下,主机可以直接产生STOP条件终止以后的传输或者继续重新START开始一个新的传输。以下情况会导致出现NACK位:
a、接收机没有发送机响应的地址,接收端没有任何ACK发送给发射机;
b、由于接收机正在忙碌处理实时程序导致接无法接收或者发送;
c、传输过程中,接收机识别不了发送机的数据或命令;
d、接收机无法接收;
e、主机接收完成读取数据后,要发送NACK结束告知从机。
以下图例代表NACK时序:
根据I2C协议分解的各个部分,可得出读和写的时序图,以向某传感器的地址为0x09的寄存器写入两个字节 0x02和0x84为例,如下图所示为该过程时序图。
以从某传感器的地址为0x09的寄存器中读出两个字节0x02和0x84为例,该时序图如下所示。
四、激光测距实验
激光测距实验使用STM32的GPIO模拟I2C与激光测距模组VL53L1X相连接,串口1即UART1,通过USB转串口模块连接电脑,把I2C获取到的VL53L1X的距离值(mm为单位)通过串口1传输到电脑端的串口调试助手显示出来。做该实验的时候需要把视觉模组暂时取下,并且把USB转串口的线接到视觉模组接口处。激光测距模组VL53L1X在无人机支架底部,杜邦线和SH1.0接口接到主板上的USART3(这里用该接口的GPIO模拟I2C)的接口上,如下图所示。
根据原理图,可以看到VL53L1X的I2C接口分别是:PB10、PB11,如下图所示。
串口1的配置可以参考《串口(基础收发),配置代码(通过调用官方库)。
获取VL53L1X的测距数据代码编写的思路如下:
代码思路
1
管脚配置
1、定义结构体;
2、使能时钟;
3、填充结构体;
4、装载结构体。
2
I2C读写逻辑
I2C各个时序逻辑;
读一个字节;
写一个字节;
读多个字节;
写多个字节。
4
VL53L1X驱动
VL53L1X初始化;
测距逻辑实现。
模拟I2C的GPIO初始化代码如下:
VL53L1X的初始化代码如下。
VL53L1X的测距代码如下。
每隔5s读取一次距离,并发送到串口上。代码如下所示。
这里注意要把串口的发送也配置好,这样才能把数据发送到电脑。串口1通过USB转串口模块接到电脑,保存、编译、下载代码,可以看到串口调试助手每隔5s在打印VL53L1X的2个字节的距离数据(mm为单位),数据如下图所示:
举报
更多回帖
rotate(-90deg);
回复
相关问答
怎么安装
VL53L1X
2019-02-20
7526
在哪里可以找到
VL53L1X
- Ultra Lite驱动程序-函数
VL53L1X
_GetRangeStatus()返回值
2023-01-29
379
VL53L1X
对黑色衣服感应距离变小的原因?
2023-08-09
235
VL53L1X
初始化序列后SW待机消耗的问题如何处理?
2023-01-03
332
如何改进
VL53L1X
ULD API的代码?
2022-12-28
222
使用
VL53L1X
检测乒乓球板上的乒乓球
2018-09-25
3984
VL53L1X
GUI不能安装
2018-10-19
2452
请教大神怎样使用
VL53l1X
来检测人员离开和进入呢?
2022-12-26
487
如何区分
VL53L1
CB和
VL53L1
CX?
2022-12-30
345
求助,能否提供
VL53L1X
UAPI源代码的github URL?
2023-01-06
162
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分