I2Ctool工具:i2cset、i2cdetect和i2cdump的使用指南
获取iic-tools
sudo apt install i2c-tools
i2cset
设置I2C寄存器。
概要
i2cset [-f] [-y] [-m mask] [-r] [-a] i2cbus chip-address data-address [value] … [mode]
i2cset -V
描述
i2cset 是一个通过I2C总线可视化的设置寄存器的程序。
选项
选项 | 描述 |
---|---|
-V | 显示版本和退出 |
-f | 强制访问设备,即使设备已忙于运行。默认情况下,i2cset 将拒绝访问已在内核驱动程序控制下的设备。使用此标志是危险的,它可能会严重混淆有问题的内核驱动程序。它还可能导致 i2cset 以静默方式写入错误的寄存器。因此,使用风险自负,并且只有在您知道自己在做什么的情况下。 |
-y | 禁用交互模式。默认情况下,i2cset 将等待用户的确认,然后再弄乱 I2C 总线。使用此标志时,它将直接执行该操作。这主要是为了在脚本中使用 |
-m | 掩码参数(如果指定)描述哪些值位将实际写入数据地址。 掩码中设置为 1 的位取自值,而设置为 0 的位将从值读取数据地址,因此由操作保留。请注意,此参数假定指定模式的读取和写入操作对于您正在访问的设备是对称的。这可能是也可能不是这种情况,因为I2C和SMBus都不能保证这一点。 |
-r | 写入值后立即回读,并将结果与写入的值进行比较。 这曾经是默认行为。与选项 -m 的限制相同。 |
示例
在bus 1 (i2c-1)0x2d七位地址,写值0x42到一个8位寄存器0x11的I2C设备。
i2cset 1 0x2d 0x11 0x42
立即清除 I2C 器件在总线 1 (i2c-1) 上的 7 位地址0x2d的 8 位寄存器0x11的 3 个最低有效位(无需用户确认)
i2cset -y -m 0x07 1 0x2d 0x11 0x00
在bus 1 (i2c-1)写0x48的7位地址,写值0x5000到0x02寄存器I2C设备。
i2cset 1 0x48 0x02 0x5000 w
i2cdetect
检测I2C芯片
概要
i2cdetect [-y] [-a] [-q|-r] i2cbus [first last]
i2cdetect -F i2cbus
i2cdetect -V
i2cdetect -l
描述
i2cdetect是一个用户空间程序,用于扫描I2C总线上的设备。它输出一个表,其中包含指定总线上检测到的设备列表。 i2c总线表示要扫描的I2C总线的编号或名称,并且应对应于i2cdetect-l列出的总线之一。 可选参数优先和最后一个限制扫描范围(默认:从0x03到0x77)。
由于没有标准的I2C检测命令,i2cdetect使用任意SMBus命令(即SMBus快速写入和SM总线接收字节)来探测设备。默认情况下,使用的命令被认为是每个地址最安全的命令。请参阅选项 -q 和 -r 以更改此行为。
i2cdetect 还可用于查询 I2C 总线的功能(请参见选项 -F)。
警告
这个会混淆I2C总线,导致数据丢失和出错。
选项
选项 | 描述 |
---|---|
-y | 显示互动模式。默认i2cdetect 将等待用户的确认,然后再弄乱 I2C 总线。使用此标志时,它将直接执行该操作。这主要是为了在脚本中使用 |
-a | 强制没有调整器地址扫描 |
-q | 使用SMB“quick write”命令侦测。不推荐。 |
-r | 使用SMB“receive byte”命令侦测。不推荐。会锁SMBus在变化 只能写的芯片。 |
-F | 通过适配器和退出显示功能实现列表 |
-l | 输出存在的总线列表 |
例子
i2cdetect -l
i2cdetect -y 9
i2cdetect -F 1
i2cdump
检测I2C寄存器
主题
i2cdump [-f] [-r first-last] [-y] [-a] i2cbus address [mode [bank [bankreg]]]
i2cdump -V
描述
i2cdump通过i2c bus总线可视化检测寄存器的程序。
选项
选项 | 描述 |
---|---|
-V | 显示版本和退出 |
-f | 如果设备繁忙,强制访问设备。默认,i2cdump拒绝访问设备 |
-r first-last | 限制寄存器访问的范围。这个选项可用的模式是b,w,c和W. |
-y | 关闭互动模式。默认,i2cdump等待 在I2C总线在用户之前的信息。使用此标志时,它将直接执行该操作。 这主要是为了在脚本中使用 |
-a | 允许使用地址在0x00 0x02 和0x78.不推荐。 |
例子
在总线9(i2c-9)上 接受I2C设备的7位地址0x50上的所有内容。在用户配置后,使用默认的读方式。
i2cdump 9 0x50
在总线9(i2c-9)上 立即接收I2C设备的7位地址0x50上的所有内容。在用户配置后,使用默认的读方式。如果设备是EEPROM,输出典型值是之前的样例的输出。
i2cdump -y 9 0x50 -i