1、i2c-tools介绍
1、在日常linux开发中,有时候需要确认i2c硬件是否正常连接,设备是否正常工作,设备的地址是多少等等,这里我们就需要使用一个用于测试I2C总线的工具——i2c-tools,i2c-tools原理是通过操作/dev 路径 i2c-n设备文件完成,因此kernel必须开启了 CONFIG_I2C_CHARDEV 配置,否者会报找不到节点。在设备上也可以通过目标板终端输入:ls /sys/bus/i2c/devices查看i2c设备节点信息。看到的i2c-0,i2c-1,指的是i2c总线节点,i2c从设备都是挂载在总线节点下的。
2、源码获取:Index of /pub/software/utils/i2c-tools/
3、包含工具
i2cdetect:用于扫描 i2c 总线上的设备,并显示地址。
i2cset:设置i2c设备某个寄存器的值。
i2cget:读取i2c设备某个寄存器的值。
i2cdump:读取某个i2c设备所有寄存器的值。
二、测试方法
- i2cdetect
(1)查询开发板包含的i2c总线和外设输入命令:i2cdetect -l
2)探测开发板包含的i2c总线,探测i2c-1总线上挂载的外设,-y表示取消交互模式,1是指i2c-1,输入命令:i2cdetect -y -r 1
下图所示,从设备地址是0x51,UU表示设备地址的从设备被驱动占用,探测程序会略过该设备卸载对应的驱动后,UU就会变成数据,-- 表示该地址被检测,但是没有应答,这里就用这个设备地址进行测试。
2. i2cset
(1)设置i2c设备单个寄存器值,输入命令i2cset -y -f 1 0x51 0x00 0x08
-y 取消交互模式,直接执行命令
-f 强制访问该设备
1 表示i2c总线编号
0x57 表示i2c设备地址
0x00 表示寄存器地址
0x08 表示待写入的值
3. i2cget
(1)查看i2c设备单个寄存器的值,输入命令i2cget -y -f 1 0x51 0x00
-y 取消交互模式,直接执行命令
-f 强制访问该设备
1 表示i2c总线编号
0x51 表示i2c设备地址
0x00 表示寄存器地址
4. i2cdump
(1)查看i2c设备所有寄存器的值,输入命令i2cdump -y -f 1 0x51
-y 取消交互过程,直接执行命令
-f 强制访问该设备
1 表示i2c总线编号
0x51 表示i2c设备地址