STMicroElectronics VL53L7CX 飞行时间多区域测距传感器

介绍
本用户手册的目的是解释如何使用超精简驱动程序 (ULD) API 处理 VL53L7CX 飞行时间 (ToF) 传感器。 它描述了对设备进行编程的主要功能、校准和输出结果。
VL53L7CX 飞行时间传感器专为需要超宽 FoV 的应用而设计,提供 90° 对角线 FoV。 VL53L7CX 基于意法半导体的 Flight Sense 技术,在激光发射器上集成了高效的超表面透镜 (DOE),可将 60° x 60° 方形 FoV 投影到场景上。
其多区域功能提供了一个 8×8 区域(64 个区域)的矩阵,并且可以在高达 60 厘米的快速 (350 Hz) 下工作。
由于具有可编程距离阈值的自主模式与超宽 FoV 相结合,VL53L7CX 非常适合任何需要低功耗用户检测的应用。 ST 的专利算法和创新模块结构使 VL53L7CX 能够在每个区域中检测 FoV 内的多个物体,并具有深度理解。 STMicroElectronics 直方图算法可确保玻璃盖板的串扰抗扰度超过 60 厘米。
源自 VL53L5CX,两个传感器的引出线和驱动器是兼容的,这确保了从一个传感器到另一个传感器的简单迁移。
与所有基于 ST Flight Sense 技术的飞行时间 (ToF) 传感器一样,VL53L7CX 在每个区域记录绝对距离,无论目标颜色和反射率如何。
VL53L7CX 采用集成了 SPAD 阵列的微型可回流封装,可在各种环境照明条件下实现最佳测距性能,并适用于各种盖板玻璃材料。
ST 的所有 ToF 传感器都集成了一个 VCSEL,可发射完全不可见的 940 nm 红外光,对眼睛完全安全(1 类认证)。
VL53L7CX 是任何需要超宽视场的应用的完美传感器,例如机器人、智能扬声器、视频投影仪、内容管理。多区域功能和 90° FoV 的结合可以增强新的用例,例如手势识别、机器人 SLAM 以及智能建筑的低功耗系统激活。
图 1. VL53L7CX传感器模块

缩略语
| 首字母缩略词/缩写 | 定义 |
| 美国能源部 | 衍射光学元件 |
| 视野 | 领域 view |
| I²C | 内部集成电路(串行总线) |
| Kcps/SPAD | 每个 spad 每秒千计数(用于量化进入 SPAD 阵列的光子数量的单位) |
| 内存 | 随机存取存储器 |
| 新加坡 | 串行时钟线 |
| 南达科他州 | 串行数据 |
| SPAD 系统 | 单光子雪崩二极管 |
| 飞行时间 | 时间 - 飞行 |
| 超载设备 | 超精简驱动程序 |
| 垂直腔面发射激光器 | 垂直腔表面发射二极管 |
| 高压 | 非常高的音量tage |
| Xtalk | 相声 |
功能描述
系统结束view
VL53L7CX系统由硬件模块和运行在主机上的ultra lite驱动软件(VL53L7CX ULD)组成(见下图)。硬件模块包含ToF传感器。 STMicroElectronics 提供软件驱动程序,在本文档中称为“驱动程序”。本文档描述了主机可以访问的驱动程序的功能。这些函数控制传感器并获取测距数据。
图 2. VL53L7CX系统结束view

有效导向
该模块在 Rx 孔径上方包含一个镜头,可翻转(水平和垂直)捕获的目标图像。 因此,SPAD 阵列左下角标识为区域 0 的区域被位于场景右上角的目标照亮。
图 3. VL53L7CX有效定向

原理图和 I²C 配置
驱动程序和固件之间的通信由 I²C 处理,工作频率高达 1 MHz。该实现需要在 SCL 和 SDA 线上上拉。有关更多信息,请参阅 VL53L7CX 数据表。 VL53L7CX 器件的默认 I²C 地址为 0x52。但是,可以更改默认地址以避免与其他设备发生冲突,或者方便向系统添加多个 VL53L7CX 模块以获得更大的系统 FoV。可以使用 vl53l7cx_set_i2c_address() 函数更改 I²C 地址。
图 4. I²C 总线上的多个传感器

为了允许设备更改其 I2C 地址而不影响 I2C 总线上的其他设备,禁用未更改设备的 I2C 通信非常重要。程序如下:
- 正常启动系统。
- 拉低不会更改其地址的设备的 LPn 引脚。
- 将 I²C 地址已更改的设备的 LPn 引脚上拉。
- 使用 set_i2c_address() 函数将 IXNUMXC 地址编程到设备。
- 上拉未重新编程的器件的 LPn 引脚。
所有设备现在都可以在 I²C 总线上使用。对系统中需要新 I²C 地址的所有 VL53L7CX 设备重复上述步骤。
包内容和数据流
驱动程序架构和内容
VL53L7CX ULD 包由四个文件夹组成。驱动程序位于文件夹/
VL53L7CX_ULD_API。
驱动程序由强制和可选组成 file秒。 选修的 file是 plugins 用于扩展 ULD 功能。 每个插件都以“vl53l7cx_plugin”一词开头(例如 vl53l7cx_plugin_xtalk.h)。 如果用户不想要建议的 plugins, 它们可以在不影响其他驱动程序功能的情况下被删除。 下图代表强制 files 和可选的 plugins.
图 5。驱动架构

用户还需要实现两个 file它位于 /Platform 文件夹中。 建议的平台是一个空壳,必须填充专用功能。
笔记: 平台。 H file 包含使用 ULD 的强制性宏。 一切 file 正确使用 ULD 所必需的内容
标定流程
串扰 (Xtalk) 定义为 SPAD 阵列上接收到的信号量,这是由于 VCSEL 光造成的
模块顶部添加的保护窗(盖玻璃)内的反射。 VL53L7CX模块具有自校准功能,无需任何额外校准即可使用。
如果模块受玻璃盖保护,则可能需要串扰校准。 VL53L7CX 不受
得益于直方图算法,串扰超过 60 厘米。然而,在 60 厘米以下的短距离内,Xtalk 可能会大于实际返回的信号。这会产生错误的目标读数或使目标看起来比实际距离更近。所有串扰校准功能都包含在 Xtalk 插件(可选)中。用户需要使用 file 'vl53l7cx_plugin_xtalk'。
串扰可以校准一次,并且可以保存数据以便以后重复使用。需要一个固定距离且反射率已知的目标。所需的最小距离为 600 毫米,并且目标必须覆盖整个 FoV。根据设置,用户可以修改设置以适应串扰校准,如下表所示。
表 1. 校准的可用设置
| 环境 | 分钟 | 由意法半导体提出 | 最大限度 |
| 距离 [毫米] | 600 | 600 | 3000 |
| 数量amp莱斯 | 1 | 4 | 16 |
| 反射率 [%] | 1 | 3 | 99 |
笔记: 增加 s 的数量amples 提高了准确性,但也增加了校准时间。 时间相对于s的个数amples 是线性的,值遵循近似超时:
- 1 秒ample ≈ 1 秒
- 4 秒amples ≈ 2.5 秒
- 16 秒amples ≈ 8.5 秒
使用函数 vl53l7cx_calibrate_xtalk() 执行校准。该功能可以随时使用。然而,必须首先初始化传感器。下图表示串扰校准流程。
图 6. 串扰校准流程

测距流量
下图表示用于获取测量值的测距流程。 在开始测距会话之前,必须使用 Xtalk 校准和可选函数调用。 在测距会话期间不能使用获取/设置功能,并且不支持“即时”编程。
图 7. 使用 VL53L7CX 测距流量

可用功能
VL53L7CX ULD API 包括多种功能,允许用户根据使用案例调整传感器。以下部分描述了驱动程序可用的所有功能。
初始化
在使用 VL53L7CX 传感器之前必须完成初始化。 此操作要求用户:
- 打开传感器电源(VDDIO、AVDD、LPn 引脚设置为高电平,引脚 I2C_RST 设置为 0)
- 调用函数vl53l7cx_init()。该函数将固件(~84 KB)复制到模块。这是通过 I²C 接口加载代码并执行引导例程来完成初始化来完成的。
传感器重置管理
要重置设备,需要切换以下引脚:
- 将引脚 VDDIO、AVDD 和 LPn 引脚设置为低电平。
- 等待 10 毫秒。
- 将 VDDIO、AVDD 和 LPn 引脚设置为高电平。
笔记: 仅切换 I2C_RST 引脚会重置 I²C 通信。
解决
分辨率对应于可用区域的数量。 VL53L7CX 传感器有两种可能的分辨率:4×4(16 个区域)和 8×8(64 个区域)。默认情况下,传感器以 4×4 进行编程。函数 vl53l7cx_set_resolution() 允许用户更改分辨率。由于测距频率取决于分辨率,因此必须在更新测距频率之前使用此功能。此外,更改分辨率还会增加读取结果时 I²C 总线上的流量大小。
测距频率
测距频率可用于改变测量频率。由于最大频率不同
在 4×4 和 8×8 分辨率之间,需要在选择分辨率后使用此功能。下表列出了允许的最小值和最大值。
表 2. 最小和最大测距频率
| 解决 | 最小测距频率 [Hz] | 最大测距频率 [Hz] |
| 4×4 | 1 | 60 |
| 8×8 | 1 | 15 |
可以使用函数 vl53l7cx_set_ranging_frequency_hz() 更新测距频率。 默认情况下,测距频率设置为 1 Hz。
测距模式
测距模式允许用户在高性能或低功耗测距之间进行选择。 建议采用两种模式:
- 连续:设备以用户定义的测距频率连续抓取帧。 VCSEL 在所有测距期间都处于启用状态,因此最大测距距离和环境抗扰度更好。 建议将此模式用于快速测距测量或高性能。
- 自主:这是默认模式。设备以一定的频率连续抓取帧
由用户定义。 VCSEL 在用户定义的时间段内使用函数 vl53l7cx_set_integration_time_ms() 启用。由于 VCSEL 并不总是启用,因此功耗会降低。随着测距频率的降低,好处更加明显。建议低功耗应用使用此模式。
可以使用函数 vl53l7cx_set_ranging_mode() 更改测距模式。
积分时间
积分时间是仅在使用自主测距模式时才可用的功能(请参阅第 4.5 节:测距
模式)。它允许用户在 VCSEL 启用时更改时间。如果测距改变积分时间
模式设置为连续没有效果。默认积分时间设置为 5 ms。积分时间的影响对于 4×4 和 8×8 分辨率是不同的。 4×4分辨率由8个积分时间组成,8×XNUMX分辨率由XNUMX个积分时间组成。下图表示两种分辨率的 VCSEL 发射。
图 8. 4×4 自主的积分时间

图 9. 8×8 自主的积分时间

所有积分时间的总和 + 1 ms 开销必须低于测量周期。 否则,测距周期会自动增加以适应积分时间值。
电源模式
电源模式可用于在不使用设备时降低功耗。 VL53L7CX 可以在以下电源模式之一下运行:
- 唤醒:设备设置在 HP idle(高功率),等待指令。
- Sleep:设备被设置在LP idle(low power),即低功耗状态。 除非设置为唤醒模式,否则无法使用该设备。 此模式保留固件和配置。
可以使用函数 vl53l7cx_set_power_mode() 更改电源模式。默认模式是唤醒。
笔记: 如果用户想要更改电源模式,设备不得处于测距状态。
卷笔刀
从目标返回的信号不是具有尖锐边缘的干净脉冲。边缘倾斜并可能影响相邻区域中报告的距离。锐化器用于消除由遮光眩光引起的部分或全部信号。
前任amp下图中显示的 le 表示 FoV 中心 100 mm 处的近距离目标,以及位于 500 mm 后方的另一个目标。 根据锐化器值,近距离目标可能出现在比真实目标更多的区域中。
图 10. Examp使用多个锐化器值的场景文件



可以使用函数 vl53l7cx_set_sharpener_percent() 更改磨刀器。允许的值介于 0% 和 99% 之间。默认值为 5%。
目标订单
VL53L7CX 可以测量每个区域的多个目标。由于直方图处理,主机能够
选择报告目标的顺序。有两种选择:
- Closest:最近的目标是第一个报告的
- 最强:最先报告的是最强的目标
可以使用函数 vl53l7cx_set_target_order() 更改目标顺序。默认顺序是最强。前任amp下图中的le表示检测到两个目标。 一个在 100 毫米处具有低反射率,一个在 700 毫米处具有高反射率。
图 11. Examp具有两个目标的直方图文件

每个区域多个目标
VL53L7CX 每个区域最多可以测量四个目标。 用户可以配置传感器返回的目标数量。
笔记: 两个待检测目标之间的最小距离为 600 毫米。驱动程序无法进行选择;它必须在“平台”中完成。 H' file。宏 VL53L7CX_NB_ TARGET_PER_ZONE 需要设置为 1 到 4 之间的值。第 4.9 节:目标顺序中描述的目标顺序直接影响检测到的目标的顺序。默认情况下,传感器每个区域最多仅输出一个目标。
笔记: 每个区域的目标数量增加会增加所需的 RAM 大小。
Xtalk 余量
Xtalk 余量是一个附加功能,只能使用插件 Xtalk。 .c 和 .f file需要使用'vl53l7cx_plugin_xtalk'。
当传感器顶部存在盖玻片时,该裕度用于更改检测阈值。设置串扰校准数据后,可以增加阈值以确保永远不会检测到盖玻片。对于前amp在该文件中,用户可以在一台设备上运行串扰校准,并为所有其他设备重复使用相同的校准数据。 Xtalk 余量可用于调整串扰校正。下图代表了Xtalk的利润率。
图 12. Xtalk 余量

检测阈值
除了常规的测距功能外,还可以对传感器进行编程,以根据某些预定义的标准检测物体。 使用插件“检测阈值”可以使用此功能,该选项默认不包含在 API 中。 这 file需要使用名为“vl53l7cx_plugin_detection_thresholds”的函数。当满足用户定义的条件时,该功能可用于触发引脚 A3 (INT) 的中断。有三种可能的配置:
- 分辨率 4×4:每个区域使用一个阈值(总共 16 个阈值)
- 分辨率 4×4:每个区域使用两个阈值(总共 32 个阈值)
- 分辨率 8×8:每个区域使用一个阈值(总共 64 个阈值)
无论使用何种配置,创建阈值的过程和 RAM 大小都是相同的。 对于每个阈值组合,需要填写几个字段:
- 区域 id:所选区域的 id(请参阅第 2.2 节:有效方向)
- 测量:要捕捉的测量(距离、信号、SPAD 数量……)
- 类型:测量窗口(窗口内、窗口外、低于低阈值……)
- 低门槛:触发的低门槛用户。 用户无需设置格式,由API自动处理。
- 高阈值:触发的高阈值用户。用户无需设置格式;它由 API 自动处理。
- 数学运算:仅用于每个区域的 4×4 – 2 个阈值组合。 用户可以在一个区域中使用多个阈值来设置组合。
运动指示器
VL53L7CX 传感器具有嵌入式固件功能,允许在场景中进行运动检测。议案
指标是在连续帧之间计算的。使用插件“vl53l7cx_plugin_motion_indicator”可以使用此选项。
运动指示器使用 vl53l7cx_motion_indicator_init() 函数进行初始化。更换传感器
分辨率,使用专用函数更新运动指示器分辨率:vl53l7cx_motion_indicator_set_resolution()。
用户还可以更改检测运动的最小和最大距离。 最小和最大距离之差不能大于 1500 毫米。 默认情况下,距离初始化为 400 毫米到 1500 毫米之间的值。
结果存储在“motion_indicator”字段中。在此字段中,数组“motion”给出的值包含
每个区域的运动强度。高值表示帧之间的高运动变化。典型的运动给出的值在 100 到 500 之间。该灵敏度取决于积分时间、目标距离和目标反射率。
低功耗应用的理想组合是使用具有自主测距模式的运动指示器以及针对运动编程的检测阈值。 这允许以最小的功耗检测 FoV 中的运动变化。
定期温度补偿
测距性能受温度变化的影响。 VL53L7CX 传感器嵌入温度
流媒体开始时校准一次的补偿。然而,如果温度发生变化,
补偿可能与新温度不一致。为了避免此问题,客户可以使用自动 VHV 运行定期温度补偿。定期温度校准需要几毫秒的时间来运行。用户可以定义时间段。要使用此功能,客户需要:
- 调用函数 vl53l7cx_set_VHV_repeat_count()。
- 然后,给出每个新校准之间的帧数作为参数。
如果参数为 0,则禁用补偿。
测距结果
可用数据
在测距活动期间可能会输出大量目标和环境数据。 下表描述了用户可用的参数。
表 3. 使用 VL53L7CX 传感器的可用输出
| 元素 | Nb 字节 (RAM) | 单元 | 描述 |
| 每个 SPAD 的环境 | 256 | Kcps/SPAD | 在 SPAD 阵列上执行环境速率测量,没有主动光子发射,以测量由于噪声引起的环境信号速率。 |
| 检测到的目标数量 | 64 | 没有任何 | 当前区域中检测到的目标数。 该值应该是第一个检查以了解测量有效性的值。 |
| 启用的 SPAD 数量 | 256 | 没有任何 | 当前测量启用的 SPAD 数量。 远或低的反射目标会激活更多 SPAD。 |
| 每个 SPAD 的信号 | 256 x nb 目标编程 | Kcps/SPAD | VCSEL 脉冲期间测得的光子数量。 |
| 范围西格玛 | 128 x nb 目标编程 | 毫米 | 报告的目标距离中噪声的 Sigma 估计器。 |
| 距离 | 128 x nb 目标编程 | 毫米 | 目标距离 |
| 目标状态 | 64 x nb 目标编程 | 没有任何 | 测量有效性。 看 第 5.5 部分:结果 解释 了解更多信息。 |
| 反射率 | 64 x 编程目标数 | 百分比 | 以百分比表示的估计目标反射率 |
| 运动指示器 | 140 | 没有任何 | 包含运动指示器结果的结构。 “运动”字段包含运动强度。 |
笔记: 对于多个元素(每个 spad、sigma 等的信号),如果用户为每个区域编程了多个目标(请参见第 4.10 节:每个区域多个目标),则对数据的访问会有所不同。参见前amp文件代码以获取更多信息。
自定义输出选择
默认情况下,所有 VL53L7CX 输出均启用。如果需要,用户可以禁用某些传感器输出。驱动程序上无法禁用测量;它必须在“平台”中执行。 H' file. 用户可以声明以下宏来禁用输出:
#定义 VL53L7CX_DISABLE_AMBIENT_PER_SPAD
#定义 VL53L7CX_DISABLE_NB_SPADS_ENABLED
#定义 VL53L7CX_DISABLE_NB_TARGET_DETECTED
#定义 VL53L7CX_DISABLE_SIGNAL_PER_SPAD
#定义 VL53L7CX_DISABLE_RANGE_SIGMA_MM
#定义 VL53L7CX_DISABLE_DISTANCE_MM
#定义VL53L7CX_DISABLE_TARGET_STATUS
#定义 VL53L7CX_DISABLE_REFLECTANCE_PERCENT
#定义 VL53L7CX_DISABLE_MOTION_INDICATOR
因此,这些字段不会在结果结构中声明,并且数据不会传输到主机。 RAM 大小和 I²C 大小减小。为了确保数据一致性,ST始终建议保持“检测到的目标数量”和“目标状态”启用。这会根据目标状态过滤测量结果(请参阅第 5.5 节:结果解释)。
获取测距结果
在测距会话期间,有两种方法可以知道是否有新的测距数据可用:
- 轮询模式:连续使用函数vl53l7cx_check_data_ready()。 它检测传感器返回的新流计数。
- 中断模式:等待引脚 A3 (GPIO1) 上引发的中断。约 100 μs 后中断自动清除。
当新数据准备好时,可以使用函数 vl53l7cx_get_ranging_data() 读取结果。它返回包含所有选定输出的更新结构。由于设备是异步的,因此没有需要清除的中断来继续测距会话。此功能适用于连续测距模式和自主测距模式。
使用原始固件格式
通过I²C传输测距数据后,固件格式和主机格式之间会进行转换。通常执行此操作以获得以毫米为单位的测距距离作为传感器的默认输出。如果用户想使用固件格式,则必须在平台中定义以下宏 file:VL53L7CX
#定义VL53L7CX_USE_RAW_FORMAT
结果解释
可以过滤 VL53L7CX 返回的数据以考虑目标状态。状态指示测量有效性。完整状态列表如下表所述。
表 4. 可用目标状态列表
| 目标状态 | 描述 |
| 0 | 测距数据未更新 |
| 1 | SPAD 阵列上的信号速率太低 |
| 2 | 目标阶段 |
| 3 | Sigma 估计量太高 |
| 4 | 目标一致性失败 |
| 5 | 范围有效 |
| 6 | 未执行环绕(通常是第一个范围) |
| 7 | 速率一致性失败 |
| 8 | 当前目标的信号速率太低 |
| 9 | 大脉冲有效范围(可能是由于合并目标) |
| 10 | 范围有效,但在之前的范围内未检测到目标 |
| 11 | 测量一致性失败 |
| 12 | 由于磨刀器,目标被另一个模糊 |
| 13 | 检测到目标但数据不一致。 次要目标经常发生。 |
| 255 | 未检测到目标(仅当启用检测到的目标数时) |
为了获得一致的数据,用户需要过滤无效的目标状态。为了给出置信度评级,状态为 5 的目标被视为 100% 有效。状态 6 或 9 可以视为置信度值为 50%。所有其他状态均低于 50% 置信水平。
驱动程序错误
当使用 VL53L7CX 传感器发生错误时,驱动程序会返回特定错误。下表列出了可能出现的错误。
表 5. 使用驱动程序时出现的错误列表
| 目标状态 | 描述 |
| 0 | 没有错误 |
| 127 | 用户编程了不正确的设置 (分辨率未知、测距频率太高……) |
| 255 | 重大错误。通常是由于 I²C 错误而导致的超时错误。 |
| 其他 | 上述多个错误的组合 |
笔记: 主机可以利用平台实现更多的错误码 files.
修订历史
表 6. 文档修订历史
| 日期 | 版本 | 更改 |
| 02 年 2022 月 XNUMX 日 | 1 | 初始版本 |
| 02 年 2022 月 XNUMX 日 | 2 | 更新 栏目介绍 添加了有关目标之间最小距离的注释 第4.10节:多重 每个区域的目标 |
| 21 年 2024 月 XNUMX 日 | 3 | 添加了 VHV(非常高的体积tage) 到 第 1 节:首字母缩写词和缩写词. 添加 第 4.14 节:定期温度补偿 |
客户支持
重要通知——请仔细阅读
STMicroelectronics NV 及其子公司 (“ST”) 保留随时更改、更正、增强、修改和改进 ST 产品和/或本文档的权利,恕不另行通知。购买者应在下订单前获取有关 ST 产品的最新相关信息。ST 产品根据订单确认时有效的 ST 销售条款和条件销售。
购买者对 ST 产品的选择、挑选和使用负全部责任,ST 对应用协助或购买者产品的设计不承担任何责任。
ST 在此不授予任何明示或暗示的知识产权许可。
如果转售的 ST 产品的规定与此处所述的信息不同,则 ST 对该产品授予的任何保证将失效。
ST 和 ST 徽标是 ST 的商标。有关 ST 商标的更多信息,请参阅 www.st.com/trademarks. 所有其他产品或服务名称均属于其各自所有者的财产。
本文档中的信息取代并替换了该文档之前任何版本中提供的信息。
© 2024 STMicroelectronics – 保留所有权利

文件/资源
![]() |
STMicroElectronics VL53L7CX 飞行时间多区域测距传感器 [pdf] 用户指南 VL53L7CX 飞行时间多区域测距传感器,VL53L7CX,飞行时间多区域测距传感器,飞行多区域测距传感器,多区域测距传感器,测距传感器 |




