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

介绍
本用户手册的目的是解释如何使用超精简驱动程序 (ULD) API 处理 VL53L5CX 飞行时间 (ToF) 传感器。 它描述了对设备进行编程的主要功能、校准和输出结果。
VL53L5CX 是一款最先进的 ToF 多区域测距传感器,增强了 STMicroelectronics Flight Sense 产品系列。它采用微型可回流焊封装,集成了 SPAD 阵列、物理红外滤光片和衍射光学元件 (DOE),可通过一系列防护玻璃材料在各种环境照明条件下实现最佳测距性能。
多区域距离测量最多可进行 8×8 区域,具有 63° 宽对角线视野 view (FoV) 可以是
通过软件减少。 VL53L5CX 的每个区域可测量最远 4 米的目标距离,最大频率为 60 Hz。
得益于意法半导体的直方图专利算法,VL53L5CX 能够检测 FoV 内的不同物体。
直方图还可以抵抗 60 厘米以上的玻璃盖板串扰。

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

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

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

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

用户还需要实现两个 file它位于 /Platform 文件夹中。 建议的平台是一个空壳,必须填充专用功能。
笔记: 平台.h file 包含使用 ULD 的强制性宏。 一切 file 内容是正确使用 ULD 所必需的。
标定流程
串扰 (Xtalk) 定义为 SPAD 阵列上接收到的信号量,这是由于模块顶部添加的保护窗(盖玻璃)内的 VCSEL 光反射造成的。VL53L5CX 模块是自校准的,无需任何额外校准即可使用。
如果模块受玻璃盖保护,则可能需要串扰校准。凭借直方图算法,VL53L5CX 可以免受超过 60 厘米的串扰影响。然而,在 60 厘米以下的短距离内,Xtalk 可能会大于实际返回的信号。这会产生错误的目标读数或使目标看起来比实际距离更近。所有串扰校准功能都包含在 Xtalk 插件(可选)中。用户需要使用 file 'vl53l5cx_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 秒
使用函数 vl53l5cx_calibrate_xtalk() 执行校准。该功能可以随时使用。然而,必须首先初始化传感器。下图表示串扰校准流程。

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

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

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

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

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

检测阈值
除了常规的测距功能外,还可以对传感器进行编程,以根据某些预定义的标准检测物体。 使用插件“检测阈值”可以使用此功能,该选项默认不包含在 API 中。 这 file需要使用名为“vl53l5cx_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 个阈值组合。 用户可以在一个区域中使用多个阈值来设置组合。
运动指示器
VL53L5CX 传感器具有嵌入式固件功能,允许在场景中进行运动检测。运动指示符是在连续帧之间计算的。使用插件“vl53l5cx_plugin_motion_indicator”可以使用此选项。
运动指示器使用 vl53l5cx_motion_indicator_init() 函数进行初始化。要更改传感器分辨率,请使用专用函数更新运动指示器分辨率:vl53l5cx_motion_indicator_set_resolution()。
用户还可以更改检测运动的最小和最大距离。 最小和最大距离之差不能大于 1500 毫米。 默认情况下,距离初始化为 400 毫米到 1500 毫米之间的值。
结果存储在“motion_indicator”字段中。 在此字段中,数组“motion”给出包含每个区域的运动强度的值。 高值表示帧之间的高运动变化。 典型的运动给出的值在 100 到 500 之间。该灵敏度取决于积分时间、目标距离和目标反射率。
低功耗应用的理想组合是使用具有自主测距模式的运动指示器以及针对运动编程的检测阈值。 这允许以最小的功耗检测 FoV 中的运动变化。
定期温度补偿
测距性能受温度变化的影响。VL53L5CX 传感器嵌入了温度补偿,在流式传输开始时校准一次。但是,如果温度发生变化,补偿可能与新温度不一致。为了避免这个问题,客户可以使用自动 VHV 运行定期温度补偿。定期温度校准需要几毫秒才能完成。用户可以定义周期。
要使用此功能,客户需要:
• 调用函数vl53l5cx_set_VHV_repeat_count()。
• 然后,给出每个新校准之间的帧数作为参数。
如果参数为 0,则禁用补偿。
测距结果
可用数据
在测距活动期间可能会输出大量目标和环境数据。 下表描述了用户可用的参数。
桌子 3. 使用VL53L5CX传感器的可用输出
| 元素 | 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文件代码以获取更多信息。
自定义输出选择
默认情况下,所有 VL53L5CX 输出均启用。如果需要,用户可以禁用某些传感器输出。
驱动程序上无法禁用测量;它必须在“Platform.h”中执行 file. 用户可以声明以下宏来禁用输出:
#define VL53L5CX_DISABLE_AMBIENT_PER_SPAD
#定义VL53L5CX_DISABLE_NB_SPADS_ENABLED
#define VL53L5CX_DISABLE_NB_TARGET_DETECTED
#定义VL53L5CX_DISABLE_SIGNAL_PER_SPAD
#定义VL53L5CX_DISABLE_RANGE_SIGMA_MM
#定义VL53L5CX_DISABLE_DISTANCE_MM
#define VL53L5CX_DISABLE_TARGET_STATUS
#define VL53L5CX_DISABLE_REFLECTANCE_PERCENT
#定义VL53L5CX_DISABLE_MOTION_INDICATOR
因此,这些字段不会在结果结构中声明,并且数据不会传输到主机。 RAM 大小和 I²C 大小减小。
为了确保数据一致性,ST始终建议保持“检测到的目标数量”和“目标状态”启用。这会根据目标状态过滤测量结果(请参阅第 5.5 节:结果解释)。
获取测距结果
在测距会话期间,有两种方法可以知道是否有新的测距数据可用:
- 轮询模式:连续使用函数vl53l5cx_check_data_ready()。 它检测传感器返回的新流计数。
- 中断模式:等待引脚 A3 (GPIO1) 上引发的中断。约 100 μs 后中断自动清除。
当新数据准备就绪时,可以使用函数 vl53l5cx_get_ranging_data() 读取结果。 它返回包含所有选定输出的更新结构。 由于该设备是异步的,因此无需清除中断即可继续测距会话。
此功能适用于连续和自主测距模式。
使用原始固件格式
通过I²C传输测距数据后,固件格式和主机格式之间会进行转换。通常执行此操作以获得以毫米为单位的测距距离作为传感器的默认输出。如果用户想使用固件格式,则必须在平台中定义以下宏 file:VL53L5CX
#定义VL53L5CX_USE_RAW_FORMAT
结果解释
可以过滤 VL53L5CX 返回的数据以考虑目标状态。状态指示测量有效性。完整状态列表如下表所述。
桌子 4. 可用目标状态列表
| 目标状态 | 描述 |
| 0 | 测距数据未更新 |
| 1 | SPAD 阵列上的信号速率太低 |
| 2 | 目标阶段 |
| 3 | Sigma 估计量太高 |
| 4 | 目标一致性失败 |
| 5 | 范围有效 |
| 6 | 未执行环绕(通常是第一个范围) |
| 7 | 速率一致性失败 |
| 8 | 当前目标的信号速率太低 |
| 9 | 大脉冲有效范围(可能是由于合并目标) |
| 10 | 范围有效,但在之前的范围内未检测到目标 |
| 11 | 测量一致性失败 |
| 12 | 由于磨刀器,目标被另一个模糊 |
| 13 | 检测到目标但数据不一致。 次要目标经常发生。 |
| 255 | 未检测到目标(仅当启用检测到的目标数时) |
为了获得一致的数据,用户需要过滤无效的目标状态。为了给出置信度评级,状态为 5 的目标被视为 100% 有效。状态 6 或 9 可以视为置信度值为 50%。所有其他状态均低于 50% 置信水平。
驱动程序错误
当使用 VL53L5CX 传感器发生错误时,驱动程序会返回特定错误。下表列出了可能出现的错误。
桌子 5. 使用驱动程序时出现的错误列表
| 目标状态 | 描述 |
| 0 | 没有错误 |
|
127 |
用户编程了不正确的设置
(分辨率未知、测距频率太高……) |
| 255 | 重大错误。通常是由于 I²C 错误而导致的超时错误。 |
| 其他 | 上述多个错误的组合 |
笔记: 主机可以利用平台实现更多的错误码 files.
修订历史
桌子 6. 文档修订历史
| 日期 | 版本 | 更改 |
| 21 年 2021 月 XNUMX 日 | 1 | 初始版本 |
| 30 年 2021 月 XNUMX 日 | 2 | 额外 第 5.4 节:使用原始固件格式
添加了新的目标状态 13 表 4. 可用目标状态列表 |
| 05 年 2022 月 XNUMX 日 | 3 | 添加了有关目标之间的最小最小距离的注释 第 4.10 节:每个区域多个目标 |
| 10 年 2023 月 XNUMX 日 | 4 | 修改的 图 11. 前amp具有两个目标的直方图文件 |
| 21 年 2024 月 XNUMX 日 | 5 | 添加了 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 VL53L5CX 多区飞行时间测距传感器 [pdf] 用户手册 VL53L5CX 多区飞行时间测距传感器,VL53L5CX,多区飞行时间测距传感器,飞行时间测距传感器,飞行测距传感器,测距传感器,传感器 |




