i2c dump工具使用(202589)
1、概述
I2C Dump 工具是一类用于读取、写入或分析 I2C 总线上设备数据的工具,主要作用是:
✨ 检测 I2C 总线上连接的设备(通过设备地址识别);✨ 读取指定 I2C 设备的寄存器数据(即 “dump” 数据);✨ 向 I2C 设备写入数据(用于配置或调试);✨ 诊断 I2C 总线通信故障(如设备无响应、数据传输错误等)。
I2C dump工具集包括:Linux 系统自带的 i2cdetect、i2cget、i2cset、i2cdump,以及第三方工具(如 Windows 下的 I2C 调试软件)。
2、Andrroid部署I2C Dump 工具
mount -o remount,rw / //mount指令重新挂载根目录为可读写状态cd mnt/media_rw/ //访问外部存储设备cp mnt/media_rw/DC98-89D0/iic/* system/bin //拷贝U盘iic工具到android文件系统指定目录chmod 777 system/bin/i2c* // 当前目录下所有以 i2c 开头的文件 / 目录的权限设置为 “所有用户可读写执行”
3、使用教程及说明
3.1、检测 I2C 总线和设备:i2cdetect
用于扫描指定 I2C 总线上的设备地址。
基本语法:
i2cdetect -y -r <总线编号>
-
-y :跳过交互确认,直接执行;
-
-r : 使用「读操作」方式扫描设备(read method);
-
<总线编号>:如 0、1、2(不同设备总线编号可能不同,可通过
ls /dev/i2c-*
查看);
示例:
3.2、读取 I2C 设备寄存器数据:i2cdump
用于批量读取指定 I2C 设备的寄存器数据,输出为十六进制格式。
基本语法:
i2cdump -y -f <总线编号> <设备地址> <寄存器地址模式>
-
-y :禁用交互确认,直接执行操作(同 i2cdetect 中的 -y);
-
-f :强制访问设备,即使该设备地址已被内核驱动标记为「在用」(通常用于调试,可能有风险);
-
<总线编号>:如 0、1、2(不同设备总线编号可能不同,可通过
ls /dev/i2c-*
查看); -
<设备地址>:由i2cdetect扫描得到(如 3c);
-
<寄存器地址模式>:指定寄存器地址长度(常用b表示 1 字节,w表示 2 字节,默认b)。
示例:
3.3、读取单个寄存器值:i2cget
用于读取指定 I2C 设备的单个寄存器数据。
基本语法:
i2cget -y <总线编号> <设备地址> <寄存器地址> <数据长度>
-
<寄存器地址>:要读取的寄存器地址(十六进制,如 0x00);
-
<数据长度>:b(1 字节,默认)或w(2 字节)。
示例:
3.4、写入数据到 I2C 设备:i2cset
用于向 I2C 设备的指定寄存器写入数据。
基本语法:
i2cset -y <总线编号> <设备地址> <寄存器地址> <数据值> <数据长度>
-
<数据值>:要写入的数值(十六进制,如 0xff);
-
<数据长度>:b(1 字节,默认)或w(2 字节)。
示例:
4、注意事项
- 权限问题:操作 I2C 设备需 root 权限,建议使用sudo执行命令;
- 设备地址格式:工具支持带0x前缀(如 0x3c)或不带的十六进制地址;
- 寄存器地址范围:不同设备的寄存器地址范围不同,需参考设备 datasheet(如 EEPROM 可能有 0x00-0xff 的地址);
- 通信故障:若输出全为UU(表示被内核驱动占用)或–(无响应),可能是设备未连接、地址错误或总线故障。
5、应用场景
- 嵌入式开发中调试传感器(如温湿度传感器 SHT3x)的数据读取;
- 读取 EEPROM 中的配置信息(如设备序列号);
- 验证 I2C 总线电气连接是否正常(如通过扫描设备确认硬件焊接正确)。