获取更多相关的嵌入式开发工具,可收藏系列博文,持续更新中:
【开发工具】嵌入式常用开发工具汇总帖
http://i2c.wiki.kernel.org/index.php/I2C_Tools
https://www.kernel.org/pub/software/utils/i2c-tools/
tar -vxzf i2c-tools-4.1.tar.gz
注:小技巧:Linux下一般压缩文件后缀为.tar.bz2和.tar.gz,
它们解压命令有两三个选项是一致的: xf(v),
前者再加上j选项,后者再加上z选项。
cd i2c-tools-4.1/
make
或者
make USE_STATIC_LIB=1 //注:(使用静态库)
make install
PS:可能遇到的问题
问题:
[root@localhost ~]# ./i2cdetect ./i2cdetect: error while loading shared libraries: libi2c.so.0: cannot open shared object file: No such file or directory
排查:
提升缺少libi2c.so.0动态库,最简单的一个办法就是编译的时候采用静态编译。
解决:
编译时添加参数,使用静态库编译
make USE_STATIC_LIB=1
i2c-tools软件包包含用于Linux的一组不同的I2C工具:
- i2cdetect – 用來列举I2C bus和上面所有的i2c设备
- i2cdump – 显示i2c设备所有register的值
- i2cget – 读取i2c设备上某个register的值
- i2cset – 写入i2c设备上某个register
这些工具曾经是lm-sensors程序包的一部分,但后来被拆分为一个单独的程序包。 此举的基本原理是,并非所有的硬件监视芯片都是I2C设备,也不是所有的I2C设备都是硬件监视芯片,因此将所有内容都封装在一个封装中是令人困惑和不切实际的。
i2c-tools的当前主要版本为版本4,只要内核中包含I2C支持,就支持所有版本的Linux。
./i2cdetect -l
./i2cdetect -r -y 1
注:(检测i2c-1上的挂载情况)
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- 38 -- -- -- -- -- -- --
40: -- -- -- -- 44 -- -- -- 48 -- -- -- -- -- -- --
50: 50 -- -- -- UU -- -- -- -- -- -- -- -- 5d -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- -- -
由上图可知,0x18,0x20,0x30,0x34,0x64地址有挂载。而这几个分别是0x18(tlv3104),
0x20(adv7401),0x30, 0x34(sii9135),0x64(这个不知道是谁,可能是系统的)
i2cdump -f -y 0 0x70
i2cset -f -y 0 0x70 0x0 0x1
说明:
(设置i2c-1上0x20器件的0x77寄存器值为0x3f)
i2cget -f -y 0 0x70 0x0
说明:
(读取i2c-1上0x20器件的0x77寄存器值)
实例:
I2C总线号为0, I2C设备地址为0x20
寄存器 Reg[0x06,0x07] 配置为 Val[0xC0,0x01]:
i2cset -f -y 0 0x20 0x6 0xC0
i2cset -f -y 0 0x20 0x7 0x01
寄存器 Reg[0x02,0x03] 配置为 Val[0x01,0x10];
i2cset -f -y 0 0x20 0x2 0x01
i2cset -f -y 0 0x20 0x3 0x10
参考: