🎯 一、硬件 I2C 配置(适用于 J5 / J7 接口)
硬件 I2C 由 RK3566 芯片内部的专用控制器处理,速度快、时序精准,适用于J5 (Pin3/Pin5)和J7 (Pin24/Pin21)接口。
方式一:使用 rsetup 工具(推荐)
打开终端,运行:
bash
sudo rsetup
进入
Overlays→Manage overlays。在列表中找到并选中以下选项之一(用空格键选中):
J5 接口:
Enable I2C3-M0或rk3568-i2c3-m0J7 接口:
Enable I2C2-M1或rk3568-i2c2-m0
按
Tab切换到<Ok>保存退出,然后重启:bash
sudo reboot
方式二:手动编辑 /boot/uEnv.txt
编辑配置文件:
bash
sudo nano /boot/uEnv.txt
找到
overlays=开头的行,在原有内容后用逗号或空格追加(注意:文件中只能有一行overlays=):J5 接口:添加
rk3568-i2c3-m0J7 接口:添加
rk3568-i2c2-m0
保存并重启:
bash
sudo reboot
验证硬件 I2C
重启后,运行i2cdetect -l,应能看到/dev/i2c-3(J5)或/dev/i2c-2(J7)。然后:
bash
# J5 接口 sudo i2cdetect -y 3 # J7 接口 sudo i2cdetect -y 2
看到0x29即表示硬件 I2C 正常。
🎯 二、软件 I2C 配置(适用于 J6 / J8 接口)
软件 I2C 通过 GPIO 引脚模拟 I2C 波形,适用于J6 (Pin7/Pin29)和J8 (Pin19/Pin23)这些没有硬件 I2C 控制器的引脚。
方式一:使用 rsetup 工具
运行
sudo rsetup,进入Overlays→Manage overlays。查找
i2c-gpio相关选项,用空格键选中。保存退出并重启。
注意:如果你的系统镜像中没有预置
i2c-gpiooverlay,请使用方式二手动配置。
方式二:手动编辑 /boot/uEnv.txt
编辑配置文件:
bash
sudo nano /boot/uEnv.txt
在
overlays=行中追加以下内容(不要覆盖原有内容):测试 J6 (Pin7/Pin29):
ini
overlays=i2c-gpio,i2c_gpio_sda=4,i2c_gpio_scl=5,bus=8
i2c_gpio_sda=4:Pin7 对应 GPIO04i2c_gpio_scl=5:Pin29 对应 GPIO05bus=8:指定一个未被占用的总线号(可在i2cdetect -l中确认空闲编号)
测试 J8 (Pin19/Pin23):
ini
overlays=i2c-gpio,i2c_gpio_sda=147,i2c_gpio_scl=146,bus=8
i2c_gpio_sda=147:Pin19 对应 GPIO4_C3i2c_gpio_scl=146:Pin23 对应 GPIO4_C2
保存并重启:
bash
sudo reboot
验证软件 I2C
重启后运行i2cdetect -l,应看到类似i2c-8 i2c i2c-gpio的输出。然后:
bash
sudo i2cdetect -y 8
看到0x29即表示软件 I2C 配置成功。
🎯 三、实验验证流程
接线(VL53L5CX → Radxa Zero 3E)
| 模块引脚 | 连接目标 | 说明 |
|---|---|---|
| SDA | J5 Pin3 / J7 Pin24 / J6 Pin7 / J8 Pin19 | 根据测试接口选择 |
| SCL | J5 Pin5 / J7 Pin21 / J6 Pin29 / J8 Pin23 | 根据测试接口选择 |
| VIN | Pin1 或 Pin17 (3.3V) | 严禁接 5V |
| GND | 任意 GND | 必须共地 |
| LPn | 悬空(模块板上已上拉) | 若读不到数据可补接 3.3V |
测试步骤
彻底断电后再插拔传感器(带电插拔极易烧毁芯片)。
上电后,用
i2cdetect扫描对应总线。看到
0x29即表示该接口物理连接正常。测试软件 I2C 时,绝对不要运行
vl53l5cx_simple_example.py等完整测距例程,因为软件 I2C 速度极慢,传输 82KB 固件几乎必然卡死。只用i2cdetect或极简read_byte脚本验证即可。
🎯 四、常见问题排查
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
i2cdetect全-- | 传感器未唤醒 / 接线错误 | 检查 LPn 是否拉高、SDA/SCL 是否接反 |
Permission denied: /dev/i2c-3 | 权限不足 | sudo usermod -aG i2c radxa后重新登录 |
| 初始化耗时 3~10 秒 | 正常现象 | VL53L5CX 每次上电需下载 82KB 固件 |
| 软件 I2C 扫描不到 | overlay 未生效 | 确认/boot/uEnv.txt中overlays=行已正确修改并重启 |
| 帧率上不去 | 分辨率过高 | 8x8 最高 15Hz,4x4 最高 60Hz |
🎯 五、总结对比
| 接口 | 配置方式 | 总线号 | 能否跑完整测距 |
|---|---|---|---|
| J5 (Pin3/Pin5) | 硬件 I2C(rsetup / uEnv.txt) | i2c-3 | ✅ 可以 |
| J7 (Pin24/Pin21) | 硬件 I2C(rsetup / uEnv.txt) | i2c-2 | ✅ 可以 |
| J6 (Pin7/Pin29) | 软件 I2C(i2c-gpio overlay) | i2c-8(示例) | ❌ 仅验证连接,不跑 init() |
| J8 (Pin19/Pin23) | 软件 I2C(i2c-gpio overlay) | i2c-8(示例) | ❌ 仅验证连接,不跑 init() |
这份笔记覆盖了从配置到验证的完整流程,你可以直接对照操作。如果某个步骤遇到问题,随时可以再问我。