1.7 KiB
1.7 KiB
VL53L0X 多传感器模板(STM32H743 + FreeRTOS)
这组模板按固定顺序组织 4 颗 VL53L0X:
- 左上
- 左下
- 右上
- 右下
文件说明
-
vl53l0x_platform.h/.c- ST 官方 API 的平台适配层
- 不再把
hi2c1硬编码到驱动里 - 读写失败时不会污染
RdWord/RdDWord输出 PollingDelay()在调度器已启动时使用vTaskDelay()
-
vl53_board.h/.c- 4 颗 VL53L0X 的板级管理层
- 负责
XSHUT拉低/逐个拉起/逐个改地址 - 默认运行地址:0x54 / 0x56 / 0x58 / 0x5A(8-bit 写法)
-
vl53_task.h/.c- FreeRTOS 任务骨架
- 10ms 周期轮询一遍 4 颗传感器
- 采集结果写成一个快照,避免上层散读散写
你需要改的地方
只要改 vl53_board.c 里的 g_vl53_hw_cfg[]:
hi2cxshut_portxshut_pingpio1_port/gpio1_pin(如果暂时不用中断,可保持NULL/0)
集成方式
- 保留 ST 官方 API 的
vl53l0x_api*.c、vl53l0x_def.h等核心文件不动。 - 用本模板替换你原来的
vl53l0x_platform.h/.c。 - 新增
vl53_board.*和vl53_task.*到App/sensors/或你自己的目录。 - 在 CubeMX 里保留任务壳函数,在任务壳里调用
AppVl53_TaskLoop()。 - 不要把 VL53 逻辑塞进你 20ms 的
canTxTask。
建议任务频率
canTxTask: 保持 20msvl53Task: 10ms 唤醒,内部读 ready 后取数- 估计/控制:50–100Hz
备注
- 地址写法用的是 8-bit,默认地址是
0x52。 - 多颗同总线时,必须所有器件先
XSHUT=RESET,然后逐个拉起并改地址。 - 这版模板默认走“单任务采集 + 快照共享”,适合你当前的 ASER 架构。