调测参考
准备工具
i2c-tools是嵌入式常用的I2C调试工具,本章节使用的i2c-tools工具为i2cdetect与i2ctransfer。
工具 |
功能说明 |
---|---|
i2cdetect |
列出I2C总线上的所有设备。 |
i2ctransfer |
读写i2c设备某个寄存器值,支持16位/32位寄存器的读写。 |
其获取方式如下。
- 访问如下链接,下载i2c-tools-4.3.tar.gz。
https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/
- 登录Arm架构的Linux服务器。
- 执行如下命令,切换至root用户。
su - root
- 使用“WinSCP”,将软件包“ i2c-tools-4.3.tar.gz”上传至Linux系统root用户属组目录下,例如“/opt”。详细操作请参见使用WinSCP传输文件。
- 执行如下命令,进入源码包所在目录,例如“/opt”。
cd /opt
- 执行以下命令,解压i2c-tools-4.3.tar.gz。
tar -zxvf i2c-tools-4.3.tar.gz
- 执行以下命令,进入“i2c-tools-4.3”目录。
cd i2c-tools-4.3
- 执行以下命令进行编译。
make USE_STATIC_LIB=1
编译成功后,在当前目录的子目录“tools”下会生成对应的可执行文件“i2cdetect”与“i2ctransfer”。
调试操作
- 登录待调试I2C的环境。
- 执行如下命令,切换至root用户。
su - root
- 使用“WinSCP”,将i2cdetect与i2ctransfer上传至root用户属组目录下,例如“/opt”。详细操作请参见使用WinSCP传输文件。
- 执行以下命令,添加可执行权限。
chmod +x i2ctransfer
chmod +x i2cdetect
- 执行以下命令,查看系统的I2C总线信息。./i2cdetect -l
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
- 执行以下命令,使用i2cdetect -y查询i2c上挂载的设备。./i2cdetect -y 5
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挂载有设备。
- 执行以下命令,写I2C。
./i2ctransfer -y -f 8 w3@0x50 0x00 0x80 0x55
表1 参数说明 字段
说明
8
I2C设备号。
w3
表示写3个值,前两位为对应16位寄存器地址,之后则为要写的值。
0x50
I2C从设备地址。
0x00 0x80
表示往0x0080地址写值。
0x55
表示给对应寄存器写0x55。
- 执行以下命令,读I2C。./i2ctransfer -y -f 8 w2@0x50 0x00 0x80 r1
表2 参数说明 字段
说明
8
I2C的总线号。
w2
表示写2个值,即要读的对应16位寄存器地址。
0x50
I2C从设备地址。
0x00 0x80
表示读取0x0080地址的值。
r1
表示从寄存器开始读取1个字节。
父主题: I2C