1 下载i2c-tools
 从开源网站http://dl.lm-sensors.org/i2c-tools/releases/下载i2c-tools
 几个版本都可以用,可以选择下载i2c-tools-4.3

2 到官网下载交叉编译环境 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
http://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/

3 到i2c-tools-4.3下打开Makefile修改指定交叉编译环境路径
  COMPILE_PREFIX:= /code/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
  PREFIX  = system
  CC  := $(COMPILE_PREFIX)gcc
执行makefile生成i2cdetect等执行文件

4 对于基于平台mt6765的手机安卓系统,i2c-tools-4.3下添加Android.mk文件
参考https://www.cnblogs.com/lialong1st/p/11637011.html添加
LOCAL_PATH:= $(call my-dir)

################### i2c-tools #########################
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_MODULE := i2c-tools

LOCAL_SRC_FILES := \
    tools/i2cbusses.c \
    tools/util.c \
    lib/smbus.c

LOCAL_C_INCLUDES += \
    $(LOCAL_PATH) \
    $(LOCAL_PATH)/include

#LOCAL_CFLAGS := -g -Wall -Werror -Wno-unused-parameter
include $(BUILD_STATIC_LIBRARY)

################### i2cdetect #########################
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_MODULE:=i2cdetect

LOCAL_SRC_FILES:= \
    tools/i2cdetect.c
    
LOCAL_C_INCLUDES += \
    $(LOCAL_PATH) \
    $(LOCAL_PATH)/include

LOCAL_SHARED_LIBRARIES:= \
    libc
LOCAL_STATIC_LIBRARIES := \
    i2c-tools
    
LOCAL_CPPFLAGS += -DANDROID

include $(BUILD_EXECUTABLE)

#################### i2cget ###########################
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_MODULE:=i2cget

LOCAL_SRC_FILES:= \
    tools/i2cget.c
    
LOCAL_C_INCLUDES += \
    $(LOCAL_PATH) \
    $(LOCAL_PATH)/include

LOCAL_SHARED_LIBRARIES:= \
    libc
LOCAL_STATIC_LIBRARIES := \
    i2c-tools
    
LOCAL_CPPFLAGS += -DANDROID

include $(BUILD_EXECUTABLE)

##################### i2cset ##########################
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_MODULE:=i2cset

LOCAL_SRC_FILES:= \
    tools/i2cset.c
    
LOCAL_C_INCLUDES += \
    $(LOCAL_PATH) \
    $(LOCAL_PATH)/include

LOCAL_SHARED_LIBRARIES:= \
    libc
LOCAL_STATIC_LIBRARIES := \
    i2c-tools

LOCAL_CPPFLAGS += -DANDROID

include $(BUILD_EXECUTABLE)

##################### i2cdump #########################
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_MODULE:=i2cdump

LOCAL_SRC_FILES:= \
    tools/i2cdump.c
    
LOCAL_C_INCLUDES += \
    $(LOCAL_PATH) \
    $(LOCAL_PATH)/include

LOCAL_SHARED_LIBRARIES:= \
    libc
LOCAL_STATIC_LIBRARIES := \
    i2c-tools

LOCAL_CPPFLAGS += -DANDROID

include $(BUILD_EXECUTABLE)

################### i2ctransfer #######################
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := eng
LOCAL_MODULE:=i2ctransfer

LOCAL_SRC_FILES:= \
    tools/i2ctransfer.c
    
LOCAL_C_INCLUDES += \
    $(LOCAL_PATH) \
    $(LOCAL_PATH)/include

LOCAL_SHARED_LIBRARIES:= \
    libc
LOCAL_STATIC_LIBRARIES := \
    i2c-tools

LOCAL_CPPFLAGS += -DANDROID

include $(BUILD_EXECUTABLE)

将i2c-tools-4.3拷贝至工程system/core下面

执行mmm system/core/i2c-tools-4.3
就会在system/bin下生成i2cdetect,i2cget,i2cset,i2cdump,i2ctransfer等文件

此时将这些执行文件加载进系统,可能会提示错误,如执行i2cdetect -y 1
Could not open file `/dev/i2c-1' or `/dev/i2c/1'

需要在kernel-4.9/arch/arm64/configs将对应的xxx_64_bsp_defconfig将如下编译开关打开,重新编译系统
CONFIG_I2C_CHARDEV=y

5 工具使用
(1)执行i2cdetect 1,扫描/dev/i2c-1后面的设备
k62v1_64_bsp:/ # i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x08-0x77.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: 30 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- UU -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

可以看到,i2c-1,后面挂的设备有
5B,6A

(2)用i2cdump查看器件所有寄存器的值,如:查看0x5B设备上的所有寄存器的值,i2cdump -f -y 1 0x5B 
k62v1_64_bsp:/ # i2cdump -f -y 1 0x5B                                      
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: 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00    ................
10: 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    #...............
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00    ................
50: 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    #...............
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
80: 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00    ................
90: 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    #...............
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
c0: 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    #...............
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................

通过i2cset设置单个寄存器值,用i2cget读取单个寄存器值,在调试阶段不断更新效果,带确定最终效果后,通过上面指令把寄存器值都读出来,写到驱动的初始化代码中去.
简单操作下如:
k62v1_64_bsp:/ # i2cget -f -y 1 0x5b 0xd0   
0x23
读出0x5B设备的0xd0寄存器值为0x23

k62v1_64_bsp:/ # i2cset -f -y 1 0x5b 0xd0 0x24 
设置0x5B设备的0xd0寄存器值为0x24

在调试的过程中,还可以接示波器通过发送读写指令抓取i2c波形.

mtk6765上i2c-tools的使用相关推荐

  1. i2c tools ds90ub927芯片使用

    i2c tools && ds90ub927芯片使用: **下载:**git clone git://git.kernel.org/pub/scm/utils/i2c-tools/i2 ...

  2. Hi3516A开发--i2c tools安装和使用

    一.首先下载安装包: i2c-tools-3.0.1 linux上调试i2c的工具 源码 二.解压安装 1.解压tar -zxvf i2c-tools-3.0.1.tar.gz 2.修改Makefil ...

  3. Linux的I2C 设备驱动 -- mini2440 上i2c接口触摸屏驱动

    本篇记录在友善之臂 mini2440 平台上挂载I2C接口触摸屏的驱动开发过程. 内核版本linux-2.6.32.2, 平台是ARM9 S3C2440+I2C接口的触摸屏 如上篇 Linux的I2C ...

  4. 【GD32片上i2c外设应用】温湿度传感器htu21d

    文章目录 一.温湿度传感器htu21d介绍 1.1 参数 1.1.1 湿度参数 1.1.2 温度参数 1.2 芯片i2c协议 1.2.1 器件地址 1.2.2 读取温湿度 1.2.3 芯片复位 二.g ...

  5. 应用上i2c通过调用ioctl来读写设备

    1. 简介 在应用上通过ioctl来读写i2c设备 2. 结构体 (1) i2c_msg结构体 /** I2C Message - used for pure i2c transaction, als ...

  6. stm32驱动ssd1306配置_STM32F7片上硬件I2C驱动OLED(SSD1306),寄存器配置的。

    最近在学习STM32F7的片上I2C硬件,看到原子哥的OLED模块可以用I2C来驱动,于是就试了下.现在将试验结果与大家分享,目前还没有毕业经历过的项目比较少,只是为了抛砖引玉,有什么不合理的地方,请 ...

  7. Linux I2C工具查看配置I2C设备【转】

    转自:http://blog.chinaunix.net/uid-26895763-id-3478882.html 在處理音訊相關的問題時,我通常會找個方法來讀寫codec中register的值.幸好 ...

  8. linux i2c调试命令,嵌入式Linux下I2C接口调试

    By Toradex秦海 1).简介 I2C是嵌入式设备最为常用的接口之一,常用于如下面这些应用场景,因此本文就基于嵌入式Linux演示在User Space进行I2C设备调试. - Digital ...

  9. 查看树莓派I2C设备是否正常

    前言 在进行II2相关程序的开发时候,很多时候我们必须要确认硬件是否连接征程,设备是否按照我们的设想正常工作,设备地址多少.因此我们需要一个I2C tools来帮助我们 linux下安装 在控制台输入 ...

  10. A 平台I2C 的使用

    下面分享一下amlogic 平台I2C 使用的一点心得. I2C controllers 概述 I2C 是Inter-Integrated Circuit的缩写,发音为"eye-square ...

最新文章

  1. Spring官宣新家族成员:Spring Authorization Server!
  2. 网站如何做到完全不需要 jQuery ?
  3. 工作日志-W1444
  4. PostgreSQL在何处处理 sql查询之九
  5. 通信网络基础期末复习-第一章和第二章-概论和端到端的传输协议
  6. k8s的list-watch机制和 pod调度约束
  7. SAP Cloud for Customer里的ticket回复UI的实现
  8. 通过mod_limitipconn模块来限制apache的并发连接数
  9. 人群频率 | gnomAD数据库 (二) 后台数据的获取及质量评估
  10. java后台面试题整理
  11. RAC srvctl 命令报 libpthread.so.0 cannot open shared object file No such file or directory 解决方法...
  12. JConsole监控远程linux下的JVM
  13. [20180626]函数与标量子查询14.txt
  14. C#关键字=四六级核心词汇
  15. 【登陆设计】-【技术上】你会做WEB上的用户登录功能吗?
  16. 计算机win7不断重启,Win7旗舰版系统电脑反复自动重启怎么办?
  17. 灵遁者第一部诗歌集《触摸世界》上集40首诗歌欣赏
  18. PDF转CAD在线怎么转换?分享个在线转换的方法
  19. 微信小程序绑定手机号js代码
  20. Keras自定义损失函数出现:ValueError: Unknown loss function: focal_loss

热门文章

  1. [转贴]怎样学好法语?
  2. 计算机机房无尘,计算机机房建设标准
  3. Windows 常用软件清单
  4. 计算机科学导论5版答案,5计算机科学导论习题答案.doc
  5. 笔记·模拟电子技术基础——郑益慧老师
  6. 模拟电路,包括低频(模拟电子技术基础)和高频(高频电子线路)
  7. 数字图像处理matlab蔡利梅,数字图像处理:使用MATLAB分析与实现:using MATLAB
  8. Unity3d 周分享(20期 2019.6.30 )
  9. 把VSCode当作记事本使用
  10. 一年中所有节日的排列顺序_中国传统节日有哪些 按顺序排列全部