i2c-tools使用方法及调试
编译方法
i2c-tools是一款开源工具,专门用来调试i2c设备,目前Tina系统已经集成了i2ctools源码,在menuconfig里打开配置编译即可。 Android的话可以从开源网站http://dl.lm-sensors.org/i2c-tools/releases/下载i2c-tools, 然后修改makefaile编译即可,会生成4个文件, 将这四个文件i2cdetect, i2cdump, i2cget, i2cset push到安卓设备就可以调试了。
调试命令
一、i2cdetect命令
1、检测系统有几条有效的i2c 总线
i2cdetect -l 结果:root@TinaLinux:/# i2cdetect -l i2c-1 i2c twi1 I2C adapter
2、检测某条i2c总线上器件挂载情况
i2cdetect-r -y 1(检测i2c-1上的挂载情况)
root@TinaLinux:/# i2cdetect -r -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- UU -- -- -- -- -- UU -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
如上图打印所示,表示有两个器件挂载在i2c1上,器件地址分别是0x3b和0x35.
二、i2cdump命令
1、用i2cdump查看器件所有寄存器的值,这个很有用:
输入命令:i2cdump -y -f 总线 器件地址
root@TinaLinux:/# i2cdump -y -f 1 0[Jx3b No size specified (using byte-data access) 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: 4a 00 00 00 00 00 01 99 00 01 00 00 00 00 00 00 J.....??.?...... 10: 48 00 03 0d 00 00 0f d0 00 00 00 00 00 00 00 00 H.??..??........ 20: 01 93 93 00 00 30 00 00 00 00 00 00 00 00 00 00 ???..0.......... 30: d0 00 00 7f 01 75 70 00 00 00 00 00 e4 e4 e4 e4 ?..??up.....???? 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 50: 00 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .?.............. 60: 00 1f 00 e4 00 00 0f 00 ff aa 45 00 ff d5 22 00 .?.?..?..?E..?". 70: a0 a0 a0 a0 00 00 01 02 04 08 00 00 00 00 00 00 ????..????...... 80: 11 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ??.............. 90: 32 32 32 32 00 00 00 00 00 00 00 00 00 00 00 00 2222............ a0: 07 00 00 00 00 00 00 07 00 00 00 00 00 00 07 00 ?......?......?. b0: 00 00 00 00 0b 07 00 00 00 00 00 0f 00 00 00 00 ....??.....?.... c0: 77 77 00 55 00 00 00 00 00 00 00 00 00 00 00 00 ww.U............ d0: 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 01 .?.............? 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 ................ root@TinaLinux:/#
三、i2cset & i2cget命令
用i2cset设置单个寄存器值,用i2cget读取单个寄存器值,可以在初期调试时发挥很大作用,一旦有预期的现象出现,就可以用i2cdump读出整个寄存器的值,然后固化到代码中: i2cget -y -f i2c总线 器件地址 寄存器地址 i2cset -y -f i2c总线 器件地址 寄存器地址 要写入的值
root@TinaLinux:/# i2cget -y -f 1 0x3b 0x61 0x1f root@TinaLinux:/# i2cset -y -f 1 0x3b 0x61 0x22 root@TinaLinux:/# i2cget -y -f 1 0x3b 0x61 0x22 root@TinaLinux:/#