你好 @Fuuucyyy,
关于 RDK X5 的 IMU 通信方式,结论如下:
核心结论
RDK X5 板载 IMU 使用的是 SPI 通信方式,不是 I2C。
具体型号通常是 ICM-42688 或类似 InvenSense 系列陀螺仪/加速度计,通过 SPI 接口 与主控芯片通信。
引脚连接说明
如果你要外接 IMU 模块(如 ICM-42688、BMI088 等),需要连接以下 SPI 引脚(以 RDK X5 40Pin 为例):
| 信号 | RDK X5 40Pin 引脚号 | 说明 |
|---|---|---|
| SPI2_CS | Pin 24 (GPIO9_14) | 片选 |
| SPI2_MOSI | Pin 19 (GPIO9_11) | 主机输出从机输入 |
| SPI2_MISO | Pin 21 (GPIO9_12) | 主机输入从机输出 |
| SPI2_CLK | Pin 23 (GPIO9_13) | 时钟 |
| INT | Pin 35 (LSIO_GPIO1_10) | 中断引脚(可选,用于数据就绪中断) |
| VCC | Pin 17 / Pin 19 | 3.3V 供电 |
| GND | Pin 20 / Pin 25 | 地 |
注意:RDK X5 的 40Pin 接口中,SPI2 是常用接口,也可使用 SPI1,但需修改设备树。
如何启用 SPI IMU
-
修改设备树(以 SPI2 为例):
在x5-rdk-v1p0.dts中添加:&spi2 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_spi2>; icm42688@0 { compatible = "invensense,icm42688"; reg = <0>; spi-max-frequency = <32000000>; spi-cpha; spi-cpol; interrupt-parent = <&ls_gpio0_porta>; interrupts = <10 IRQ_TYPE_EDGE_FALLING>; }; }; -
编译并部署设备树:
dtc -I dts -O dtb -o x5-rdk-v1p0.dtb x5-rdk-v1p0.dts scp x5-rdk-v1p0.dtb root@<your_x5_ip>:/boot/hobot/ -
加载驱动(如未编译进内核):
insmod inv-icm42600-spi.ko -
验证数据:
cat /sys/bus/iio/devices/iio:device1/in_accel_x_raw
参考资源
- 社区已有详细教程:X5 驱动 icm42688 陀螺仪
- 官方 40Pin 定义文档:请查阅 RDK X5 硬件接口文档
- BMI088 适配讨论:IMU BMI088 适配 RDK X5
你是要:
- 使用板载 IMU?→ 直接通过
/dev/iio:deviceX读取数据 - 外接 IMU 模块?→ 按上述 SPI 引脚连接 + 修改设备树
- 不确定 IMU 型号?→ 运行
dmesg | grep -i imu或ls /sys/bus/iio/devices/查看
如需进一步帮助(如设备树修改、ROS2 接入),请补充你的具体使用场景。