VL53L0X中文资料(翻译版)激光测距+手势检测传感器API源码

网上找到VL53L0X的资料,该芯片为最小的激光测距芯片,低功耗、测量快,包括中文的说明文档及原厂的API资料(英文),供参考。
 



内含程序源码:
 



特点
完全集成的微型模块
–940nm  激光 vcsel
– vcsel  驱动器 -测距传感器与先进的嵌入式微控制器
–快速 , 准确的距离范围
–测量绝对范围达 2 米
–报告的范围是独立的目标反射率
–可在高红外环境光水平下运行
–先进的嵌入式光学交叉通话补偿 , 简化覆盖玻璃选择眼睛安全
–符合最新标准 iec 60825-1: 2014-第三版的 1 级激光设备集成
–单反射组件
–无需额外的光学元件
–单电源
–用于设备控制和数据传输的 i2c 接口
–xod 演 (重置 )  和中断 gpio – 可编程 i2c 地址

应用用户检测个人计算机 / 笔记本电脑 /平板电脑和物联网 (节能)。机器人 (障碍物检测 )。
白色物品 (自动水龙头中的手部检测、肥皂分配器等一维手势识别。
激光辅助自动对焦。增强和加速相机自动对焦系统性能 ,  特别是在困难场景 (低光照水平、低对比度 )  或快速移动的视频模式下。描述 vl53l0x  是新一代飞行时间 (tof)  激光测距模块 ,  安装在当今市场上最小的封装中 ,  提供与传统技术不同的目标反射率的精确距离测量。 它可以测量高达 2米的绝对距离 ,  在测距性能水平方面树立了新的标杆 , 为各种新的应用打开了大门。
vl53l0x  集成了领先的 spad  阵列 (单光子雪崩二极管 ),  并嵌入了 st  的第二代fliglsensetm  专利技术。
vl53l0x  的 940nm  vcsel  发射器 (垂直腔表面发射激光 )  是人眼完全看不见的 ,  再加上内部物理红外滤光片 , 它可以实现更长的距离 ,  更高的免疫力和更好的鲁棒性覆盖玻璃光学交叉交谈。
 



1.2 系统框图
 



1.3 设备引脚
图 2 显示了 vl53l0x  的引脚 (另见图 22)。
图 2。vl53l0x  夹出 (底部视图 )
 



引脚功能描述:
 



电路原理图
 



注:  外部电源 avdd  上的电容器应尽可能靠近 avddvcsel  和 avssvcsel 模块引脚。
注:  外部上拉电阻值可在 i2c  总线规范中找到。 拉拔通常每辆公交车只安装一次 ,  靠近主机。对于 2.8 v  和 400KHz i2c 时钟的 avdd,  上拉电阻的推荐值为 1.5 k  至 2k  欧姆。
注:  必须始终驱动 xshut  引脚 ,  以避免泄漏电流。 如果不知道主机状态 ,  则需要拉。xshut  需要使用硬件待机模式 (没有 i2c  通信 )。
注: xshut  和 gpio1  拉起建议的值是 10k  欧姆
注: gpio1  如果不使用 , 将保持未连接

2 功能描述
2.1  系统功能描述
图 4 显示了系统级功能描述。主机客户应用程序正在使用 api (应用程序编程接口 )  控制 vl53l0x  设备。
api  向客户应用程序公开了一组高级功能 ,  允许控制 vl53l0x  固件 (fw),  如初始化 /校准,  测距 startstop,  精度的选择 ,  测距模式的选择。
api  是一个交钥匙解决方案 ,  它由一组 c 函数组成 ,  可实现最终用户应用程序的快速开发 , 而不会使直接多寄存器访问变得复杂。 api  的结构使其可以通过隔离良好的平台层在任何类型的平台上进行编译。 api  包允许用户充分利用 vl53l0x  功能。
api  的详细说明可在 vl53l0x api  用户手册中找到 (单独的文档 , docid029105)。
vl53l0x fw  完全管理硬件 (hw)  寄存器访问。
第 2.2  节:  固件状态机说明详细说明了固件状态机。

2.3.1 spad 和温度校准
为了优化系统的动态 ,  必须对参考 spad  进行校准。在初始制造校准过程中 ,  只需执行一次参考 spad  校准 , 然后校准数据就应存储在主机上。
温度校准是对两个参数 (vhv  和相位 cal) 的校准 ,  这两个参数与温度有关。 这两个参数用于设置设备灵敏度。校准应在初始制造校准过程中进行 ,  当温度变化超过 8°c  时,  必须再次进行校准。
有关 spad  和温度校准的更多详细信息 ,  请参阅 vl53l0x api  用户手册。

2.3.2  测距偏移校准
测距偏移可以用平均偏移来描述 ,  这是测量与实际距离的中心。
应在工厂进行偏移校准 , 以获得最佳性能 (建议在 10cm  时进行 )。偏移校准应考虑到 : 电源电压和温度
VL53L0X模块上方的防护罩玻璃
 



2.4  测距操作模式

api  中有 3 种测距模式 :
1. 单测距测距
仅在调用 api  函数后执行一次。系统自动返回到 sw  待机状态。

2. 连续测距。
在调用 api  函数后 ,  以连续的方式执行范围。测量完成后 ,  将立即启动另一个测量。用户必须停止范围才能返回到 sw 待机状态。最后一次测量在停止前完成。
3. 定时范围。
在调用 api  函数后 ,  以连续的方式执行范围。测量完成后 ,  在用户定义的延迟后启动另一个测量值。此延迟 (测量期间 )  可以通过 api  定义。用户必须停止范围才能返回到 sw  待机状态。如果停止请求是在范围测量过程中发出的,  则测量将在停止前完成。如果发生在测量之间 ,  范围测量将立即停止。
2.5  测距配置文件。
有 4 个不同的范围配置文件可通过 api  示例代码。客户可以根据其用例性能要求创建自己的测距配置文件。欲了解更多详情 , 请参阅 vl53l0x api  用户手册。
1. 默认模式。
2.  高速。
3.  高精度。
4.  远距离。

2.6.1  初始化和负载校准数据阶段。
初始化和校准阶段在第一次测距之前或设备重置之后执行 ,  请参见图 9。然后 , 用户可能必须定期重复温度校准阶段 , 具体取决于使用情况。有关校准功能的更多详细信息 , 请参阅 vl53l0x api  用户手册。

2.6.2  测距阶段。
测距相位由范围设置和范围测量组成。
在测距操作中 , 发射了多个 vcsel 红外脉冲 ,  然后由目标对象反射回来 , 并被接收阵列检测到。在 vl53l0x  中使用的光电探测器采用了先进的超快 spad  技术 (单光子雪崩二极管 ), 并受到多项专利的保护。
一个范围的典型计时预算是 33 毫秒 (初始化 /测距 /内务处理  ),  请参见图 12,  实际范围测量采用 23 毫秒 ,  参见图 9。最小范围测量周期为 8 毫秒。
注:  最小范围计时预算为 20 毫秒。最大值为 5 秒。计时预算越长 ,  精度和测距距离能力就越高

2.6.3  数字家政服务。
数字处理 (内部管理 )  是测距序列内的最后一个操作 , 用于计算、 验证或拒绝测距测量。
此处理的一部分在内部执行 ,  而另一部分由 api  在主机上执行。
在数字处理结束时 ,  测距距离由 vl53l0x  本身计算。如果无法测量距离 (微弱信号 ,  无目标 ...),  则提供相应的错误代码。
在设备本身上执行以下功能
信号值检查 (弱信号 )。
偏移校正。
交叉对话校正 (在盖板玻璃的情况下 )。
最终测距值计算。
当 api  执行以下操作时
返回忽略阈值 rit  检查 (信号检查与交叉对话 )。
检查 (精度条件 )。
最终测距状态计算。
如果用户想要提高测距精度 ,  主机可以执行一些额外的处理 (不是 api  的一部分 ), 例如滚动平均值、滞后或任何类型的过滤。

2.7  获取数据 :  中断或轮询。
用户可以使用轮询或中断机制获取最终数据。
轮询模式 :  用户必须通过轮询 api  函数来检查正在进行的测量的状态。
中断模式 :  中断引脚 (gpio1)  在新测量可用时向主机发送中断。
这两种模式的描述可在 vl53l0x api  用户手册中找到。

2.8  设备编程和控制。
设备物理控制接口为 i2c,  如第 3 节:  控制接口中所述。 提供了一个软件层 (api)  来控制设备。 api  在 vl53l0x api  用户手册中进行了描述。

2.9  电源序列。
2.9.1  开机和启动顺序。
有两个选项可用于设备电源启动 /启动。
选项 1:  从主机连接和控制 xshut  引脚。
此选项有助于优化功耗 , 因为 vl53l0x  可以在不使用时完全关闭电源 , 然后通过主机gpio (使用 xshut  引脚 )  唤醒。硬件待机模式被定义为 avdd 存在且 xshut  较低的时期。
 


tboot  最大为 1.2  毫秒。
选项 2: xshut  引脚不受主机控制 ,  并通过上拉电阻与 avdd 捆绑在一起。在 xshut  引脚不受控制的情况下 , 电源启动序列如图 11 所示。在这种情况下 ,  设备在 fw boot  后自动在 sw  待机状态中运行 ,  而无需进入 hw  待机状态。
图 11。在不受控制的 xshut  的情况下启动和引导顺序
 



tboot  最大为 1.2  毫秒。
2.10  测距顺序。
图 12。测距顺序
 



ttiming _ budget 是由用户使用专用 api  功能设置的参数。默认值为 33 毫秒。

3 控制接口。
此部分指定控制接口。 i2c  接口使用两个信号 :  串行数据线 (sda)  和串行时钟线 (scl)。连接到总线的每个设备都使用唯一的地址 ,  并且存在简单的主从关系。sda 和 scl 线路都使用位于主机上的上拉电阻连接到正电源电压。线路只主动低驱动。当线路浮动 ,  上拉电阻将线路拉上时 ,  就会出现高条件。当没有传输数据时 , 两行都很高。时钟信号 (scl) 生成由主设备执行。主设备启动数据传输。 vl53l0x  上的 i2c  总线的最大速度为 400 kbitss,  并使用 0x52  的设备地址。
图 13。数据传输协议

 



信息以 8 位数据包 (字节)  的形式打包 ,  后面总是有一个确认位 , ac 表示为 vl53l0x  确认, am  用于主确认 (主机总线主机 )。内部数据是通过在 scl 上升边缘对 sda 进行采样而产生的。在 scl 的高周期内 , 外部数据必须是稳定的。这方面的例外情况是 sda 分别下降或上升时的启动 (s)  或停止 (p) 条件 ,  而 scl 较高。
消息包含一系列字节 ,  前面是开始条件 ,  后面是停止或重复启动 (另一个启动条件 ,  但没有前面的停止条件 ),  然后是另一个消息。 第一个字节包含设备地址 (0x52),  还指定数据方向。 如果最不重要的位较低 (即 0x52),  则消息是对从属服务器的主写入。 如果设置了 lsb (即0x53),  则该消息是从奴隶那里读取的主消息。图 14。设备地址 : 0x52

 



与相机模块的所有串行接口通信必须从启动条件开始。 vl53l0x  模块通过将 sda 线压低 , 确认收到了有效地址。存储 read/jab 务位 (地址字节的 lsb)  的状态 ,  并且可以解释从 sda 采样的下一个数据字节。在写入序列中 , 接收到的第二个字节提供一个 8 位索引 ,  该索引指向内部的一个 8 位寄存器。
 


当数据由从站接收时 ,  它将一点一点地写入序列 /并行寄存器。在从站接收到每个数据字节后 ,  将生成一个确认 ,  然后将数据存储在当前索引所寻址的内部寄存器中。
在读取消息期间 , 以设备地址字节之后的字节读出当前索引所寻址的寄存器的内容。 此寄存器的内容并行加载到串行并行寄存器中 ,  并通过 scl 的下降边缘从设备中时钟。
图 16。数据格式 (读)
 



在每个字节的末尾 ,  在读取和写入消息序列中 ,  接收设备 (即写入的 vl53l0x  和读取的主机 )  发出确认。
消息只能由总线主机在读取操作过程中读取完整字节后终止 ,  方法可以是发出停止条件,  也可以是通过负确认 (即不将 sda 线拉低 )。
该接口还支持自动递增索引。传输第一个数据字节后 ,  索引将自动递增 1。因此 ,  主机可以连续向从站发送数据字节 , 直到从站无法提供确认或主机以停止条件终止写入通信。 如果使用自动递增功能 , 则主服务器不必发送地址索引来附带数据字节。
图 17。VL53L0X数据格式 (顺序写入 )
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值