Linux I2C调试工具i2c-tools,i2ctransfer支持16位寄存器地址
i2c-tools工具是一个专门调试i2c的,开源,可获取挂载的设备及设备地址,还可以在对应的设备指定寄存器设置值或者获取值等功能。
一、下载i2c-tools,交叉编译
1、从开源网站http://dl.lm-sensors.org/i2c-tools/releases/下载i2c-tools,
(1) 解压后:
(2) 修改makefile文件。
(3) 然后保存退出。直接make,进行编译。编译完成后在tools/文件夹下会有如下几个可执行文件:
i2cdetect、i2cdump、i2cget、i2cset、i2ctransfer (新版本才有)
如下图所示:
(4) 将i2cdetect, i2cdump, i2cget, i2cset push到安卓设备就可以调试了。
二、命令举例
1、用i2cdetect检测有几组i2c总线在系统上,输入:
$i2cdetect -l
由上图可知,系统中存在两组总线分别i2c-1和i2c-2。
2、用i2cdetect检测挂载在i2c总线上器件,输入:
$i2cdetect -r -y 1(检测i2c-1上的挂载情况)
由上图可知,0x18, 0x20, 0x30, 0x34, 0x64地址有挂载。
3、用i2cdump查看器件所有寄存器的值,这个很有用,输入:
$i2cdump -f -y 1 0x20 (查看i2c-1 上0x20器件寄存器的值)
这样就可以对比自己设置的是否一致了。
4、用i2cset设置单个寄存器值,用i2cget读取单个寄存器值,可以在初期调试时发挥很大作用,一旦有预期的现象出现,就可以用i2cdump读出整个寄存器的值,然后固化到代码中。
(1) i2cset设置i2c-1上0x20器件的0x77寄存器值为0x3f
$i2cset -f -y 1 0x20 0x77 0x3f
2)i2cget读取i2c-1上0x20器件的0x77寄存器值
$i2cget -f -y 1 0x20 0x77
5. i2ctransfer 使用,i2ctransfer支持16位/32位寄存器的读写,i2cset和i2cget只能读取8位的寄存器。所以i2ctransfer可以替代i2cset和i2cget。
(1) 往i2c-1上0x36器件 0x5081寄存器 写0x01
$i2ctransfer -f -y 1 w3@0x36 0x50 0x81 0x01
(2) 在i2c-1上0x36器件 0x300A寄存器 读取3个字节数据
$i2ctransfer -f -y 1 w2@0x36 0x30 0x0A r3
Linux I2C调试工具i2c-tools,i2ctransfer支持16位寄存器地址相关推荐
- I2C总线时序图: 8位设备地址 16位寄存器地址 16位数据
有关I2C总线时序,下面的文章写得很好,推荐阅读 https://www.cnblogs.com/BitArt/archive/2013/05/28/3103917.html#commentform ...
- kernel:max92xx加串解串示例代码[可读取16位寄存器地址]
主要逻辑函数就是max92xx_i2c_read/write /*!* @file max92xx.c** @brief max92xx GMSL1 DSI Serializer/DESerializ ...
- linux怎么64位,在linux下如何查看CPU是否支持64位
在linux下如何查看CPU是否支持64位的方法是: # grep "flags" /proc/cpuinfo flags : fpu tsc msr pae ...
- CodeBlocks出现不支持16位应用程序 360解决方法 已经失效(2019-11-22)
CodeBlocks出现不支持16位应用程序(已失效) 出现这个错误之后,我卸载了软件,重启,重新安装,问题没有解决. 看到有人说是win10更新的问题,把win10更新卸载重启之后也没有用. 然后就 ...
- codeblocks不支持16位,“64位Windows不兼容”的问题
codeblocks不支持16位,与64位不兼容的问题 原因分析 造成该问题的原因有很多,解决方法也有很多,但是目前不知道怎么样调试找原因并找出解决方法.下面列出几种解决方法. 解决方法 方法一:点击 ...
- win10将程序注册为服务器,win10不支持16位应用程序怎么解决_网站服务器运行维护...
win10不能建立远程连接怎么办_网站服务器运行维护 win10不能建立远程连接的解决方法:1.右键桌面的此电脑,点击管理:2.点击设备管理器-网络适配器:3.找到WAN Miniport(IP) ...
- 汇编语言——16位寄存器实现32位二进制数左移4位。
问题描述 16位寄存器实现32位二进制数左移4位. 源代码 MOV CL, 04 SHL DX, CL MOV BL, AH SHL AX, CL SHR BL, CL OR DL, BL 说明: ...
- arduino i2c 如何写16位寄存器_基于STM32使用I2C读取传感器数据
撑腰会儿:I2C通信协议介绍zhuanlan.zhihu.com 上文介绍了I2C协议的基本结构,今天,使用STM32和LM75A温度传感器来实现I2C读取信息. 首先,为了使用I2C读取传感器测量 ...
- arduino i2c 如何写16位寄存器_Arduino之我见
Arduino是一款时尚流行的开源软件&硬件平台,其开发入门简单,是众多DIY玩家及创客的首选.目前,Arduino也开始进入了中小学的创客课程.然而在与很多玩家.学生或是创客老师交流的过程中 ...
- arduino i2c 如何写16位寄存器_树莓派3B开发Go语言(二)寄存器版本GPIO
作者:爪爪熊 链接:https://www.jianshu.com/p/0495c0554a63 來源:简书 之前将go语言的运行环境给搭建起来了,但是没有开始真正的试试Go 语言操作树莓派硬件的效果 ...
最新文章
- springboot 集成mybatis时日志输出
- thinkphp概述
- MPLS 解决方案有哪些优势?——Vecloud
- linux epoll 模型详解
- html3d上下翻转4面效果,花式实现图片3D翻转效果
- JDK 与 JRE区别
- USACO-Section1.6 Prime Palindromes(素数和回文数)
- 漫步线性代数二十一——行列式引言
- python 百度网盘下载提速_教你如何百度网盘的提高下载速度?
- SQL SERVER数据类型与C#数据类型对照表
- Deep Learning for 3D Recognition
- 根据表格长度使td里的内容换行
- php date 加30分钟,PHP date函数常用时间处理方法
- Smartdrv程序有什么作用
- 肠道微生物组如何影响运动能力,所谓的“精英肠道微生物组”真的存在吗?
- python遍历字母_如何遍历字母表?
- 网易企业邮箱如何设置反垃圾规则?【网易企业邮箱】
- centos7.4源码安装nginx-1.16.1 及NGINX最全配置 缓存缩略图4层转发
- 数显之家快讯:【SHIO世硕心语】SHIO世硕科技企业文化宣言知多少?
- AI中插入带圆圈的1-20数字