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

指令

read

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

從 I2C 裝置讀取 1 個位元組。使用 transact 讀取多個位元組<device> 可以是完整的 devfs 節點 (例如:/dev/class/i2c/031),或僅限 devfs 節點的索引 (例如:31) 或完全由您 透過 i2cutil list 取得使用 使用 ping 可取得 devfs 節點路徑和索引。 <address> 是待讀取 <device> 的內部註冊器 使用多個 <address> 值存取多位元組 (小端) 登記地址。例如: 請i2cutil read 4 0x20 0x3D前往 0x203D 閱讀登記證。

write

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

將一或多個位元組 (<data>) 寫入 I2C 裝置。詳情請參閱 read 說明「<device>」的說明 和 <address>

交易

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

使用多個區隔進行交易。每個片段可以寫成 (w) 或讀取 (r)。

轉儲

i2cutil dump <device> <start> <count>

從地址開始讀取及列印<count>登錄的<device>資料 由「<address>」指出

list

i2cutil list

列出系統上所有可用的 I2C 裝置。裝置名稱的易記名稱 也會列出否則裝置會顯示為 (ANONYMOUS)

連線偵測 (ping)

i2cutil ping

對 devfs 路徑 /dev/class/i2c 下的所有 I2C 裝置進行連線偵測 (ping) 讀取每個裝置的 0x00 位址。

說明

i2cutil help

列印說明文字。

範例

讀取一位元組

讀取 I2C 裝置的 0x20 時,讀取暫存器的 1 個位元組 由 devfs 節點索引 4 表示:

$ i2cutil read 4 0x20

讀取三個位元組

使用 I2C 裝置的 0x20 讀取註冊資料中的三個位元組 由 devfs 節點索引 4 表示:

$ i2cutil transact 4 w 0x20 r 3

從地址 0x10 開始傾印九個暫存器

從地址 0x10 傾印九個暫存器。

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

從多位元組位址讀取一位元組

從多位元組位址 0x203D 讀取暫存器的 1 個位元組 以 devfs 節點索引 4 表示的 I2C 裝置:

$ i2cutil read 4 0x20 0x3D

使用 devfs 節點路徑讀取 1 個位元組

從多位元組位址 0x203D 讀取暫存器的 1 個位元組 每個 devfs 節點路徑代表的 I2C 裝置 /dev/class/i2c/004

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

使用裝置易記的名稱讀取 1 個位元組

從多位元組位址 0x203D 讀取暫存器的 1 個位元組 具有下列名稱:temp_sensor

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

寫入一位元組

將一個位元組 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

對所有 I2C 裝置執行連線偵測 (ping)

查看下方所有裝置的 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