RK平台使用i2c-tools调试

news2024/9/23 3:31:05

简介

i2ctool是嵌入式开发过程中调试i2c设备常用的工具包,其中比较常用的有:i2cdetect、i2cdump、i2cset、i2cget。
RK平台的SDK大部分默认都会带这个工具,如果没有编译进去或者找不到的情况下可以自己从网上下载编译进去:https://www.kernel.org/pub/software/utils/i2c-tools

i2cdetect

检测有几组i2c总线在系统上:

[root@rk3399:/]# i2cdetect -l
i2c-0   i2c             rk3x-i2c                                I2C adapter
i2c-1   i2c             rk3x-i2c                                I2C adapter
i2c-4   i2c             rk3x-i2c                                I2C adapter
i2c-9   i2c             DP-AUX                                  I2C adapter
i2c-10  i2c             DesignWare HDMI                         I2C adapter
i2c-11  i2c             DP-AUX                                  I2C adapter

检测挂载在i2c总线上的设备(i2c0):

[root@rk3399:/]# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: UU -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- 
20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

i2cdump

查看i2c设备所有寄存器的值(i2c-0总线,i2c地址为0x20):

[root@rk3399:/]# i2cdump -f -y 0 0x20
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 17 40 07 21 04 21 03 00 00 00 01 01 00 80 02 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 20 ff ff 00 00 e0 0f 09    ?...?... ....???
40: 69 4c 04 58 2d 0c a5 00 00 00 00 17 00 00 17 00    iL?X-??....?..?.
50: fc 00 01 00 01 b0 04 8e 06 d0 a5 18 a5 24 01 fd    ?.?.?????????$??
60: ff ef ff 00 00 00 00 00 00 00 00 a5 ee 01 30 00    .?.........???0.
70: 03 1e 6a 88 03 1e 7c 78 a5 18 01 fd 00 f6 dc 05    ??j???|x????.???
80: 8b 25 03 6e 43 f0 00 00 00 00 00 00 00 00 00 02    ?%?nC?.........?
90: 45 7f 1f 7f f2 df b8 81 1e ff 58 1b 00 c4 09 00    E????????.X?.??.
a0: c4 09 00 00 ff 00 00 00 00 00 00 00 00 00 00 00    ??..............
b0: 00 0f 0f 0f 0f bf ef ff ff 00 64 20 20 64 1a 20    .??????...d  d? 
c0: 64 00 00 64 62 62 64 ff ff ff ff ff 0c 0c 30 30    d..dbbd.....??00
d0: 0c 0c 30 30 24 30 24 24 60 60 6c 6c 6c 6c 0b 36    ??00$0$$``llll?6
e0: 00 00 00 55 a2 c8 c5 40 00 ff 22 03 0a 80 94 0c    ...U???@.."?????
f0: c0 8c a0 40 00 40 00 86 00 dc 00 fc 00 ff 60 00    ???@.@.?.?.?..`.

i2cget

查看设备单个寄存器的值(i2c-0总线,i2c地址为0x20,寄存器地址为0xa):

[root@rk3399:/]# i2cget -f -y 0 0x20 0xa
0x01

i2cset

设置设备寄存器的值(i2c-0总线,i2c地址为0x20,寄存器地址为0xa,写值0x02):

[root@rk3399:/]# i2cget -f -y 0 0x20 0xa
0x01
[root@rk3399:/]# i2cset -f -y 0 0x20 0xa 0x02
[root@rk3399:/]# i2cget -f -y 0 0x20 0xa
0x02

使用示例

目标

该示例主要实现通过操作电源管理芯片的寄存器,关闭一路电源输出,本示例以RK3399板子上RK809的SWITCH_REG1为例。

查寄存器手册

在这里插入图片描述
在这里插入图片描述
通过RK809的芯片手册的《Chapter 5 Register Description》章节可以知道,操作SW1_EN的偏移址PMIC_POWER_EN3为0x00b4。bit[6]为写允许位,bit[2]为SW1_EN,因此,写的值为:0x44。指令为:

i2cset -f -y 0 0x20 0xb4 0x44

操作

[root@rk3399:/]# i2cget -f -y 0 0x20 0xb4 #读出当前状态
0x0f
[root@rk3399:/]# i2cset -f -y 0 0x20 0xb4 0x40 #关闭sw1
[root@rk3399:/]# i2cget -f -y 0 0x20 0xb4 #读出当前状态
0x0b

出错解决

有些i2c-tools在操作中会报错,如下:

# i2cset -f 4 0x22 0xc 0x01                                        
i2cset: mode too long (see "i2cset --help")

应该在最后加显示模式:

# i2cset --help                                                      
usage: i2cset [-fy] BUS CHIP ADDR VALUE... MODE


Write an i2c register. MODE is b for byte, w for 16-bit word, i for I2C block.


-f      Force access to busy devices
-y      Answer "yes" to confirmation prompts (for script use)


# i2cset -f -y 4 0x22 0xc 0x1 b

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

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

相关文章

数据结构与算法08:二分查找和哈希算法

目录 【二分查找】 二分查找的特殊情况 【哈希算法】 应用一:安全加密 应用二:唯一标识 应用三:数据校验 应用四:散列函数 应用五:负载均衡 应用六:数据分片 应用七:分布式存储&…

vscode:快捷输入代码片段

背景 每次调试代码输入 console.log() 的时候都会想,有没有什么指令我按下了就能生成这行代码,甚至更多我想自定义的代码,然后就去搜了搜果然有,vscode 提供了自定义代码片段的功能。 步骤 打开 vscode,点击 Prefer…

idea连接HiveServer2

一、 启动hive 启动hive的元数据服务 [aahadoop102 hive]$ bin/hive --service metastore根据你hive的配置方式启动hiveserver2 [aahadoop102 hive]$ bin/hive --service hiveserver2二、配置idea连接Hive服务 打开idea,在项目界面中的右边栏找到Database&#…

学术小白如何写好论文引言

文章目录 1.引言写作逻辑1.1 第一段:从现实出发1.2 第二段:文献综述1.3 第三段:引入研究理论和中介变量1.4 第四段:介绍调节变量的概念1.5 第五段:总结 Hello,宝子们,接下来,我们将持续不断更新一系列围绕论文写作的tips建议&…

vue3学习笔记(附加铺垫知识)

Vue3 1.铺垫知识 1.1ES6 默认导出与默认导入: 按需导出与按需导入: 直接导入并执行模块中的代码: 1.2Promise 回调地狱: 基本概念: 使用promise封装自己的读文件方法: 第一步: 第二步&a…

IP地址和MAC地址

1、MAC地址 MAC(Media Access Control,介质访问控制)地址,或称为物理地址,也叫硬件地址,用来定义网络设备的位置,MAC地址是网卡出厂时设定的,是固定的(但可以通过在设备…

二进制安装K8S

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)https://developer.aliyun.com/mirror/所有节点yum源更换为 ,按照aliyun给的容器里面的kubenetes源和docker源,当然最好把之前的centos源也换成aliyun的 所有节点安装docker yum install -…

git 环境配置 + gitee拉取代码

好嘛 配环境的时候 老是忘记这个命令行 干脆自己写一个记录一下 也不用搜了 1.先从git官网下载git 安装 2.然后从gitee拉取代码的时候提示 这是因为换了新电脑没有加入新的公钥啦 哎 所以老是记不住命令行 first : git config --global user.name “Your Name” …

windows下上架iOS应用到appstore

windows下上架iOS应用到appstore 背景步骤申请苹果开发者账号创建唯一标示符App IDs申请发布证书申请发布描述文件创建App并填写信息选择证书编译打包上传IPA到App Store提交审核 尾巴 背景 现在由于跨平台技术的兴起,不使用原生技术就能开发出Android和iOS应用。A…

redis cluster集群常见错误问题记录

错误信息一: [ERR] Node 127.0.0.1:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0. 这个报错是因为集群配置信息有被修改后导致的,比如某个节点里的redis.conf配置有变…

儿童节小游戏——HTML+JS实现贪吃蛇

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

AI时代,保障安全刻不容缓!

原创 | 文 BFT机器人 01 AI诈骗层出不穷 近年来,深度伪造行为呈现出快速增长的趋势。据统计,2019年至2020年期间,深度伪造网络内容的数量增加了900%,这一令人担忧的趋势预计将在未来数年内持续发展。一些研究人员甚至预测&#xf…

Nova 和 SuperNova:无需通用电路的通用机器执行证明系统

1. 引言 前序博客有: Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记SuperNova:为多指令虚拟机执行提供递归证明基于Nova/SuperNova的zkVMSangria:PLONK Folding2023年 ZK Hack以及ZK Summit 亮点记Sangria&…

如何把多个pdf合并成一个pdf?常见渠道一览

PDF是一种非常常见的文件格式,它通常用于文档的传输和共享。在日常工作中,我们可能需要将多个PDF文件合并成一个文件以便于管理和浏览。这篇文章将会介绍如何使用在线工具和桌面应用程序来合并PDF文件。 PDF转换器:常用的PDF处理软件&#xf…

Language Models as Knowledge Embeddings:语言模型用作知识嵌入 IJCAI 2022

1.相关工作 1)基于结构的知识嵌入 进一步分成基于翻译的模型和基于语义匹配的模型 基于翻译的模型采用基于距离的评分函数,TransE把实体和关系嵌入到一个维度为d的共享向量空间中;TransH,TransR,RotatE. 语义匹配模型采用基于相似性的评分函…

【Unity】简单的边缘高亮

【Unity】简单的边缘高亮 工程文件下载地址 全部文件 使用方法 方法功能On()打开单帧高亮显示On(Color color)打开单帧高亮显示FlashingParams(Color color1, Color color2, float freq)闪烁的参数设置FlashingOn打开闪烁FlashingOn(Color color1, Color color2)从颜色1切换到…

Python实战基础16-模块

Python中的模块 Python提供了强大的模块支持,主要体现为不仅在python标注库中包含了大量的模块(称为标准模块),而且还有很多第三方模块,另外开发者自己也可以开发自定义模块。 说的通俗点:模块就好比是工具…

ATA-L系列水声功率放大器-宽频带-大功率

水声功率放大器是一种专门用于水声信号放大的电子设备。水声功率放大器在水声通信中具有重要的作用,它可以将微弱的水声信号放大至足够强度,以提高信噪比和传输距离;同时,还可以进行信号处理和优化,以及温度控制等功能…

计算机毕业论文内容参考|基于java的电子产品垂直电商平台的设计与实现

文章目录 导文文章重点摘要前言绪论课题背景国内外现状与趋势课题内容相关技术与方法介绍导文 计算机毕业论文内容参考|基于java的电子产品垂直电商平台的设计与实现 文章重点 摘要 本文基于Java技术,设计并实现了一个电子产品垂直电商平台。该平台主要针对电子产品市场,提…

ESP32-C2系列开发板

C2是一个芯片采用4毫米x 4毫米封装,与272 kB内存。它运行框架,例如ESP-Jumpstart和ESP造雨者,同时它也运行ESP-IDF。ESP-IDF是Espressif面向嵌入式物联网设备的开源实时操作系统,受到了全球用户的信赖。它由支持Espressif以及所有…