Linux i2c-tool工具基础使用

ops/2024/10/19 5:26:28/

一.i2cdetect

i2cdetect 是一个用户空间程序,用于扫描 I2C 总线上的设备。它输出一个表格,其中包含指定总线上检测到的设备列表。以下是 i2cdetect 的使用方法:

  1. 运行扫描

    • 要执行 I2C 扫描,请使用以下命令:
      130|rk3588_s:/ # i2cdetect -y 10  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
      00:          -- -- -- -- -- -- -- -- -- -- -- -- --
      10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      40: -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
      50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      70: -- -- -- -- -- -- -- --
      • -y 标志禁用交互模式,允许扫描无需提示。
      • 1 指定 I2C 总线编号(根据您的设置可能需要调整)
      • UU 表示该地址被驱动占用
      • 以十六进制表示的设备地址编号会显示为 **

二.i2cdump

i2cdump 是一个用于读取 I2C 设备寄存器值的命令行工具。它可以读取指定设备地址的寄存器值,并以十六进制格式显示出来

以下是使用 i2cdump 的示例:

  1. 读取全部寄存器
    • 要读取地址为 0x42 的 I2C 设备的所有寄存器,可以运行以下命令:
      i2cdump -y 1 0x42
      

 三.i2cget

i2cget 是 Linux 系统中的一个命令行工具,用于从 I2C 设备中读取数据。I2C(Inter-Integrated Circuit)是一种串行通信协议,常用于连接各种外设和传感器1

以下是使用 i2cget 的示例:

  1. 读取特定寄存器

    • 要从 I2C 设备读取特定寄存器的值,可以使用以下语法:
      i2cget [-f] [-y] i2cbus chip-address [data-address [mode]]
      
      • -f 标志强制访问设备,即使设备已经忙碌(请谨慎使用)。
      • -y 标志关闭交互模式,对于脚本编写很有用。
      • i2cbus 指定 I2C 总线编号或名称(可通过 i2cdetect -l 列出)。
      • chip-address 是总线上芯片的地址(介于 0x08 和 0x77 之间的整数)。
      • data-address 指定要从该芯片读取的地址(介于 0x00 和 0xFF 之间的整数)。如果省略,将读取当前活动的寄存器。
      • mode(可选)指定读取的大小(例如,b 表示字节,w 表示字,s 表示 SMBus 块,i 表示 I2C 块)。
  2. 示例

    • 要从总线 1 上地址为 0x2d 的 I2C 设备读取地址为 0x11 的 8 位寄存器的值:
      i2cget 1 0x2d 0x11
      
    • 要从总线 1 上地址为 0x48 的 I2C 设备读取地址为 0x00 的 16 位寄存器的值:
      i2cget 1 0x48 0x00 w
      

四.i2cset

i2cset 命令用于向 I2C 设备写入数据。它允许您设置通过 I2C 总线可见的寄存器。以下是如何使用它的方法:

  1. 运行 i2cset 命令

    • 要向 I2C 设备的特定寄存器写入数据,使用以下语法:
      i2cset [-f] [-y] [-m mask] [-r] i2cbus chip-address data-address value [mode]
      
      • -f 标志强制访问设备,即使设备已经忙碌(请谨慎使用)。
      • -y 标志关闭交互模式,对于脚本编写很有用。
      • -m mask(可选)指定要应用的位掩码。
      • -r 标志允许读取寄存器的当前值。
      • i2cbus 指定 I2C 总线编号或名称(可通过 i2cdetect -l 列出)。
      • chip-address 是总线上芯片的地址(介于 0x08 和 0x77 之间的整数)。
      • data-address 指定要写入的芯片地址(介于 0x00 和 0xFF 之间的整数)。
      • value 是要写入的数据值(介于 0x00 和 0xFF 之间的整数)。
      • mode(可选)指定写入的大小(例如,b 表示字节,w 表示字,s 表示 SMBus 块,i 表示 I2C 块)。
  2. 示例

    • 要将值 0x42 写入总线 1 上地址为 0x2d 的 I2C 设备的地址为 0x11 的寄存器:
      i2cset 1 0x2d 0x11 0x42
      
    • 要将值 0xa5 写入总线 2 上地址为 0x31 的 I2C 设备的地址为 0x0107的寄存器:
      i2cset -fy 2 0x31 0x01 0x07 0xa5 i
    • 要将值 0x1234 写入总线 1 上地址为 0x48 的 I2C 设备的地址为 0x00 的寄存器:
      i2cset 1 0x48 0x00 0x1234 w
      


http://www.ppmy.cn/ops/10433.html

相关文章

Spark 中的分桶分化

Spark 中的分桶分化 Bucketing是 Spark 和 Hive 中用于优化任务性能的一种技术。在分桶桶(集群列)中确定数据分区并防止数据混洗。根据一个或多个分桶列的值,将数据分配给预定义数量的桶。 分桶有两个主要好处: 改进的查询性能&…

ng反向代理 conf配置

log_format szxw_timed_combined $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" $request_time $upstream_response_time;#外部转发 …

简单了解 HTTP 基础知识

HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在网络上传输数据的一种协议,对于网络开发人员来说,理解这一协议是至关重要的。由于其广泛的应用,除了在网页应用传输数据之外,它还被应…

BI建设案例:FineBI大数据分析平台助力工程机械行业降本增效

工程机械行业作为国民经济的重要支柱,产品多样化、应用广泛,市场集中度高。其上游涉及原材料和核心零部件,下游则与房地产、基建工程和采矿等行业紧密相连。 如今,中国已崛起为全球工程机械制造大国,各类机械产品产量…

CSS3 animation-direction 属性

CSS3 animation-direction 属性 定义和用法 animation-direction 属性定义是否循环交替反向播放动画。 **注意:**如果动画被设置为只播放一次,该属性将不起作用。 默认值:normal继承:否可动画化:否。请参阅 可动画…

Flutter 插件站新升级: 加入优秀 GitHub 开源项目

Flutter 插件站新升级: 加入优秀 GitHub 开源项目 视频 https://youtu.be/qa49W6FaDGs https://www.bilibili.com/video/BV1L1421o7fV/ 前言 原文 https://ducafecat.com/blog/flutter-awesome-github-repo-download 这几天晚上抽空把 Flutter 插件站升级,现在支…

【北京迅为】《iTOP-3588开发板系统编程手册》-第16章 串口应用编程

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

ardupilot开发 --- 机载(边缘)计算机-VISP高阶 篇

让我再看你一眼从南到北 0. 基础1. 视觉伺服1.1 视觉伺服基础1.1.1 基本理论1.1.2 代码解析(tutorial-ibvs-4pts.cpp): 1.2 基于图像处理的视觉伺服 0. 基础 基础知识点请参考基础篇。 1. 视觉伺服 参考:Visual servoing 1.1 视觉伺服基础 参考1&am…