Linux i2c-tool工具基础使用

news/2024/10/15 8:55:27/

一.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/news/1431512.html

相关文章

ModuleNotFoundError: No module named ‘scripts.animatediff_mm‘ 解决方案

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 大家好,我是水滴~~ 本文主要介绍在使用 Stable Diffusion WebUI 安装 AnimateDiff 插件后出现的ModuleNotFoundError: No module named scripts.animatediff_mm异常的解决方案,希望…

【SpringBoot】Spring Boot 项目中整合 MyBatis 和 PageHelper

目录 前言 步骤 1: 添加依赖 步骤 2: 配置数据源和 MyBatis 步骤 3: 配置 PageHelper 步骤 4: 使用 PageHelper 进行分页查询 IDEA指定端口启动 总结 前言 Spring Boot 与 MyBatis 的整合是 Java 开发中常见的需求,特别是在使用分页插件如 P…

vscode自动生成项目目录结构

目录结构如下: 生成步骤如下: vscode安装插件,project-tree安装之后按ctrlshiftp,并输入Project Tree回车点击要生成目录的项目,回车将项目目录生成并存储到README.md中

Oracle中的CASE WHEN语句使用详解与实例

在Oracle数据库中,CASE WHEN语句是一种条件表达式,它允许根据一系列条件进行值的选择或计算。CASE WHEN语句在数据查询、数据转换以及业务逻辑实现等方面具有广泛的应用。本文将详细介绍Oracle中CASE WHEN语句的使用方法和一些常见示例。 一、CASE WHEN…

LT1937

这份文件是关于LT1937,一款专为驱动白色LED而设计的升压(Step-Up) DC/DC转换器的详细技术手册,由凌特公司(Linear Technology Corporation)提供。以下是该文档的核心内容概要: 产品特点: 升压转换器&…

【机器学习300问】76、早停法(Early Stopping)是如何防止过拟合的?

本文带大家介绍一个非常简单的防止过拟合的方法——早停(Early Stopping),首先给出概念,然后通过损失图像来加深对它的理解。 一、早停是什么呀? 早停(Early Stopping)是一种常用的深度学习模型…

b类地址前两位为什么是10?深入解析其奥秘

在数字世界的广袤天地中,IP地址扮演着至关重要的角色。它不仅是每台联网设备的身份标识,更是网络通信的基石。细心观察,我们会发现B类IP地址的前两位总是固定的10。那么,这背后的原因是什么呢?为何B类地址的前两位被赋…

达梦数据库的DMRMAN工具-管理备份(备份集删除)

达梦数据库的DMRMAN工具-管理备份(备份集删除) 基础信息 OS版本: Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本: DM Database Server 64 V8 DB Version: 0x7000c 03134284132-20240115-215128-200811 概述 DMRM…