i2c-tools是嵌入式常用的I2C调试工具,本章节使用的i2c-tools工具为i2cdetect与i2ctransfer。
工具 |
功能说明 |
---|---|
i2cdetect |
列出I2C总线上的所有设备。 |
i2ctransfer |
读写i2c设备某个寄存器值,支持16位/32位寄存器的读写。 |
其获取方式如下。
https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/
su - root
cd /opt
tar -zxvf i2c-tools-4.3.tar.gz
cd i2c-tools-4.3
make USE_STATIC_LIB=1
编译成功后,在当前目录的子目录“tools”下会生成对应的可执行文件“i2cdetect”与“i2ctransfer”。
su - root
chmod +x i2ctransfer
chmod +x i2cdetect
i2c-0 i2c HiSilicon I2C Controller 300170000.i2c0 I2C adapter i2c-1 i2c HiSilicon I2C Controller 300180000.i2c1 I2C adapter i2c-2 i2c HiSilicon I2C Controller 300190000.i2c2 I2C adapter i2c-3 i2c HiSilicon I2C Controller 3001a0000.i2c3 I2C adapter i2c-5 i2c HiSilicon I2C Controller c4170000.i2c5 I2C adapter i2c-6 i2c HiSilicon I2C Controller c4180000.i2c6 I2C adapter i2c-7 i2c HiSilicon I2C Controller 82060000.i2c7 I2C adapter i2c-8 i2c HiSilicon I2C Controller 82070000.i2c8 I2C adapter i2c-9 i2c HiSilicon I2C Controller c4190000.i2c9 I2C adapter i2c-13 i2c HiSilicon I2C Controller 401040000.i2c13 I2C adapter
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
当前表明只有0x32挂载有设备。
./i2ctransfer -y -f 8 w3@0x50 0x00 0x80 0x55
字段 |
说明 |
---|---|
8 |
I2C设备号。 |
w3 |
表示写3个值,前两位为对应16位寄存器地址,之后则为要写的值。 |
0x50 |
I2C从设备地址。 |
0x00 0x80 |
表示往0x0080地址写值。 |
0x55 |
表示给对应寄存器写0x55。 |
字段 |
说明 |
---|---|
8 |
I2C的总线号。 |
w2 |
表示写2个值,即要读的对应16位寄存器地址。 |
0x50 |
I2C从设备地址。 |
0x00 0x80 |
表示读取0x0080地址的值。 |
r1 |
表示从寄存器开始读取1个字节。 |