列出、读取和写入 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>...]
将一个或多个字节 (<data>
) 写入 I2C 设备。请参阅 read
说明,了解 <device>
和 <address>
的说明。
交易
i2cutil transact <device> (r <bytes>|w <address> [<address>...] [<data>...])...
执行包含多个细分的交易。每个段可以是写入 (w
) 或读取 (r
)。
dump
i2cutil dump <device> <start> <count>
从 <device>
中从 <address>
表示的地址开始读取并输出 <count>
寄存器
list
i2cutil list
列出系统中可用的所有 I2C 设备。还会显示设备的易记名称(如果提供)。否则,设备将显示为 (ANONYMOUS)
。
ping
i2cutil ping
通过读取每个设备的 0x00
地址,Ping devfs 路径 /dev/class/i2c
下的所有 I2C 设备。
帮助
i2cutil help
输出帮助文本。
示例
读取一个字节
从 I2C 设备的 0x20
处的寄存器(由 devfs 节点索引 4
表示)中读取一个字节:
$ i2cutil read 4 0x20
读取三个字节
从 I2C 设备(由 devfs 节点索引 4
表示)的 0x20
处的寄存器读取三个字节:
$ 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
从多字节地址中读取一个字节
从 I2C 设备的多字节地址 0x203D
处的寄存器(由 devfs 节点索引 4
表示)中读取一个字节:
$ i2cutil read 4 0x20 0x3D
使用 devfs 节点路径读取一个字节
从 I2C 设备的多字节地址 0x203D
处的寄存器(由 devfs 节点路径 /dev/class/i2c/004
表示)中读取一个字节:
$ i2cutil read /dev/class/i2c/004 0x20 0x3D
使用设备的易记名称读取一个字节
从名为 temp_sensor
的 I2C 设备的多字节地址 0x203D
处的寄存器中读取一个字节:
$ i2cutil list
378: temp_sensor
379: (ANONYMOUS)
380: humidity_sensor
381: pmic
$ i2cutil read temp_sensor 0x20 0x3D
写入一个字节
将一个字节 0x12
写入到 I2C 设备(由 devfs 节点索引 3
表示)的 0x2C
处的寄存器:
$ i2cutil write 3 0x2C 0x12
使用 devfs 节点路径写入两个字节
将两个字节 0x121B
写入 I2C 设备(由 devfs 节点索引 /dev/class/i2c/003
表示)的 0x2C
处的寄存器:
$ i2cutil write /dev/class/i2c/003 0x2C 0x12 0x1B
Ping 所有 I2C 设备
读取 /dev/class/i2c
下所有设备的 0x00
地址。
$ 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