嵌入式Linux下 i2c-tool工具的使用方法 包括i2cdetect、i2cget、i2cset、i2cdump、i2ctransfer

要想用Linux i2c-tools必须安装如下套件,安装后就可以使用i2cdetect、i2cdump、i2cset、i2cget、i2ctransfer了。

sudo apt install i2c-tools -y

i2cdetect命令

该命令用于扫描I2C总线上的设备。

语法:

i2cdetect [-y] [-a] [-q|-r] i2cbus [first last]:

参数说明:

参数y:关闭交互模式,使用该参数时,不会提示警告信息。

参数a:扫描总线上的所有设备。

参数q:使用SMBus的“quick write”命令进行检测,不建议使用该参数。

参数r:使用SMBus的“receive byte”命令进行检测,不建议使用该参数。

参数i2cbus:指定i2c总线的编号

参数first、last:扫描的地址范围

返回值说明:

‘–’:表示该地址被检测,但没有芯片应答;

‘UU’:表示该地址当前由内核驱动程序使用。

‘**’:**表示以十六进制表示的设备地址编号,如 “18”

实例
嵌入式Linux下 i2c-tool工具的使用方法 包括i2cdetect、i2cget、i2cset、i2cdump、i2ctransfer_第1张图片
i2cdetect的其他命令
i2cdetect -V:打印软件的版本
在这里插入图片描述

i2cdetect -l:检测当前系统有几组i2c总线
在这里插入图片描述

i2cget命令

i2cget:读某个寄存器的值,寄存器地址只能是8-bit。

语法:

i2cget [-f] [-y] i2cbus chip-address [data-address [mode]]

参数说明:

参数f:强制访问设备。

参数y:关闭交互模式,使用该参数时,不会提示警告信息。

参数i2cbus:指定i2c总线的编号

参数chip-address:i2c设备地址

参数data-address:设备的寄存器的地址

参数mode:指定读取的大小, 可以是b, w, s或i,分别对应了字节,字,SMBus块, I2C块。

实例
在这里插入图片描述
其中: 1是总线号,0x1a是设备地址,0x0是寄存器地址。

i2cset命令

i2cset:写某个寄存器的值,寄存器地址只能是8-bit。

语法:

i2cset [-f] [-y] [-m mask] [-r] i2cbus chip-address data-address [value] … [mode]

参数说明:

参数f:强制访问设备。

参数y:关闭交互模式,使用该参数时,不会提示警告信息。

参数m:

参数r:写入后立即回读寄存器值,并将结果与写入的值进行比较。

参数i2cbus:指定i2c总线的编号

参数chip-address:i2c设备地址

参数data-address:设备的寄存器的地址

参数value:要写入寄存器的值

参数mode:指定读取的大小, 可以是b, w, s或i,分别对应了字节,字,SMBus块, I2C块

i2cdump命令

i2cdump:读取指定设备的全部寄存器的值。

语法:

i2cdump [-f] [-r first-last] [-y] i2cbus chip-address [mode [bank [bankreg]]]

参数说明:

参数r:指定寄存器范围,只扫描从first到last区域;

参数f:强制访问设备。

参数y:关闭人机交互模式;

参数i2cbus:指定i2c总线的编号

参数address:指定设备的地址

参数mode:指定读取的大小, 可以是b, w, s或i,分别对应了字节,字,SMBus块, I2C块

实例
嵌入式Linux下 i2c-tool工具的使用方法 包括i2cdetect、i2cget、i2cset、i2cdump、i2ctransfer_第2张图片
其中:1是总线号,0x1a是设备地址。

i2ctransfer命令

i2ctransfer:可以读写多字节寄存器地址。i2ctransfer可以替代i2cset和i2cget。(i2ctransfer becomes available starting with I2C tools revision v4.0 included into OpenEmbedded Thud (2.6.x))

语法
i2ctransfer [-f] [-y] [-v] [-a] i2cbus w-n@chip-address data-0 data-1 ... data-n r-num
i2ctransfer [-f] [-y] [-v] [-a] i2cbus w-n@chip-address data-0 data-1 ... data-n    

参数说明:

参数f:强制访问设备。
参数y:关闭人机交互模式;
参数v:
参数a:允许用0x00-0x07和0x78-0x7f地址
参数i2cbus:指定i2c总线的编号
参数w-n:写n个字节
参数chip-address:器件地址
参数data-0 data-1 ... data-n:寄存器地址(读) / 寄存器地址和写的数据(写)
参数r-num:读num个字节

实例
i2ctransfer -y -f 1 w4@0x1a 0x0 0x0 0xfe 0xf2
在这里插入图片描述

在这里插入图片描述
其中:1是总线号,0x1a是设备地址,0x0 0x0是16-bit寄存器地址,0xfe和0xf2是写入的数据。也就是把0xfe和0xf2写入到0x1a芯片的0x0 0x0寄存器中。w4表示要写4个字节,即寄存器地址0x0 0x0和数据0xfe 0xf2。

i2ctransfer -y -f 1 w2@0x1a 0x0 0xf r16
在这里插入图片描述
在这里插入图片描述
其中:1是总线号,0x1a是设备地址,0x0 0xf是16-bit寄存器地址,r16是读16个字节。也就是从0x0 0xf寄存器开始,向后读16个字节。w2表示要写2个字节,即寄存器地址0x0 0xf。

你可能感兴趣的:(软件设计,linux,运维,服务器)