列出、读取和写入 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