95a46c130d
- 搬运 ST API C 源码到 lib/vl53l0x/, 替换 I2C 层为用户态 i2c-dev - 新增 vl53l0x_platform_user.cpp: WriteMulti/ReadMulti 等全平台接口 - 重写 vl53l0x.cpp: start时unbind内核驱动, 单次测距, 无后台轮询 - 高速模式 20000μs timing budget, 模型缓存零污染(41-43ms) - LiDAR 每5帧一读(~20ms), 隔帧模型推理, fps 25.1→29.6 (+18%) - 同事的LiDAR避障集成: 12个配置参数, 中线变形绕行, 刹车注释 - nice -10 + sched_yield 优先级优化
42 lines
1.4 KiB
C
42 lines
1.4 KiB
C
#ifndef VL53L0X_PLATFORM_H_
|
|
#define VL53L0X_PLATFORM_H_
|
|
|
|
#include "vl53l0x_def.h"
|
|
#include "vl53l0x_platform_log.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define VL53L0X_MAX_I2C_XFER_SIZE 64
|
|
|
|
typedef struct {
|
|
VL53L0X_DevData_t Data;
|
|
uint8_t I2cDevAddr;
|
|
int i2c_fd;
|
|
} vl53l0x_dev_t;
|
|
|
|
typedef vl53l0x_dev_t *VL53L0X_DEV;
|
|
|
|
#define PALDevDataGet(Dev, field) (Dev->Data.field)
|
|
#define PALDevDataSet(Dev, field, data) ((Dev->Data.field) = (data))
|
|
|
|
VL53L0X_Error VL53L0X_LockSequenceAccess(VL53L0X_DEV Dev);
|
|
VL53L0X_Error VL53L0X_UnlockSequenceAccess(VL53L0X_DEV Dev);
|
|
VL53L0X_Error VL53L0X_WriteMulti(VL53L0X_DEV Dev, uint8_t index, uint8_t *pdata, uint32_t count);
|
|
VL53L0X_Error VL53L0X_ReadMulti(VL53L0X_DEV Dev, uint8_t index, uint8_t *pdata, uint32_t count);
|
|
VL53L0X_Error VL53L0X_WrByte(VL53L0X_DEV Dev, uint8_t index, uint8_t data);
|
|
VL53L0X_Error VL53L0X_WrWord(VL53L0X_DEV Dev, uint8_t index, uint16_t data);
|
|
VL53L0X_Error VL53L0X_WrDWord(VL53L0X_DEV Dev, uint8_t index, uint32_t data);
|
|
VL53L0X_Error VL53L0X_RdByte(VL53L0X_DEV Dev, uint8_t index, uint8_t *data);
|
|
VL53L0X_Error VL53L0X_RdWord(VL53L0X_DEV Dev, uint8_t index, uint16_t *data);
|
|
VL53L0X_Error VL53L0X_RdDWord(VL53L0X_DEV Dev, uint8_t index, uint32_t *data);
|
|
VL53L0X_Error VL53L0X_UpdateByte(VL53L0X_DEV Dev, uint8_t index, uint8_t AndData, uint8_t OrData);
|
|
VL53L0X_Error VL53L0X_PollingDelay(VL53L0X_DEV Dev);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|