i2c_tools

简介

i2c-toos 工具集有 i2cdetect、i2cdump、i2cget、i2cset、i2c-stub-from-dump、i2ctransfer

i2cdump、i2cget、i2cset,默认设置读取8位的寄存器地址

i2ctransfer ,可以对i2c设备指定定长度进行读写操作,比如寄存器地址是16位

使用 i2ctransfer 读写 imx477寄存器

前提

  • 启动 imx477 摄像头

  • imx477 挂在 i2c-30 总线上,地址为 0x10,寄存器地址为 16 位

检测 imx477 是否存在

NOTE : 当驱动里占用此设备时,地址显示为UU,否则显示具体值地址,比如0x10

  • 执行如下命令:

$ sudo i2cdetect -y -r 30
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: UU -- -- -- -- -- -- --
  • 解析:

参数

说明

30

表示 i2c-30 总线

读取 imx477 寄存器

  • 执行如下命令:

$ sudo i2ctransfer -f -y 30 w2@0x10 0x03 0x4D r1
0xb4
  • 解析:

参数

说明

30

表示 i2c-30 总线

w2

表示写两个字节

0x10

表示 i2c设备地址

0x03 0x4D

表示 imx477寄存器地址 0x034D

r1

表示读取一个字节

写入 imx477 寄存器

  • 执行如下命令:

$ sudo i2ctransfer -f -y 30 w3@0x10 0x03 0x4D 0xb0
$ sudo i2ctransfer -f -y 30 w2@0x10 0x03 0x4D r1
0xb0
  • 解析:

参数

说明

30

表示 i2c-30 总线

w3

表示写三个字节

0x10

表示 i2c设备地址

0x03 0x4D 0xb0

表示 向imx477寄存器地址 0x034D处,写入0xb0数据

Last updated

Was this helpful?