当前位置: 首页 > 工具软件 > http-tools > 使用案例 >

【开发工具】【i2c-tools】I2C总线调试工具(i2c-tools)的安装与使用

蒋栋
2023-12-01

获取更多相关的嵌入式开发工具,可收藏系列博文,持续更新中:
【开发工具】嵌入式常用开发工具汇总帖


i2c-tools的安装

I2C Tools源码官网

http://i2c.wiki.kernel.org/index.php/I2C_Tools

安装步骤

  • 下载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的使用

i2c-tools软件包

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检测有几组i2c总线在系统上,输入:

./i2cdetect -l
  • 用i2cdetect检测挂载在i2c总线上器件,输入:
./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查看器件所有寄存器的值
i2cdump -f -y 0 0x70
  • 用i2cset设置单个寄存器
i2cset -f -y 0 0x70 0x0 0x1 

说明:
(设置i2c-1上0x20器件的0x77寄存器值为0x3f)
  • 用i2cget获取单个寄存器值
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

参考:

i2c-tools的使用方法及举例

 类似资料: