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位寄存器地址相关推荐

  1. I2C总线时序图: 8位设备地址 16位寄存器地址 16位数据

    有关I2C总线时序,下面的文章写得很好,推荐阅读 https://www.cnblogs.com/BitArt/archive/2013/05/28/3103917.html#commentform ...

  2. kernel:max92xx加串解串示例代码[可读取16位寄存器地址]

    主要逻辑函数就是max92xx_i2c_read/write /*!* @file max92xx.c** @brief max92xx GMSL1 DSI Serializer/DESerializ ...

  3. linux怎么64位,在linux下如何查看CPU是否支持64位

    在linux下如何查看CPU是否支持64位的方法是: # grep "flags" /proc/cpuinfo flags           : fpu tsc msr pae ...

  4. CodeBlocks出现不支持16位应用程序 360解决方法 已经失效(2019-11-22)

    CodeBlocks出现不支持16位应用程序(已失效) 出现这个错误之后,我卸载了软件,重启,重新安装,问题没有解决. 看到有人说是win10更新的问题,把win10更新卸载重启之后也没有用. 然后就 ...

  5. codeblocks不支持16位,“64位Windows不兼容”的问题

    codeblocks不支持16位,与64位不兼容的问题 原因分析 造成该问题的原因有很多,解决方法也有很多,但是目前不知道怎么样调试找原因并找出解决方法.下面列出几种解决方法. 解决方法 方法一:点击 ...

  6. win10将程序注册为服务器,win10不支持16位应用程序怎么解决_网站服务器运行维护...

    ​win10不能建立远程连接怎么办_网站服务器运行维护 ​win10不能建立远程连接的解决方法:1.右键桌面的此电脑,点击管理:2.点击设备管理器-网络适配器:3.找到WAN Miniport(IP) ...

  7. 汇编语言——16位寄存器实现32位二进制数左移4位。

    问题描述 16位寄存器实现32位二进制数左移4位. 源代码 MOV CL, 04 SHL DX, CL MOV BL, AH SHL AX, CL SHR BL, CL OR DL, BL 说明:  ...

  8. arduino i2c 如何写16位寄存器_基于STM32使用I2C读取传感器数据

    撑腰会儿:I2C通信协议介绍​zhuanlan.zhihu.com 上文介绍了I2C协议的基本结构,今天,使用STM32和LM75A温度传感器来实现I2C读取信息. 首先,为了使用I2C读取传感器测量 ...

  9. arduino i2c 如何写16位寄存器_Arduino之我见

    Arduino是一款时尚流行的开源软件&硬件平台,其开发入门简单,是众多DIY玩家及创客的首选.目前,Arduino也开始进入了中小学的创客课程.然而在与很多玩家.学生或是创客老师交流的过程中 ...

  10. arduino i2c 如何写16位寄存器_树莓派3B开发Go语言(二)寄存器版本GPIO

    作者:爪爪熊 链接:https://www.jianshu.com/p/0495c0554a63 來源:简书 之前将go语言的运行环境给搭建起来了,但是没有开始真正的试试Go 语言操作树莓派硬件的效果 ...

最新文章

  1. springboot 集成mybatis时日志输出
  2. thinkphp概述
  3. MPLS 解决方案有哪些优势?——Vecloud
  4. linux epoll 模型详解
  5. html3d上下翻转4面效果,花式实现图片3D翻转效果
  6. JDK 与 JRE区别
  7. USACO-Section1.6 Prime Palindromes(素数和回文数)
  8. 漫步线性代数二十一——行列式引言
  9. python 百度网盘下载提速_教你如何百度网盘的提高下载速度?
  10. SQL SERVER数据类型与C#数据类型对照表
  11. Deep Learning for 3D Recognition
  12. 根据表格长度使td里的内容换行
  13. php date 加30分钟,PHP date函数常用时间处理方法
  14. Smartdrv程序有什么作用
  15. 肠道微生物组如何影响运动能力,所谓的“精英肠道微生物组”真的存在吗?
  16. python遍历字母_如何遍历字母表?
  17. 网易企业邮箱如何设置反垃圾规则?【网易企业邮箱】
  18. centos7.4源码安装nginx-1.16.1 及NGINX最全配置 缓存缩略图4层转发
  19. 数显之家快讯:【SHIO世硕心语】SHIO世硕科技企业文化宣言知多少?
  20. AI中插入带圆圈的1-20数字

热门文章

  1. 蓝桥杯2019年软件类省赛:真题+解答
  2. Windows 10 windows 11 如何离线安装NetFx3
  3. 基于VxWorks的VxBus字符设备驱动
  4. thymeleaf模板引擎使用iframe的解决方案
  5. android跑马灯代码,Android中实现跑马灯效果
  6. 线性表建立学生信息表
  7. php采集虎牙,全网首发PHP虎牙直播解析接口源码
  8. 安装SQL Server 2005中文开发版后,界面变英文改中文解决方法
  9. 全国OA系统下载 (转)
  10. Word中,Mathtype安装遇到的问题及解决方法