Linux I2C 命令

目标:已知设备树中目标I2C设备所在的I2C控制器lpi2c3: i2c@42530000 ,找到对应的I2C设备并进行读写测试操作

i2cdetect -l 查看系统上有机组I2C总线。

evk:~# i2cdetect -l
i2c-2   i2c             42530000.i2c                            I2C adapter
i2c-3   i2c             42540000.i2c                            I2C adapter
i2c-5   i2c             426c0000.i2c                            I2C adapter

可以找到设备树节点i2c@42530000 对应哪个I2C-2总线
i2cdetect -a 2 查看目录/sys/bus/i2c/devices/i2c-2总线上的设备。

evk:~# i2cdetect -a 2
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-2.
I will probe address range 0x00-0x7f.
Continue? [Y/n] Y0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: 00 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: UU UU -- UU -- -- -- -- -- -- -- -- -- -- -- UU
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- UU -- -- -- -- 7c -- -- --

理解上述log:
可见地址0x00, 0x20, 0x21, 0x23, 0x2f, 0x4c, 0x50, 0x68, 0x77, 0x7c上为总线上挂载的I2C设备的地址,以16进制表示。
‘- -’ 表示地址被检测但没有应答
‘UU’表示地址当前由内核驱动程序使用

  • i2cdetect -r -y 2i2cdetect -a 2 命令区别:
    -r:使用读取操作来探测设备。这意味着i2cdetect会尝试读取每个地址来确认设备是否存在。这种方法比默认的写操作更安全,因为它不会意外地写入数据到设备。
    -y:在探测过程中不进行交互确认。这个选项会自动回答“是”以继续探测,而不需要用户输入。
    2:指定要探测的I2C总线编号。
    -a:探测所有可能的I2C地址,包括10位地址。默认情况下,i2cdetect只探测7位地址。这个选项会扩展探测范围,包括那些可能使用10位地址的设备。
    -f:强制模式。这个选项会强制进行I2C传输,即使设备可能不支持某些操作或传输可能失败。使用这个选项时要小心,因为它可能会引起某些设备的异常行为。

【注】:i2cdetect 命令读取到的地址是读地址还是写地址?
:都不是,是7位设备地址。先得知道i2c地址怎么看,第一个字节为器件地址(设备地址),其中设备地址D7 D6 D5 D4 D3 D2 D1 D0的D7-D4 共4位为器件类型,一般是半导体公司生产时固定的。D3-D1一般为用户自定义地址,通常由外部IC的3个引脚所组合电平决定(这就是为什么同一IIC总线上同一型号的IC只能最多共挂8片同种类芯片)。
I2C设备的写地址 = I2C设备地址 << 1(最低位“0”表示写)
I2C设备的读地址 = (I2C设备地址 << 1) + 1(最低位“1”表示写)

然后看原理图,知道设备地址是多少(一般看自定义位)应当与对应总线上的设备地址的name匹配(如cat /sys/bus/i2c/devices/i2c-2/2-0023/name 得到I2c-2总线上地址位0x23的设备的名字)(前面这个方法麻烦死了,其实可以看设备树快速知道I2C子设备在总线上地址的对应关系如下)。

&lpi2c3 {clock-frequency = <400000>;pinctrl-names = "default";pinctrl-0 = <&pinctrl_###>;status = "okay";pca9670_i2c3: gpio@23 {//看到没有,这个设备树unit-address就是I2C设备地址compatible = "nxp,pca9670";reg = <0x23>; //这个好像也算gpio-controller;#gpio-cells = <2>;...};ptn5110: tcpc@50 {//看到没有,这个设备树unit-address就是I2C设备地址compatible = "nxp,ptn5110", "tcpci";reg = <0x50>;pinctrl-names = "default";pinctrl-0 = <&pinctrl_typec>;interrupt-parent = <&gpio3>;interrupts = <12 IRQ_TYPE_LEVEL_LOW>;};...
};

i2cdump命令就可以读取设备寄存器的内容了。

i2cdump -f -y 2 0x20 (在I2C总线2上读取地址为0x20的I2C设备的寄存器内容,并将它们显示出来。)
i2cset -f -y 2 0x20 0x77 0x3f (设置i2c-2上0x20器件的0x77寄存器值为0x3f)
i2cget -f -y 2 0x20 0x77 (读取i2c-2上0x20器件的0x77寄存器值)
i2cdetect -F 2 (显示i2c-2总线上功能和特性)

参考:IIC(I2C)总线上的设备其地址如何定义?通俗易懂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21338.html

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

相关文章

DeepSeek动画视频全攻略:从架构到本地部署

DeepSeek 本身并不直接生成动画视频,而是通过与一系列先进的 AI 工具和传统软件协作,完成动画视频的制作任务。这一独特的架构模式,使得 DeepSeek 在动画视频创作领域发挥着不可或缺的辅助作用。其核心流程主要包括脚本生成、画面设计、视频合成与后期处理这几个关键环节。 …

用deepseek学大模型08-长短时记忆网络 (LSTM)

deepseek.com 从入门到精通长短时记忆网络(LSTM),着重介绍的目标函数&#xff0c;损失函数&#xff0c;梯度下降 标量和矩阵形式的数学推导&#xff0c;pytorch真实能跑的代码案例以及模型,数据&#xff0c; 模型应用场景和优缺点&#xff0c;及如何改进解决及改进方法数据推导…

以ChatGPT为例解析大模型背后的技术

目录 1、大模型分类 2、为什么自然语言处理可计算&#xff1f; 2.1、One-hot分类编码&#xff08;传统词表示方法&#xff09; 2.2、词向量 3、Transformer架构 3.1、何为注意力机制&#xff1f; 3.2、注意力机制在 Transformer 模型中有何意义&#xff1f; 3.3、位置编…

鸿道Intewell操作系统:赋能高端装备制造,引领国产数控系统迈向新高度

在当今全球制造业竞争日益激烈的时代&#xff0c;高端装备制造作为国家核心竞争力的重要组成部分&#xff0c;其发展水平直接影响着一个国家的综合实力。而CNC数控系统&#xff0c;作为高端装备制造的“大脑”&#xff0c;对于提升装备的精度、效率和智能化水平起着关键作用。鸿…

mac开发环境配置笔记

1. 终端配置 参考&#xff1a; Mac终端配置笔记-CSDN博客 2. 下载JDK 到 oracle官网 下载jdk: oracle官网 :Java Downloads | Oraclemac的芯片为Intel系列下载 x64版本的jdk&#xff1b;为Apple Mx系列使用 Arm64版本&#xff1b;oracle官网下载时报错&#xff1a;400 Bad R…

【Python爬虫(29)】爬虫数据生命线:质量评估与监控全解

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…

大模型工具大比拼:SGLang、Ollama、VLLM、LLaMA.cpp 如何选择?

简介&#xff1a;在人工智能飞速发展的今天&#xff0c;大模型已经成为推动技术革新的核心力量。无论是智能客服、内容创作&#xff0c;还是科研辅助、代码生成&#xff0c;大模型的身影无处不在。然而&#xff0c;面对市场上琳琅满目的工具&#xff0c;如何挑选最适合自己的那…

测评雷龙出品的CS SD NAND贴片式TF卡

一、前言 在现代科技飞速发展的背景下&#xff0c;存储解决方案的创新与进步成为了推动各行各业发展的重要力量。这篇文章讲解雷龙公司出品的CS SD NAND贴片式TF卡的深度测评。这款产品不仅以其小巧精致的设计脱颖而出&#xff0c;更凭借其卓越的性能和可靠性&#xff0c;在众…

Hadoop一 HDFS分布式文件系统

一 分布式文件存储 了解为什么海量数据需要使用分布式存储技术 100T数据太大&#xff0c;单台服务器无法承担。于是&#xff1a; 分布式服务器集群 靠数量取胜&#xff0c;多台服务器组合&#xff0c;才能Hold住&#xff0c;如下 分布式不仅仅是解决了能存的问题&#xff…

windows下docker使用笔记

目录 镜像的配置 镜像的拉取 推荐镜像源列表&#xff08;截至2025年2月测试有效&#xff09; 配置方法 修改容器名字 如何使用卷 创建不同的容器&#xff0c;每个容器中有不同的mysql和java版本&#xff08;不推荐&#xff09; 1. 安装 Docker Desktop&#xff08;Win…

1005 K 次取反后最大化的数组和(贪心)

文章目录 题目[](https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/)算法原理源码总结 题目 如上图&#xff0c;k是取反的次数&#xff0c;在数组【4&#xff0c;-1,3】中&#xff0c;当k 1&#xff0c;把-2取反为2&#xff0c;和为9&#xff1b;在数组…

java毕业设计之医院门诊挂号系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的医院门诊挂号系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 医院门诊挂号系统的主要使用者…

深入学习解析:183页可编辑PPT华为市场营销MPR+LTC流程规划方案

华为终端正面临销售模式转型的关键时刻&#xff0c;旨在通过构建MPRLTC项目&#xff0c;以规避对运营商定制的过度依赖&#xff0c;并探索新的增长路径。项目核心在于建设一套全新的销售流程与IT系统&#xff0c;支撑双品牌及自有品牌的战略发展。 项目总体方案聚焦于四大关键议…

JUC并发—8.并发安全集合一

大纲 1.JDK 1.7的HashMap的死循环与数据丢失 2.ConcurrentHashMap的并发安全 3.ConcurrentHashMap的设计介绍 4.ConcurrentHashMap的put操作流程 5.ConcurrentHashMap的Node数组初始化 6.ConcurrentHashMap对Hash冲突的处理 7.ConcurrentHashMap的并发扩容机制 8.Concu…

Cython学习笔记1:利用Cython加速Python运行速度

Cython学习笔记1&#xff1a;利用Cython加速Python运行速度 CythonCython 的核心特点&#xff1a;利用Cython加速Python运行速度1. Cython加速Python运行速度原理2. 不使用Cython3. 使用Cython加速&#xff08;1&#xff09;使用pip安装 cython 和 setuptools 库&#xff08;2&…

DApp 开发入门指南

DApp 开发入门指南 &#x1f528; 1. DApp 基础概念 1.1 什么是 DApp&#xff1f; 去中心化应用&#xff08;DApp&#xff09;是基于区块链的应用程序&#xff0c;特点是&#xff1a; 后端运行在区块链网络前端可以是任何框架使用智能合约处理业务逻辑数据存储在区块链上 1…

基于Spring Security 6的OAuth2 系列之二十 - 高级特性--令牌交换(Token Exchange)

之所以想写这一系列&#xff0c;是因为之前工作过程中使用Spring Security OAuth2搭建了网关和授权服务器&#xff0c;但当时基于spring-boot 2.3.x&#xff0c;其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0&#xff0c;结果一看Spring Security也升级…

瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库

目录 1 环境搭建 2 交叉编译opencv 3 模型训练 4 模型转换 4.1 pt模型转onnx模型 4.2 onnx模型转rknn模型 4.2.1 安装rknn-toolkit 4.2.2 onn转成rknn模型 5 升级npu驱动 6 C++推理源码demo 6.1 原版demo 6.2 增加opencv读取图片的代码 7 交叉编译x264 ffmepg和op…

【开源】编译器,在线操作

目录 1. 思绪思维导图&#xff1a;simple mind map2. Markdown&#xff1a;md-editor-v33. 文档&#xff1a;wangEditor4. 电子表格&#xff1a;Luckysheet5. 幻灯片&#xff1a;PPTist6. 白板&#xff1a;excalidraw7. 流程图&#xff1a;drawio 1. 思绪思维导图&#xff1a;…

跳表(Skip List)详解

一、什么是跳表&#xff1f; 跳表是一种基于有序链表的高效数据结构&#xff0c;通过建立多级索引实现快速查询。它在平均情况下支持O(log n)时间复杂度的搜索、插入和删除操作&#xff0c;性能接近平衡树&#xff0c;但实现更为简单。 二、核心原理 1. 层级结构 底层为完整…