RV1109平台调试VL53L3CX传感器全攻略

1. 项目背景

最近在RV1109平台上需要集成ST公司的VL53L3CX飞行时间(ToF)传感器,用于精确距离测量。VL53L3CX是STMicroelectronics推出的新一代多区域测距传感器,具有更高的精度和更远的测量范围。本文将完整记录从驱动移植到应用测试的全过程。

2. 准备工作

2.1 驱动下载

首先需要从ST官方网站获取VL53L3CX的Linux驱动程序:

  • 官方驱动页面:https://www.st.com/zh/embedded-software/stsw-img021.html
  • 下载完成后解压得到vl53Lx驱动目录

2.2 驱动文件放置

将解压后的驱动文件放置到RV1109 SDK的合适位置:

cp -r vl53Lx/ kernel/drivers/input/vl53Lx

确保目录结构完整,包含以下关键文件:

vl53lx_module.c (主驱动文件)
vl53lx_i2c_platform.c (I2C平台相关代码)
inc/ (包含所有必要的头文件)

3. 驱动移植

3.1 修改Kconfig添加配置选项

在kernel/drivers/input/Kconfig中添加驱动配置选项:

config STMVL53LX
       tristate "STM VL53L3CX Proximity support"
       depends on I2C=y
       help
         Say Y here if you want to use STMicroelectronics's vl53L3CX TOF AF sensor
         through I2C interface.
         
         To compile this driver as a module, choose M here: the
         module will be called stmvl53lx.

3.2 修改Makefile添加编译规则

在kernel/drivers/input/Makefile末尾添加:

obj-$(CONFIG_STMVL53LX) += vl53Lx/

3.3 配置内核选项

修改kernel/arch/arm/configs/rv1126_defconfig,添加模块编译选项:

CONFIG_STMVL53LX=m

4. 设备树配置

根据硬件原理图,VL53L3CX连接在I2C4总线上,地址为0x29。修改设备树文件kernel/arch/arm/boot/dts/rv1109-38-v10-spi-nand.dts:

&i2c4 {
       status = "okay";
       clock-frequency = <400000>;
       pinctrl-0 = <&i2c4m1_xfer>;
    
       stmvl53lx: stmvl53lx@29 {
        compatible = "st,stmvl53lx";
        reg = <0x29>;
        xsdn-gpio = <&gpio1 RK_PA5 GPIO_ACTIVE_LOW>;
        pwren-gpio = <&gpio1 RK_PA6 GPIO_ACTIVE_LOW>;
        intr-gpio = <&gpio1 RK_PA7 GPIO_ACTIVE_LOW>;
        boot-reg = <0x29>;
    };
};

关键点说明:

pinctrl-0设置为i2c4m1_xfer,对应硬件引脚复用模式
三个GPIO分别对应传感器的复位(XSDN)、电源使能(PWREN)和中断(INTR)引脚
I2C地址设置为0x29

5. 测试应用程序集成

5.1 准备测试程序

将驱动包中的测试程序vl53lx_test拷贝到external/vl53lx_test/

5.2 添加Buildroot配置

创建buildroot/package/rockchip/vl53lx_test/Config.in:

config BR2_PACKAGE_VL53LX_TEST
	bool "vl53lx test"

创建buildroot/package/rockchip/vl53lx_test/vl53lx_test.mk:

#############################################################
#
# vl53lx_test
#
#############################################################
ifeq ($(BR2_PACKAGE_VL53LX_TEST), y)
VL53LX_TEST_VERSION:=1.0.0
VL53LX_TEST_SITE=$(TOPDIR)/../external/vl53lx_test
VL53LX_TEST_SITE_METHOD=local

define VL53LX_TEST_BUILD_CMDS
    $(TARGET_MAKE_ENV) $(MAKE) CC=$(TARGET_CC) CXX=$(TARGET_CXX) -C $(@D)
endef

define VL53LX_TEST_CLEAN_CMDS
    $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) clean
endef

define VL53LX_TEST_INSTALL_TARGET_CMDS
    $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
endef

define VL53LX_TEST_UNINSTALL_TARGET_CMDS
    $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) uninstall
endef

$(eval $(generic-package))
endif

5.3 启用测试程序

修改buildroot/configs/rockchip_rv1126_rv1109_spi_nand_defconfig:

BR2_PACKAGE_VL53LX_TEST=y

6. 编译与测试

6.1 编译内核模块

make kernel-rebuild

6.2 编译Buildroot

make

6.3 烧写固件

将生成的固件烧写到RV1109开发板。

6.4 测试步骤

加载内核模块:`insmod /lib/modules/$(uname -r)/stmvl53lx.ko`
检查设备节点:`ls /dev/vl53l*`
运行测试程序:`vl53lx_test`

7. 常见问题解决

7.1 I2C通信失败

现象:dmesg显示I2C通信错误

解决方法:

确认设备树中I2C配置正确
使用i2c-tools检查设备是否可见:`i2cdetect -y 4`
检查电源和复位信号时序

7.2 测量数据不稳定

现象:测量值波动较大

解决方法:

确保传感器前方没有干扰物

调整测量模式和环境光补偿参数

检查电源稳定性,必要时增加滤波电容

8. 总结

通过以上步骤,我们成功在RV1109平台上集成了VL53L3CX ToF传感器。关键点包括:

正确配置设备树的I2C和GPIO

确保驱动与内核版本兼容

合理处理传感器的电源和复位时序

VL53L3CX在RV1109上的应用为我们的项目提供了精确的距离测量能力。

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
最新发布
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值