Linux i2c-tool工具基础使用

一.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.mzph.cn/web/2145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Java Heap Space问题的排查与优化方法

引言: 在 Java 开发中,经常会遇到 “java heap space” 错误,这意味着程序需要更多的堆内存来执行所需的操作。本文将介绍如何排查和解决这个问题,并提供一些优化方法,以避免类似的错误发生。 1. 确认错误信息 当遇到…

端口被占用的解决方案汇总

端口被占用的解决方案汇总 【一】windows系统端口被占用【二】Linux系统端口被占用【三】Linux的ps命令查找(1)ps命令常用的方式有三种(2)ps -ef |grep 8080 【一】windows系统端口被占用 (1)键盘上按住Wi…

【LeetCode刷题记录】21. 合并两个有序链表

21 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 [], l2 …

# MySQL中的并发控制,读写锁,和锁的粒度

MySQL中的并发控制,读写锁,和锁的粒度 并发控制的概述 在数据库系统中,并发控制是一种用于确保当多个用户同时访问数据库时,系统能够提供数据的一致性和隔离性的机制。MySQL支持多种并发控制技术,其中包括锁机制、多…

密码学系列4-选择密文安全,同态加密安全性

本章将介绍Cramer-Shoup加密方案,并证明其安全性。最后讨论了同态加密方案的安全性证明 一、Cramer-Shoup加密 密钥生成 1.定义群 G G G,群的阶为 q q q,选取群的生成元

调试 WebSocket API 技巧分享

WebSocket 是一种在单个 TCP 连接上实现全双工通信的先进 API 技术。与传统的 HTTP 请求相比,WebSocket 提供了更低的延迟和更高的通信效率,使其成为在线游戏、实时聊天等应用的理想选择。 开始使用 Apifox 的 WebSocket 功能 首先,在项目界…

node和go的列表转树形, 执行速度测试对比

保证数据一致性,先生成4000条json数据到本地,然后分别读取文本执行处理 node代码 node是用midway框架 forNum1:number 0forNum2:number 0//执行测试async index(){// 生成菜单列表// const menuList await this.generateMenuList([], 4000);const men…

密码学系列5-BLS短签名和存在不可伪造性(EUF-CMA)

本章将给出BLS短签名方案和方案的安全性证明。这个方案是很多签名方案的基础方案,学会这一个方案,也就学会了这一系列方案的安全性证明。 注:签名方案:私钥签名,公钥验证;加密方案:公钥加密,私钥解密。 论文名:Short signatures from the Weil pairing 一、BLS短签名 …

双周总结#008 - AIGC

本周参与了公司同事对 AIGC 的分享会,分享了 AIGC 在实际项目中的实践经验,以及如何进行 AIGC 的落地。内容分几项内容: 什么是 AIGCAIGC 能做什么AIGC 工具 以年终总结为例,分享了哪些过程应用了 AIGC,以及 AIGC 落地…

FPGA ——Verilog语法示例

FPGA ——Verilog语法示例 多模块定义条件判断 多模块定义 genvar i ;generatefor (i0 ; i<8; ii1)beginxdc xdc_u(.d1 (d1 ) ,.d2 (d2 ) ,.d3 (d3 ));end endgenerate条件判断 generate beginif(DEBUG "ON")beginila ila_u(.clk(clk),.probe0({A1,A2,A3,A4}))…

QA测试开发工程师面试题满分问答19: url请求到响应整个过程,涉及到什么技术细节

概述 当你点击鼠标发起一个请求&#xff0c;直到页面显示响应数据&#xff0c;整个过程可以详细展开为以下步骤&#xff1a; 用户点击鼠标&#xff1a;用户在浏览器中点击某个链接或按钮&#xff0c;触发请求的发起。 URL 解析&#xff1a;浏览器解析点击的链接中的 URL&…

在线音乐播放网站项目测试(selenium+Junit5)

在做完在线音乐播放网站项目之后&#xff0c;需要对项目的功能、接口进行测试&#xff0c;利用测试的工具&#xff1a;selenium以及Java的单元测试工具Junit进行测试&#xff0c;下面式测试的思维导图&#xff0c;列出该项目需要测试的所有测试用例&#xff1a; 测试结果&#…

下列程序定义了NxN的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int n),该函数的功能是:使数组右上半三角元素中的值乘以m。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 下列…

数据库管理-第174期 执行计划的改变竟如此复杂(20240423)

数据库管理174期 2024-04-23 数据库管理-第174期 执行计划的改变竟如此复杂&#xff08;20240423&#xff09;1 大量等待2 性能问题排查3 为什么执行计划会改变3.1 统计信息不准确3.2 表数据量过大3.3 错误索引 4 优化建议总结 数据库管理-第174期 执行计划的改变竟如此复杂&am…

【QML】State组件

State(状态)组件是一组来自默认配置的批处理更改。所有项都有一个默认状态&#xff0c;该状态定义对象和属性值的默认配置。可以通过将State项添加到states属性来定义新的状态&#xff0c;以允许项在不同的配置之间切换。 State组件的基本用法如下&#xff1a; Window {id: …

在Linux中,按上下左右键为什么变成^[[A^[[B^[[C^[[D

在Linux中&#xff0c;当你按下键盘上的箭头键时&#xff0c;通常会发送相应的转义序列给终端。这些转义序列告诉终端程序如何解释按键的含义。例如&#xff0c;按下箭头键时&#xff0c;可能会发送类似于^[[A、^[[B、^[[C、^[[D这样的序列。 这些序列的开头^[[实际上是转义字…

终端安全加强

1. 加强密码管理 对于重要数据和系统&#xff0c;必须采用复杂的密码进行保护&#xff0c;并定期更换密码。同时&#xff0c;要加强对员工密码的管理&#xff0c;确保每个员工有一个独立的账号和密码&#xff0c;并限制其使用权限。 2. 实施访问控制 对于终端设备的访问要进…

gitea是什么,与gitlab和github对比有什么特点

Gitea是一个轻量级的DevOps平台软件&#xff0c;它支持Git托管、代码审查、团队协作、软件包注册和CI/CD等功能。与GitHub和GitLab相比&#xff0c;Gitea的一个显著特点是它提供了自托管的能力&#xff0c;这意味着用户可以完全控制自己的仓库和基础设施&#xff0c;而不需要依…

【ARM Trace32(劳特巴赫) 使用介绍 12.1 -- Trace32 读写 64位地址】

请阅读【Trace32 ARM 专栏导读】 文章目录 Trace32 读写 64位地址读 64 位地址写64位地址Trace32 读写 64位地址 在使用TRACE32进行调试时,有时需要读取或操作64位的地址,特别是在处理64位的处理器或操作系统时。以下是如何在TRACE32中读取64位地址的一般方法。 读 64 位地…

MySQL行级锁——技术深度+1

引言 本文是对MySQL行级锁的学习&#xff0c;MySQL一直停留在会用的阶段&#xff0c;需要弄清楚锁和事务的原理并DEBUG查看。 PS:本文涉及到的表结构均可从https://github.com/WeiXiao-Hyy/blog中获取&#xff0c;欢迎Star&#xff01; MySQL行级锁 行级锁&#xff08;Row-…