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写入字节/读取字节),情况尤其如此。 使用这个程序要非常小心。

### 回答1: 要使用海思i2c工具来读写imx334 id,我们可以按照以下步骤进行操作: 1. 连接硬件:将imx334摄像头模块与处理器的i2c总线相连。确保电源供应正常并且连接正确。 2. 安装海思i2c工具:在处理器上安装海思i2c工具软件包,包括i2cdetecti2cget。这些工具将帮助我们进行i2c设备的探测和读写操作。 3. 找到imx334摄像头的i2c地址:使用i2cdetect工具来扫描i2c总线,并查找imx334摄像头的i2c地址。运行i2cdetect -y -r 0命令,其中“0”是i2c总线编号,根据具体配置进行调整。命令的输出将显示i2c总线上找到的设备地址。找到imx334摄像头的i2c地址后,我们可以使用这个地址进行后续的读写操作。 4. 读取imx334 id:使用i2cget工具,运行i2cget -y -r 0 i2c_address register_address命令来读取imx334摄像头的id。其中,“i2c_address”是我们在前一步中找到的imx334摄像头的i2c地址,“register_address”是imx334摄像头的注册地址。运行命令后,将会打印出imx334的id。 5. 写入imx334 id:使用i2cset工具,运行i2cset -y -r 0 i2c_address register_address value命令来写入imx334摄像头的id。其中,“i2c_address”是我们在前一步中找到的imx334摄像头的i2c地址,“register_address”是imx334摄像头的注册地址,“value”是需要写入的id值。运行命令后,将会将id写入imx334摄像头。 通过以上的步骤,我们可以使用海思i2c工具来读写imx334摄像头的id信息。 ### 回答2: 要使用海思 i2c tools读写imx334 id,需要执行以下步骤: 1. 确保你的系统上已经安装了海思的i2c tools软件包。你可以通过在终端中运行以下命令来检查是否安装了这个软件包: ``` i2cdetect -l ``` 如果运行结果中显示有海思的i2c设备列表,则说明软件包已经正确安装。 2. 确定imx334相机模组的i2c地址。使用以下命令可以扫描系统上连接的i2c设备,并显示每个设备的地址: ``` i2cdetect -y <i2c-bus号> ``` 在运行命令时,将<i2c-bus号>替换为相机模组所连接的i2c总线号。例如,如果相机连接到i2c-1总线上,则命令应为: ``` i2cdetect -y 1 ``` 运行命令后,你将看到一个i2c设备网格,显示了每个设备的地址。寻找imx334模组对应的地址。 3. 读取imx334的id。使用以下命令可以读取imx334模组的id: ``` i2cget -y <i2c-bus号> <i2c地址> <寄存器地址> [w] ``` 在运行命令时,将<i2c-bus号>替换为相机模组所连接的i2c总线号,<i2c地址>替换为imx334模组的i2c地址,<寄存器地址>替换为id寄存器的地址。如果id是16位的,可以在命令的末尾添加[w]选项以读取完整的16位id值。 例如,如果imx334模组的i2c地址为0x30,id寄存器地址为0x00,则命令应为: ``` i2cget -y 1 0x30 0x00 w ``` 运行命令后,将显示imx334模组的id值。 通过执行上述步骤,你可以使用海思i2c tools读取imx334模组的id。注意,确保在操作i2c设备时具备足够的权限,并正确连接imx334模组到i2c总线上。 ### 回答3: IMX334是一种高性能的CMOS图像传感器,常用于工业相机和监控设备中。要使用海思(HiSilicon)公司的I2C工具来读写IMX334的ID,可以按照以下步骤进行。 首先,需要将IMX334连接到主控制器上,通常会使用一些引脚将两者连接起来。确保连接正确并且稳定。 接下来,使用I2C工具在主控制器上打开I2C总线。I2C总线是一种串行通信协议,用于在电子设备之间传输数据。通过I2C总线,主控制器可以与IMX334进行通信。 在I2C工具中,您需要设置正确的I2C地址。每个I2C设备都有一个独特的地址,用于在总线上进行识别。查阅IMX334的数据手册,找到正确的I2C地址并设置到工具中。 一旦I2C地址设置完毕,您可以使用I2C工具发送读取指令来读取IMX334的ID。指令的格式和具体内容会根据I2C工具的不同而有所差异。根据IMX334的数据手册,找到对应的读取ID的指令,并将其发送到IMX334。 IMX334会响应读取指令,并返回其ID。您可以通过I2C工具接收并显示ID。 要写入IMX334的ID,可以使用相似的步骤。首先设置I2C地址到I2C工具中,然后发送写入指令和具体的ID值。 请注意,上述步骤只是一个大致的指导,具体的步骤可能因为使用的工具和设备而有所差异。对于准确的操作指导,请参考IMX334和所使用I2C工具的详细文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值