I2C TOOLS

i2cdetect

常用指令

i2cdetect -l //检测有几组i2c总线在系统上
i2cdetect -r -y [num]  //检测i2c-num上的挂载情况

名字

i2cdetect -- 检测I2C芯片

语法

i2cdetect [-y] [-a] [-q|-r] i2cbus [first last]
i2cdetect -F i2cbus
i2cdetect -V
i2cdetect -l

描述

i2cdetect是一个用户程序,用于扫描设备的I2C总线。 它会输出一张表格,列出在指定总线上检测到的设备。 i2cbus指示要扫描的I2C总线的编号或名称,其应对应于i2cdetect -l列出的总线之一。 可选参数first and last限制扫描范围(默认值:从0x03到0x77)。

由于没有标准I2C检测命令,因此i2cdetect使用任意SMBus命令(即SMBus快速写入和SMBus接收字节)来检测器件。 默认情况下,使用的命令是被认为对每个地址最安全的命令。 请参阅选项-q和-r以更改此行为。

i2cdetect也可以用来查询I2C总线的功能(见选项-F)。

警告

这个程序可能会混淆你的I2C总线,导致数据丢失,甚至更糟!

输出解释

解释输出
输出表中的每个单元格将包含以下符号之一:

  • ·“ - ”。 地址被探测到,但没有芯片应答。

  • ·“UU”。 探测被跳过了,因为这个地址目前正被驱动程序使用。 这强烈表明这个地址有一个芯片。

  • ·十六进制的地址号码,例如 “2d”或“4e”。 在这个地址找到一个芯片。

选项

  • -y

    • 禁用交互模式。 默认情况下,i2cdetect在与I2C总线混淆之前会等待用户的确认。使用此标志时,它将直接执行操作。 这主要是为了在脚本中使用。
  • -a

    • 强制扫描非常规地址。 不建议。
  • -q

    • 使用SMBus“快速写入”命令进行探测。 不建议。 据了解,这会破坏许多IBM Thinkpad笔记本电脑上的Atmel AT24RF08 EEPROM。
  • -r

    • 使用SMBus“接收字节”命令进行探测。 不建议。 据了解,SMBus在各种只写芯片上(最值得注意的是地址为0x69的时钟芯片)。
  • -F

    • 显示由适配器实现的功能列表并退出。
  • -V

    • 显示版本并退出。
  • -l

    • 输出已安装总线的列表。

i2cdump

常用指令

i2cdump -f -y [bus-number] [slave-addr]  //查看i2c bus-num 上slave-addr寄存器的值

名字

i2cdump --检查I2C寄存器

语法

i2cdump [-f] [-r first-last] [-y] i2cbus address [mode [bank [bankreg]]]
i2cdump -V

描述

i2cdump是一个小型帮助程序,用于检查通过I2C总线可见的寄存器。

选项

  • -V
    • 显示版本并退出。
  • -f
    • 强制访问设备,即使它已经很忙。 默认情况下,i2cdump将拒绝访问已经在内核驱动程序控制下的设备。 使用这个标志是危险的,它会严重混淆内核驱动程序。
    • 它也可能导致i2cdump返回无效结果。 因此,只有在您知道自己在做什么的情况下,自负风险。
  • -r 首先
    • 限制正在访问的寄存器范围。 此选项仅在模式b,w,c和W中可用。对于模式W,首先必须是偶数,最后必须是奇数。
  • -y
    • 禁用交互模式。 默认情况下,i2cdump将在等待I2C总线之前等待用户的确认。
      当使用此标志时,它将直接执行操作。 这主要是为了在脚本中使用。
  • 必须为i2cdump提供至少两个选项。 i2cbus表示要扫描的I2C总线的编号或名称。这个数字应该对应于i2cdetect -l列出的总线之一。地址表示要在该总线上扫描的地址,并且是0x03到0x77之间的整数。

           模式参数(如果指定)是字母b,w,s或i中的一个,分别对应单个字节,16位字,SMBus模块和I2C模块的读取大小。 c模式有点不同,它连续读取所有字节,对于具有地址自动递增功能的芯片(如EEP​​ROM)非常有用。 W模式也是特殊的,它与w类似,只是读命令只能在偶数寄存器地址上发出;这也是主要用于EEPROM的。

           p也可以附加到模式参数(i和W除外)以启用PEC。如果省略模式参数,则i2cdump默认为没有PEC的字节访问

i2cset

常用指令

i2cset -f -y [bus-num] [slave-addr] [register] [val]  //设置i2总线num上从机addr设备的寄存器的值

名字

i2cset -- 设置i2c寄存器

语法

i2cset [-f] [-y] [-m mask] [-r] i2cbus chip-address data-address [value] ...  [mode]
i2cset -V

描述

i2cset is a small helper program to set registers visible through the I2C bus.

选项

  • -V
    • 显示版本并退出。
  • -f
    • 强制访问设备,即使它已经很忙。 默认情况下,i2cset将拒绝访问已经在内核驱动程序控制下的设备。 使用这个标志是危险的,它会严重混淆内核驱动程序。
                     它也可能导致i2cset默默地写入错误的寄存器。 因此,只有在您知道自己在做什么的情况下,自负风险。
  • -y
    • 禁用交互模式。 默认情况下,i2cset会在与I2C总线混淆之前等待用户的确认。 当使用此标志时,它将直接执行操作。 这主要是为了在脚本中使用。
  • -m mask
    • mask参数(如果指定的话)描述哪些值将被实际写入数据地址。 掩码中设为1的位取值,而设为0的位将从数据地址读取,并由操作保存。 请注意,此参数假定对于您正在访问的设备,指定模式的读取和写入操作是对称的。 这可能也可能不是这样,因为I2C和SMBus都不保证这一点。
  • -r
    • 写入后立即回读该值,并将结果与写入的值进行比较。 这曾经是默认行为。 与选项-m相同的限制也适用。
  • i2cset有三个必需的选项。 i2cbus表示要扫描的I2C总线的编号或名称。这个数字应该对应于i2cdetect -l列出的总线之一。芯片地址指定该总线上芯片的地址,并且是0x03到0x77之间的整数。数据地址指定要写入的芯片上的地址,并且是0x00到0xFF之间的整数。
  • 值参数(如果指定)是写入芯片上该位置的值。如果省略此参数,则发出短写。对于大多数芯片,它只是设置一个指向目标位置的内部指针,但实际上并不写入该位置。对于一些芯片,特别是带有单个寄存器的简单芯片,这个简短的写入就是实际的写入。如果模式参数是s或i,则可以指定多个值。
  • 模式参数(如果指定)分别是字母b,w,s或i中的一个,分别对应于单个字节的写入大小,16位字,SMBus块写入或I2C块写入。对于SMBus和I2C块写入,写入大小由值参数的数量决定。除I2C模块写入外,还可以将p添加到模式参数以启用PEC。如果省略模式参数,则i2cset默认为没有PEC的字节模式。提供的值必须在指定数据类型的范围内(字节和块写入的0x00-0xFF,字的0x0000-0xFFFF)。另一种可能的模式是c,它不写任何值(所谓的短写)。您通常不必指定此模式,因为在未提供任何值时它是默认模式,除非您还想启用PEC。

i2cget

常用指令

i2cget -f -y [bus-num] [slave-addr] [register]  //读取i2c总线num上从机addr设备寄存器的值

名字

i2cget -- 从I2C / SMBus芯片寄存器读取

语法

i2cget [-f] [-y] i2cbus chip-address [data-address [mode]]
i2cget -V

描述

i2cget is a small helper program to read registers visible through the I2C bus (or SMBus).

选项

  • -V
    • 显示版本并退出。
  • -f
    • 强制访问设备,即使它已经很忙。 默认情况下,i2cget将拒绝访问已经在内核驱动程序控制下的设备。 使用这个标志是危险的,它会严重混淆内核驱动程序。它也可能导致i2cget返回无效值。 因此,只有在您知道自己在做什么的情况下,自负风险。
  • -y
    • 禁用交互模式。 默认情况下,i2cget将在等待I2C总线之前等待用户的确认。 当使用此标志时,它将直接执行操作。 这主要是为了在脚本中使用。 谨慎使用。
  • i2cget有两个必需的选项。 i2cbus表示要扫描的I2C总线的编号或名称。 这个数字应该对应于i2cdetect -l列出的总线之一。 chip-address指定该总线上芯片的地址,并且是0x03到0x77之间的整数。
  • 数据地址指定要读取的芯片上的地址,并且是0x00到0xFF之间的整数。 如果省略,则当前有效的寄存器将被读取(如果对于所考虑的芯片有意义)。
  • 模式参数(如果指定的话)是分别对应于读取字节数据,读取字数据或写入字节/读取字节事务的字母b,w或c中的一个。 p也可以附加到模式参数以启用PEC。 如果省略模式参数,则i2cget默认为读取字节数据事务,除非数据地址也被省略,在这种情况下,默认(且仅有效)事务是单个读取字节。

警告

如果使用不当,i2cget会非常危险。 I2C和SMBus的设计方式使得SMBus读取事务可被视为某些芯片的写入事务。 如果将模式设置为cp(使用PEC写入字节/读取字节),情况尤其如此。 使用这个程序要非常小心。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值