i2c-tools安装与基本用法

目录

使用场景

安装i2c-tools​编辑

Debian/Ubuntu 系统

SDK

 开发板

基本用法

i2cdetect

显示当前系统中可用的 I2C 总线编号及其相关信息

检测 I2C 总线 0 上设备

i2cdump

读取设备的所有寄存器

读取指定范围的寄存器 

使用特定模式读取寄存器

i2cget

读取单个字节

读取 16 位数据 

 i2cset

 单字节写入

清除指定位 

写入后读取验证 

 使用 -f 参数时需谨慎,因为它可能会干扰内核驱动程序

i2c-tools 是一套用于 Linux 系统的 I2C 总线调试工具,广泛应用于嵌入式开发和硬件调试中。

使用场景

  • 硬件调试:在开发 I2C 设备时,i2c-tools 可以帮助检测设备连接是否正常,读取设备寄存器值以验证设备状态。

  • 驱动开发:在开发 Linux 内核驱动时,i2c-tools 可以辅助验证设备寄存器的读写操作。

安装i2c-tools

Debian/Ubuntu 系统

sudo apt install i2c-tools

SDK

打开对应工具组件

make menuconfig

点击‘/’按键,搜索

PACKAGE_i2c-tools

或者单独搜索工具

 开发板

需要下载对应源码,使用所需交叉编译工具链进行编译,将对应组件移植进入开发板

下载地址:

Index of /pub/software/utils/i2c-tools/

基本用法

i2cdetect

-y

功能:自动确认操作,避免手动输入确认信息。

使用场景:在自动化脚本中使用时,避免交互式提示。

-r

功能:使用读操作(Read)检测设备。[SMBus:receive byte]

使用场景:适用于那些只在读操作时响应的设备。这种方式通常更安全,因为它不会向设备发送任何写操作,从而避免对设备造成潜在的干扰。

-q

功能:使用写操作(Write)检测设备。[SMBus:quick write]

使用场景:适用于那些只在写操作时响应的设备。

-a

功能:强制扫描所有地址(包括保留地址)。

使用场景:用于全面扫描总线,但可能会干扰某些设备。

-D

功能:显示设备描述信息。

使用场景:用于获取设备的详细信息。

-S

功能:以十六进制形式显示地址。

使用场景:用于更直观地查看地址信息。

-F

功能:显示总线的功能支持。

使用场景:用于检查总线是否支持某些功能(如 SMBus 操作)。

SMBus(System Management Bus,系统管理总线)

eg:

显示当前系统中可用的 I2C 总线编号及其相关信息

i2cdetect -l

检测 I2C 总线 0 上设备

i2cdetect -y -r 0

i2cdump

用于读取指定 I2C 设备的寄存器内容,并以可读的格式显示

-f

强制访问设备,即使设备已被内核驱动程序占用。使用此参数时需谨慎,因为它可能会干扰内核驱动程序。

-r first-last

限制访问的寄存器范围,仅扫描从 firstlast 的寄存器区域。此选项适用于模式 bwcW

-y

禁用交互模式,直接执行操作而无需用户确认。这主要用于脚本中。

-a

允许使用保留地址范围(如 0x00-0x020x78-0x7f)。一般不建议使用。

-V

显示 i2cdump 的版本信息并退出。

I2CBUS

指定 I2C 总线的编号,对应于 i2cdetect -l 扫描的序号。

ADDRESS

指定 I2C 设备的地址,范围为 0x03-0x77,或 0x00-0x7f(如果使用 -a 选项)。

MODE

指定读取模式:

b:字节模式(默认)。

w:16位字模式。

W:16位字模式(仅偶数寄存器地址)。

s:SMBus 块模式。

i:I2C 块模式。

c:连续字节模式。

eg:

读取设备的所有寄存器

i2cdump -y 0 0x27

读取指定范围的寄存器 

i2cdump -y -r 0x00-0x10 0 0x27

使用特定模式读取寄存器

i2cdump -y 0 0x27 w

i2cget

i2cget [-f] [-y] [-a] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]

-f:强制访问设备,即使设备已被内核驱动程序占用。

-y:取消交互模式,直接执行操作而无需用户确认。

-a:允许使用所有地址范围(0x00-0x7f),默认情况下只支持 0x03-0x77。

I2CBUS:指定 I2C 总线的编号,例如 01 等。

CHIP-ADDRESS:指定 I2C 设备的地址。

DATA-ADDRESS:指定设备的寄存器地址,可选。

MODE:指定读取的数据类型,可选:

        b:字节模式(默认)。

        w:16 位字模式。

        s:SMBus 块模式。

        i:I2C 块模式。

-V:显示 i2cget 的版本信息并退出

eg:

读取单个字节

i2cget -f -y 0 0x27 0x28 

读取 16 位数据 

i2cget -y 1 0x68 0x00 w

 i2cset

i2cset [-f] [-y] [-m mask] [-r] [-a] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] [MODE]

-f:强制访问设备,即使设备已被内核驱动程序占用。

-y:关闭交互模式,直接执行操作而无需用户确认。

-m mask:掩码参数,指定哪些位将被写入。掩码中为 1 的位将从值中获取,为 0 的位将保留。

-r:写入后立即读取寄存器值,并与写入值进行比较。

-a:允许使用非常规地址(如 0x00-0x02 和 0x78-0x7f),一般不建议使用。

I2CBUS:指定 I2C 总线编号,可通过 i2cdetect -l 查看。

CHIP-ADDRESS:指定 I2C 设备的地址。

DATA-ADDRESS:指定寄存器地址。

VALUE:要写入的数据值。

MODE:指定写入模式:

        b:字节模式(默认)。

        w:16 位字模式。

        i:I2C 块模式

eg:

 单字节写入

i2cset -y 1 0x2d 0x11 0x42

清除指定位 

i2cset -y -m 0x07 1 0x2d 0x11 0x00

写入后读取验证 

i2cset -y -r 1 0x48 0x02 0x5000 w

 使用 -f 参数时需谨慎,因为它可能会干扰内核驱动程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值