i2cutil

列出、读取和写入 I2C 设备。

用法

i2cutil read <device> <address> [<address>...]
i2cutil write <device> <address> [<address>...] <data> [<data>...]
i2cutil transact <device> (r <bytes>|w <address> [<address>...] [<data>...])...
i2cutil dump <device> <address> <count>
i2cutil list
i2cutil ping
i2cutil help

命令

阅读

i2cutil read <device> <address> [<address>...]

从 I2C 设备读取一个字节。使用transact 读取多个字节。<device> 可以是 devfs 节点(例如:/dev/class/i2c/031) devfs 节点的索引(例如:31),也可以只是 通过 i2cutil list 获取的设备友好名称。使用 ping,用于获取 devfs 节点路径和索引。 <address> 是要读取的 <device> 的内部寄存器 。使用多个 <address> 值来访问多字节 (小端字节序)寄存器地址。例如 i2cutil read 4 0x20 0x3D 用于读取位于 0x203D 的寄存器。

i2cutil write <device> <address> [<address>...] <data> [<data>...]

向 I2C 设备写入一个或多个字节 (<data>)。请参阅 <device>的解释说明read<address>

交易

i2cutil transact <device> (r <bytes>|w <address> [<address>...] [<data>...])...

执行涉及多个细分的事务。每个线段都可以是一个写入 (w) 或读取 (r)。

dump

i2cutil dump <device> <start> <count>

<device> 读取并输出 <count> 寄存器,从地址开始算起。 用 <address> 表示

list

i2cutil list

列出系统上的所有可用 I2C 设备。易记的设备名称将 也会列出(如果有提供的话)否则,该设备将显示为 (ANONYMOUS)

ping

i2cutil ping

Ping devfs 路径 /dev/class/i2c 下的所有 I2C 设备,方法是 从每台设备的 0x00 地址读取数据。

帮助

i2cutil help

打印帮助文本。

示例

读取一个字节

从 I2C 设备 0x20 的寄存器中读取一个字节 以 devfs 节点索引 4 表示:

$ i2cutil read 4 0x20

读取三个字节

从 I2C 设备 0x20 的寄存器中读取三个字节 以 devfs 节点索引 4 表示:

$ i2cutil transact 4 w 0x20 r 3

转储从地址 0x10 开始的 9 个寄存器

转储从地址 0x10 开始的 9 个寄存器。

$ i2cutil dump pmic 0x10 9
0x10: 0x00
0x11: 0x00
0x12: 0x00
0x13: 0x00
0x14: 0x00
0x15: 0x00
0x16: 0x00
0x17: 0x00
0x18: 0x00

从多字节地址中读取一个字节

从位于多字节地址 0x203D 的寄存器中读取一个字节 以 devfs 节点索引 4 表示的 I2C 设备:

$ i2cutil read 4 0x20 0x3D

使用 devfs 节点路径读取 1 个字节

从位于多字节地址 0x203D 的寄存器中读取一个字节 以 devfs 节点路径表示的 I2C 设备 /dev/class/i2c/004

$ i2cutil read /dev/class/i2c/004 0x20 0x3D

使用设备的易记名称读取 1 个字节

从位于多字节地址 0x203D 的寄存器中读取一个字节 (名为 temp_sensor)的 I2C 设备的名称:

$ i2cutil list
378: temp_sensor
379: (ANONYMOUS)
380: humidity_sensor
381: pmic
$ i2cutil read temp_sensor 0x20 0x3D

写入 1 个字节

将一个字节 0x12 写入由以下参数表示的 I2C 设备的 0x2C 寄存器: devfs 节点索引 3

$ i2cutil write 3 0x2C 0x12

使用 devfs 节点路径写入两个字节

将两个字节 0x121B 写入位于 0x2C 的寄存器中 以 devfs 节点索引 /dev/class/i2c/003 表示的 I2C 设备:

$ i2cutil write /dev/class/i2c/003 0x2C 0x12 0x1B

Ping 所有 I2C 设备

读取可以在以下位置找到的所有设备的0x00地址: /dev/class/i2c

$ i2cutil ping
/dev/class/i2c/821: OK
/dev/class/i2c/822: OK
/dev/class/i2c/823: OK
/dev/class/i2c/824: OK
Error ZX_ERR_TIMED_OUT
/dev/class/i2c/825: ERROR

列出所有 I2C 设备

列出系统上的所有 I2C 设备及其易记名称(如果有)。

$ i2cutil list
378: temp_sensor
379: (ANONYMOUS)
380: humidity_sensor
381: pmic

备注

源代码

i2cutil 的源代码://src/devices/i2c/bin/i2cutil.cc