I2C 使用 简介 主控芯片 RK3588S 上有9个I2C控制器,I2C总线上的数据在标准模式下可以以高 达100k位/秒的速率传输,在快速模式下可以以高达400k位/秒的速率传输。 AIO-3588SG开发板引出2路I2C供用户自行配置。 本文主要描述如何调试i2c i2cdetect 命令 查看系统已安装的 I2C 总线列表 rk3588s_firefly_aio_3588sg:/ # i2cdetect -l i2c-10 i2c DP-AUX I2C Adapter i2c-8 i2c rk3x-i2c I2C Adapter i2c-6 i2c rk3x-i2c I2C Adapter i2c-4 i2c rk3x-i2c I2C Adapter i2c-2 i2c rk3x-i2c I2C Adapter i2c-0 i2c rk3x-i2c I2C Adapter i2c-9 i2c fde50000.dp I2C Adapter i2c-7 i2c rk3x-i2c I2C Adapter 查看i2c6下的设备 rk3588s_firefly_aio_3588sg:/ # i2cdetect -y 6 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- 可以看到i2c6上加载了两个设备的驱动,设备地址是0x48、0x5dUU表示此地址已 经加载了驱动,具体有没有设备不一定 i2cdump 命令 查看i2c4下,0x64设备 0x00 - 0xff 的寄存器的值 rk3588s_firefly_aio_3588sg:/ # i2cdump -f -y 4 0x63 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: 0d 00 34 3a 63 26 81 00 00 00 40 8a aa 50 0f f5 ?.4:c&?...@??P?? 10: 3c 00 00 00 00 00 00 00 b0 c4 bf b9 9b 97 e0 cf <.......???????? 20: c1 cd bb 9d 88 7c 65 56 52 50 4e 97 79 d2 de ff ?????|eVRPN?y??? 30: e5 b4 71 7c b0 c5 ae 93 9d b5 cf d5 c6 b0 99 89 ??q|???????????? 40: 82 85 91 a8 c1 c9 b0 43 00 00 90 02 00 00 00 00 ???????C..??.... 50: 00 00 64 00 00 00 00 00 00 00 00 00 00 00 00 a2 ..d............? 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ a0: 00 00 00 00 00 00 64 00 00 e6 00 00 00 00 00 00 ......d..?...... b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 可以看到寄存器 地址: 0x00 值: 0x0d 地址: 0x01 值: 0x00 地址: 0x02 值: 0x34 地址: 0x03 值: 0x3a ... 以此类推 i2cget 命令 获取 i2c4 下 0x63 设备的 0x0d 寄存器的值 rk3588s_firefly_aio_3588sg:/ # i2cget -f -y 4 0x63 0x0d 0x50 i2cset 命令 对 i2c4 下 0x63 设备的 0x0d 寄存器写入数据, 0x51 是数据,b表示数据长度 为8bit rk3588s_firefly_aio_3588sg:/ # i2cset -fy 4 0x63 0x0d 0x51 b rk3588s_firefly_aio_3588sg:/ # rk3588s_firefly_aio_3588sg:/ # i2cget -f -y 4 0x63 0x0d 0x51 对 i2c4 下 0x63 设备的 0x0c 寄存器写入数据, 0xff00 是数据,w 表示数据 长度为16bit rk3588s_firefly_aio_3588sg:/ # i2cset -fy 4 0x63 0x0c 0xff00 w rk3588s_firefly_aio_3588sg:/ # rk3588s_firefly_aio_3588sg:/ # i2cget -f -y 4 0x63 0x0c 0x00 rk3588s_firefly_aio_3588sg:/ # i2cget -f -y 4 0x63 0x0d 0xff