返回顶部
首页 > 资讯 > 移动开发 >Android i2cdetect i2cdump i2cget i2cset调试工具使用
  • 940
分享到

Android i2cdetect i2cdump i2cget i2cset调试工具使用

androidi2Ci2cset 2023-09-13 10:09:30 940人浏览 薄情痞子
摘要

本文介绍Android/linux (反正是ARM) 的I2C调试工具用法 , 包括i2cdetect、i2cdump、i2cget和i2cset,可实现I2C设备的识别、监控和配置。i2cdet

本文介绍Android/linux (反正是ARM) 的I2C调试工具用法 , 包括i2cdetect、i2cdump、i2cget和i2cset,可实现I2C设备的识别、监控和配置。i2cdetect用于扫描所有设备地址,i2cdump读取寄存器的值,而i2cget和i2cset分别实现读取和写入寄存器的功能。这些工具提供了便捷的方式与I2C设备进行交互,深入了解设备状态与配置。

1. i2c工具和命令

1.1 i2c工具概述

I2C(Inter-Integrated Circuit)是一种串行总线协议,用于连接多个低速设备,如传感器,EEPROM,LCD等。I2C总线由两根信号线组成:SCL(时钟线)和SDA(数据线)。I2C总线上有一个主设备(master)和多个从设备(slave),主设备负责产生时钟信号和控制数据传输,从设备负责响应主设备的命令和发送或接收数据。

I2C工具是一组Linux命令行工具,用于操作I2C总线上的设备。I2C工具包括以下四个工具:

  • i2cdetect:用于扫描I2C总线上的所有设备,并显示它们的地址。
  • i2cdump:用于读取I2C设备的所有寄存器,并显示它们的值。
  • i2cget:用于读取I2C设备的某个寄存器,并显示它的值。
  • i2cset:用于向I2C设备的某个寄存器写入一个值。

1.2 i2c命令和参数

i2c命令的通用格式如下:

i2c [-options] BUS CHIP [ADDRESS] [VALUE] [MODE]

其中:

  • 表示要使用的I2C工具,如detect, dump, get, set等。
  • [-options]表示可选的参数,不同的工具有不同的参数,具体可以使用--help选项查看。
  • BUS表示要操作的I2C总线编号,如0, 1, 2等。
  • CHIP表示要操作的I2C设备地址,如0x20, 0x3c等。
  • [ADDRESS]表示要操作的I2C设备寄存器地址,如0x00, 0x01等。这个参数只在i2cget和i2cset工具中使用。
  • [VALUE]表示要写入的值,如0x00, 0xff等。这个参数只在i2cset工具中使用。
  • [MODE]表示要使用的数据模式,如b(字节),w(16位字),i(I2C块)。这个参数只在i2cset工具中使用。

2. i2cdetect工具的使用

2.1 i2cdetect工具介绍

i2cdetect工具是用于扫描I2C总线上的所有设备,并显示它们的地址。这个工具可以帮助我们确定哪些设备已经连接到了I2C总线上,以及它们各自的地址是多少。

2.2 i2cdetect命令和参数

i2cdetect命令的格式如下:

i2cdetect [-ary] BUS [FIRST LAST]

其中:

  • [-ary]表示可选的参数,具体含义如下:
    • -a表示扫描所有地址(0x00-0x7f),而不是默认的范围(0x03-0x77)。
    • -r表示使用SMBus Read Byte命令进行探测,而不是默认的Write Byte命令。这个选项可以避免一些设备的写保护问题,但是也可能导致一些设备的错误操作。
    • -y表示在执行探测之前不进行确认提示,这个选项适合脚本使用。
  • BUS表示要扫描的I2C总线编号,如0, 1, 2等。
  • [FIRST LAST]表示要扫描的地址范围,如0x20 0x30。这个参数是可选的,如果不指定,则默认扫描所有地址或者由-a选项指定的范围。

2.3 i2cdetect使用示例

假设我们有一个Android设备,它有两个I2C总线,分别编号为0和1。我们想要知道这两个总线上都连接了哪些设备,以及它们的地址是多少。我们可以使用以下命令:

130|rk3568_r:/data # i2cdetect -l i2c-1   i2c             rk3x-i2c    I2C Adapteri2c-6   i2c             DesignWare HDMI                         I2C Adapteri2c-0   i2c             rk3x-i2c    I2C Adapteri2c-5   i2c             rk3x-i2c    I2C Adapter# 因为我只打开了0,1,5 i2c

输出结果可能类似于以下内容:

rk3568_r:/data # i2cdetect -y 0     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f00:          -- -- -- -- -- -- -- -- -- -- -- -- --10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --70: -- -- -- -- -- -- -- --rk3568_r:/data # i2cdetect -y 1     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f00:          -- -- -- -- -- -- -- -- -- -- -- -- --10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --70: -- -- -- -- -- -- -- --

从输出结果中,我们可以看到:

  • 在I2C总线0上,有很多设备连接了,它们的地址分别是:0x20,0x40。其中,0x20地址后面有UU标记,表示这些地址已经被内核驱动占用了,不能直接访问。
  • 在I2C总线1上,没有任何设备连接了,所有的地址都显示为–。

3. i2cdump工具的使用

3.1 i2cdump工具介绍

i2cdump工具是用于读取I2C设备的所有寄存器,并显示它们的值。这个工具可以帮助我们了解I2C设备的内部状态和配置,以及检查是否有错误或异常发生。

3.2 i2cdump命令和参数

i2cdump命令的格式如下:

i2cdump [-fy] BUS CHIP

其中:

  • [-fy]表示可选的参数,具体含义如下:
    • -f表示强制访问忙碌的设备,即使它们已经被内核驱动占用了。这个选项可能会导致一些设备的错误操作,所以要谨慎使用。
    • -y表示在执行读取之前不进行确认提示,这个选项适合脚本使用。
  • BUS表示要读取的I2C总线编号,如0, 1, 2等。
  • CHIP表示要读取的I2C设备地址,如0x20, 0x3c等。

3.3 i2cdump使用示例

假设我们有一个Android设备,它有一个I2C总线0,上面连接了一个地址为0x20的I/O扩展器(PCA9555)。我们想要读取这个设备的所有寄存器,并显示它们的值。我们可以使用以下命令:

rk3568_r:/data # i2cdump -fy 0 0x20

输出结果可能类似于以下内容:

rk3568_r:/data # i2cdump -fy 0 0x20     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef00: 04 00 09 04 08 17 05 00 00 00 01 01 00 01 80 00    ?.?????...??.??.10: 00 00 03 00 00 00 00 06 c8 00 00 00 00 00 00 00    ..?....??.......20: 00 00 00 ff ff 00 00 70 00 66 00 00 00 00 00 0f    ...??..p.f.....?30: 04 00 00 00 a5 00 00 00 01 ff ff 00 00 e0 0f 09    ?...?...???..???40: 69 4c 0c 58 2d 0c 95 01 00 00 00 17 00 00 17 00    iL?X-???...?..?.50: 8c 00 01 00 01 b0 44 10 00 60 00 00 00 00 00 00    ?.?.??D?.`......60: 00 00 00 00 00 00 00 00 00 00 00 00 54 01 59 00    ............T?Y.70: 00 00 00 00 ff ff ff f1 00 05 ff fc 00 00 00 00    ....????.???....80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................90: 60 81 59 80 04 df d2 81 59 00 00 00 00 00 00 00    `?Y?????Y.......a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................b0: 00 0f 0f 0f 0f 04 a4 ff ff 00 64 20 20 64 1a 20    .????????.d  d?c0: 64 00 00 64 1a 00 6b ff ff ff ff ff 0c 00 0c 0c    d..d?.k??????.??d0: 0c 0c 6c 00 6c 6c 6c 6c 30 30 30 30 30 00 09 31    ??l.llll00000.?1e0: 00 00 00 55 a2 c8 c5 40 00 ff 22 03 0a 80 94 0e    ...U???@.?"?????f0: c2 ac a0 40 18 40 00 86 00 fc 00 ff 00 ff 60 00    ???@?@.?.?.?.?`.

从输出结果中,我们可以看到:

  • 这个设备有16个寄存器,分别是:Input Port 0 (0x00), Input Port 1 (0x01), Output Port 0 (0x02), Output Port 1 (0x03), Polarity Inversion Port 0 (0x04), Polarity Inversion Port 1 (0x05), Configuration Port 0 (0x06), Configuration Port 1 (0x07), and Bank Select (0x10-0x17).
  • 所有的寄存器都显示为ff,表示所有的位都是1。这意味着这个设备没有被配置或者控制过,所有的端口都是输入模式,并且没有反向极性。如果我们想要改变这个设备的状态或者功能,我们需要使用i2cset工具向相应的寄存器写入不同的值。

4. i2cget工具的使用

4.1 i2cget工具介绍

i2cget工具是用于读取I2C设备的某个寄存器,并显示它的值。这个工具可以帮助我们了解I2C设备的某个特定状态或配置,以及检查是否有错误或异常发生。

4.2 i2cget命令和参数

i2cget命令的格式如下:

i2cget [-fy] BUS CHIP ADDR

其中:

  • [-fy]表示可选的参数,具体含义如下:
    • -f表示强制访问忙碌的设备,即使它们已经被内核驱动占用了。这个选项可能会导致一些设备的错误操作,所以要谨慎使用。
    • -y表示在执行读取之前不进行确认提示,这个选项适合脚本使用。
  • BUS表示要读取的I2C总线编号,如0, 1, 2等。
  • CHIP表示要读取的I2C设备地址,如0x20, 0x3c等。
  • ADDR表示要读取的I2C设备寄存器地址,如0x00, 0x01等。

4.3 i2cget使用示例

假设我们有一个Android设备,它有一个I2C总线0,上面连接了一个地址为0x20的I/O扩展器。我们想要读取这个设备的Output Port 0寄存器(0x02),并显示它的值。我们可以使用以下命令:

i2cget -fy 0 0x20 0x02 #一定要f , 不然会提示i2cget: ioctl 703: Device or resource busy

输出结果可能类似于以下内容:

1|rk3568_r:/data # i2cget -fy 0 0x20 0x020x09

从输出结果中,我们可以看到:

  • 这个设备的Output Port 0寄存器(0x02)的值是0xff,表示所有的位都是1。这意味着这个端口上所有的引脚都输出高电平。如果我们想要改变这个端口上某些引脚的输出状态,我们需要使用i2cset工具向这个寄存器写入不同的值。

5. i2cset工具的使用

5.1 i2cset工具介绍

i2cset工具是用于向I2C设备的某个寄存器写入一个值。这个工具可以帮助我们改变I2C设备的某个特定状态或配置,以及控制它的功能或行为。

5.2 i2cset命令和参数

i2cset命令的格式如下:

i2cset [-fy] BUS CHIP ADDR VALUE [MODE]

其中:

  • [-fy]表示可选的参数,具体含义如下:
    • -f表示强制访问忙碌的设备,即使它们已经被内核驱动占用了。这个选项可能会导致一些设备的错误操作,所以要谨慎使用。
    • -y表示在执行写入之前不进行确认提示,这个选项适合脚本使用。
  • BUS表示要写入的I2C总线编号,如0, 1, 2等。
  • CHIP表示要写入的I2C设备地址,如0x20, 0x3c等。
  • ADDR表示要写入的I2C设备寄存器地址,如0x00, 0x01等。
  • VALUE表示要写入的值,如0x00, 0xff等。
  • [MODE]表示要使用的数据模式,如b(字节),w(16位字),i(I2C块)。这个参数是可选的,如果不指定,则默认使用字节模式。

5.3 i2cset使用示例

假设我们有一个Android设备,它有一个I2C总线0,上面连接了一个地址为0x20的I/O扩展器。我们想要向这个设备的Output Port 0寄存器(0x02)写入一个值0xaa,并显示它的值。我们可以使用以下命令:

i2cset -fy 0 0x20 0x02 0xaa bi2cget -fy 0 0x20 0x02

输出结果可能类似于以下内容:

rk3568_r:/data # i2cset -fy 0 0x20 0x02 0xaa brk3568_r:/data # i2cget -fy 0 0x20 0x020xaark3568_r:/data #

从输出结果中,我们可以看到:

  • 我们成功地向这个设备的Output Port 0寄存器(0x02)写入了一个值0xaa。
  • 这个寄存器的值是0xaa,表示其中奇数位都是1,偶数位都是0。这意味着这个端口上奇数引脚都输出高电平,偶数引脚都输出低电平。如果我们想要改变这个端口上某些引脚的输出状态,我们可以使用i2cset工具向这个寄存器写入不同的值。

来源地址:https://blog.csdn.net/SHH_1064994894/article/details/131855010

--结束END--

本文标题: Android i2cdetect i2cdump i2cget i2cset调试工具使用

本文链接: https://lsjlt.com/news/405707.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android i2cdetect i2cdump i2cget i2cset调试工具使用
    本文介绍Android/Linux (反正是ARM) 的I2C调试工具用法 , 包括i2cdetect、i2cdump、i2cget和i2cset,可实现I2C设备的识别、监控和配置。i2cdet...
    99+
    2023-09-13
    android i2C i2cset
  • android调试工具DDMS的使用详解
    具体可见http://developer.android.com/tools/debugging/ddms.html。 DDMS为IDE和emultor、真正的android设...
    99+
    2022-06-06
    ddms Android
  • Android 开发调试工具的使用总结
     Android 调试工具,这里做一个总结整理。 DDMS --  Dalvik debug monitor service    调试监控服务 对模拟器进行相关配置。 ADB...
    99+
    2022-06-06
    调试 工具 Android
  • Android测试工具-MONKEY使用
    使用monkey测试工具前,需先安装adb命令 MAC下ADB安装 下载:https://www.androiddevtools.cn/inde...
    99+
    2022-06-06
    android测试工具 工具 Android
  • socket调试工具、socket调试软件、tcp调试工具、tcp调试软件(sokit),C#sokit工具包及其sokit使用说明
    sokit真的非常好用,可做服务端,可做客户端 sokit是一款非常简单易用的tcp、udp调试工具,主要适用于专业的网络管理使用,它可以轻松查看网内的数据情况,能够有效地接收、发送、转发TCP或UDP数据包。 一、TCP调试说明   1...
    99+
    2023-08-31
    tcp/ip 网络 服务器
  • Android 调试工具用法详细介绍
    本文主要为大家讲解多种Android调试工具的用法。        1. 查看当前堆栈   &n...
    99+
    2022-06-06
    调试 工具 Android
  • python调试工具pdb怎么使用
    这篇文章主要讲解了“python调试工具pdb怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python调试工具pdb怎么使用”吧!一、pdb 有2种用法pdb:python deb...
    99+
    2023-07-04
  • android调试工具adb命令大全
    一、adb介绍SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用。通过adb我们...
    99+
    2022-06-06
    adb命令大全 adb命令 adb Android
  • 如何使用Chrome Firefox自带调试工具调试javascript
    这篇文章主要介绍了如何使用Chrome Firefox自带调试工具调试javascript,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们...
    99+
    2024-04-02
  • 工具 | 使用 CLion 编译调试 MySQL 8.0
    MySQL 源代码是基于关系模型理论的具体实现,是数据库理论与实践的结合。 阅读 MySQL 及相关工具的源代码,不仅是数据库研发人员的日常,也是 DBA 进阶的必经之路,全方位提高技术水平。 夯实原理: 对数据库基础理论以及事务等相关...
    99+
    2017-04-27
    工具 | 使用 CLion 编译调试 MySQL 8.0
  • python调试工具Birdseye的使用教程
    目录1.快速上手2.在Pycharm中集成调试3.在VSCode中集成调试4.美中不足Birdseye是一个Python调试器,它在函数调用中记录表达式的值,并让你在函数退出后轻松查看它们,例如: 无论你如何运行或...
    99+
    2022-06-02
    python 调试工具 python Birdseye
  • 怎么使用Python的调试工具PySnooper
    本篇内容介绍了“怎么使用Python的调试工具PySnooper”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PySnooper 使用起来十...
    99+
    2023-06-16
  • Haskell在线调试工具怎么使用
    Haskell在线调试工具可以通过以下步骤使用:1. 打开一个Haskell在线调试工具的网页,比如"Haskell在线调试器"(h...
    99+
    2023-09-26
    Haskell
  • nodejs用哪些调试工具
    这篇文章将为大家详细讲解有关nodejs用哪些调试工具,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 调试node的工具:1、node-ins...
    99+
    2024-04-02
  • 【工具使用】Keil5软件使用-进阶调试篇
    一、概述     本文面向已经懂得软件基本操作的职业老手,如果是未使用过该软件的小鲜肉,请移步基础篇。这里以STM32芯片为例对工具进行讲解,其他品牌的芯片在调试方面上可能存在差异。 二、软件说明  ...
    99+
    2023-09-04
    单片机 stm32 c语言
  • 怎么使用Web调试代理工具Fiddler
    本篇内容主要讲解“怎么使用Web调试代理工具Fiddler”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Web调试代理工具Fiddler”吧!简介Fid...
    99+
    2024-04-02
  • 如何在python中使用Birdseye调试工具
    这篇文章将为大家详细讲解有关如何在python中使用Birdseye调试工具,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Birdseye是一个Python调试器,它在函数调用中记录表达式的...
    99+
    2023-06-15
  • Linux程序调试工具gdb怎么使用
    这篇文章主要介绍“Linux程序调试工具gdb怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux程序调试工具gdb怎么使用”文章能帮助大家解决问题。gdb是GNU开源组织发布的一个强大...
    99+
    2023-06-27
  • VS2022远程调试工具的使用方法
    在工作中有时候需要在服务器的环境下远程调试,例如调试微信相关服务的时候。 1. 下载远程调试工具 网址:https://visualstudio.microsoft.com/zh-h...
    99+
    2024-04-02
  • web前端使用的调试工具有哪些
    本篇内容介绍了“web前端使用的调试工具有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作