3.5 KiB
3.5 KiB
VL53L0X_API Notes
本文档只说明 VL53L0X_API 目录里我们自己写的兼容层分别负责什么,方便后续在旧工程里继续集成。
目录分层
core/
这是 ST 官方 API 核心层,主要负责:
- 设备初始化
- 寄存器访问逻辑
- 测距流程
- 官方校准函数
PerformRefSpadManagementPerformRefCalibrationPerformOffsetCalibrationPerformXTalkCalibration
这部分一般不要随便改,除非明确要修改 ST 官方行为。
platform/
这是我们自己写的兼容层,负责把 ST API 接到 STM32 工程里。
我们自己写的兼容层文件说明
platform/vl53l0x_platform.h
平台适配层头文件。
主要作用:
- 声明和 STM32 平台相关的接口
- 给 ST API 提供底层读写函数声明
- 提供总线、GPIO、延时、地址切换相关接口声明
platform/vl53l0x_platform.c
平台适配层实现。
主要作用:
- 对接 STM32 的
HAL I2C - 实现 VL53L0X 所需的寄存器读写
- 绑定每颗传感器的 I2C 句柄和地址
- 控制
XSHUT - 支持运行时改 I2C 地址
简单说,这一层负责把 ST API 的“平台无关接口”落到我们实际板子上。
platform/vl53_board.h
板级管理层头文件。
主要作用:
- 定义多颗 VL53 共用的管理结构体
- 定义快照结构
Vl53BoardSnapshot_t - 定义硬件配置结构
Vl53BoardHwCfg_t - 对外暴露板级接口,例如:
Vl53Board_InitVl53Board_StartContinuousVl53Board_StopContinuousVl53Board_ReadAll
- 当前版本还扩展了校准相关数据结构和接口
这一层是“上层任务代码直接调用的 API”。
platform/vl53_board.c
板级管理层实现。
主要作用:
- 管理一组 VL53 传感器
- 完成多颗设备的上电、拉低/拉高
XSHUT、分配运行地址 - 调 ST 官方初始化流程
- 启动/停止连续测量
- 轮询读取测距结果
- 组织成统一快照给上层使用
- 对每颗测距值做简单卡尔曼滤波
如果说 vl53l0x_platform.c 是“底层总线适配”,那 vl53_board.c 就是“更贴近业务的板级封装”。
platform/vl53_calibration_config.h
这是我们自己加的运行时校准配置头。
主要作用:
- 集中保存已经确认过的校准值
- 让上层在启动后把这些值写回 VL53
当前主要用于保存:
offset_micro_metersxtalk_compensation_rate_mcps- 对应的
*_calibrated标志
这不是 ST 官方自带文件,是我们为了工程集成方便单独加的配置层。
platform/vl53l0x_types.h
类型辅助头文件。
主要作用:
- 补充平台侧需要的公共类型定义
- 给
platform层做类型适配
platform/vl53l0x_platform_log.h
日志相关兼容头。
主要作用:
- 兼容 ST API 的日志宏
- 当前工程里基本属于轻量占位层
推荐修改边界
如果后续要继续改 VL53 集成,优先修改:
platform/vl53_board.c/.hplatform/vl53_calibration_config.h
如果只是换板子、换 I2C、换 XSHUT 引脚,优先修改:
platform/vl53l0x_platform.c/.h
如果不是明确要动 ST 官方行为,尽量不要去改:
core/
一句话总结
我们自己写的兼容层分两层:
vl53l0x_platform.*:把 ST API 接到 STM32 HALvl53_board.*:把多颗 VL53 封装成上层任务可直接使用的板级接口
而 vl53_calibration_config.h 是我们额外加的“运行时固定标定值配置文件”。