一.i2cdetect
i2cdetect
是一个用户空间程序,用于扫描 I2C 总线上的设备。它输出一个表格,其中包含指定总线上检测到的设备列表。以下是 i2cdetect
的使用方法:
-
运行扫描:
- 要执行 I2C 扫描,请使用以下命令:
130|rk3588_s:/ # i2cdetect -y 10 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
-y
标志禁用交互模式,允许扫描无需提示。1
指定 I2C 总线编号(根据您的设置可能需要调整)- UU 表示该地址被驱动占用
- 以十六进制表示的设备地址编号会显示为 **
- 要执行 I2C 扫描,请使用以下命令:
二.i2cdump
i2cdump 是一个用于读取 I2C 设备寄存器值的命令行工具。它可以读取指定设备地址的寄存器值,并以十六进制格式显示出来
以下是使用 i2cdump
的示例:
- 读取全部寄存器:
- 要读取地址为
0x42
的 I2C 设备的所有寄存器,可以运行以下命令:i2cdump -y 1 0x42
- 要读取地址为
三.i2cget
i2cget 是 Linux 系统中的一个命令行工具,用于从 I2C 设备中读取数据。I2C(Inter-Integrated Circuit)是一种串行通信协议,常用于连接各种外设和传感器1
以下是使用 i2cget
的示例:
-
读取特定寄存器:
-
示例:
四.i2cset
i2cset
命令用于向 I2C 设备写入数据。它允许您设置通过 I2C 总线可见的寄存器。以下是如何使用它的方法:
-
运行
i2cset
命令:- 要向 I2C 设备的特定寄存器写入数据,使用以下语法:
i2cset [-f] [-y] [-m mask] [-r] i2cbus chip-address data-address value [mode]
-f
标志强制访问设备,即使设备已经忙碌(请谨慎使用)。-y
标志关闭交互模式,对于脚本编写很有用。-m mask
(可选)指定要应用的位掩码。-r
标志允许读取寄存器的当前值。i2cbus
指定 I2C 总线编号或名称(可通过i2cdetect -l
列出)。chip-address
是总线上芯片的地址(介于 0x08 和 0x77 之间的整数)。data-address
指定要写入的芯片地址(介于 0x00 和 0xFF 之间的整数)。value
是要写入的数据值(介于 0x00 和 0xFF 之间的整数)。mode
(可选)指定写入的大小(例如,b
表示字节,w
表示字,s
表示 SMBus 块,i
表示 I2C 块)。
- 要向 I2C 设备的特定寄存器写入数据,使用以下语法:
-
示例: