mtk6765上i2c-tools的使用

2023-05-16

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波形.


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mtk6765上i2c-tools的使用 的相关文章

  • oracle 释放过度使用的Undo表空间

    故障现象 UNDO表空间越来越大 长此下去最终数据因为磁盘空间不足而崩溃 问题分析 产生问题的原因主要以下两点 1 有较大的事务量让Oracle Undo自动扩展 产生过度占用磁盘空间的情况 2 有较大事务没有收缩或者没有提交所导制 说 明
  • Linux下CH452数码管芯片驱动调试(GPIO模拟I2C)

    1 设备连接 主控板处理器为Cortex A5处理器 内核4 9 0 主控板和CH452引脚定义如下表1 1所示 表1 1 主控板和CH452引脚定义 序号 CH452引脚定义 主控板引脚定义 1 SDA PB29 2 SCL PB30 3
  • 运维常用的shell命令.md

    1 后台启动脚本 nohup start sh gt dev null 2 gt 1 dev null代表linux的空设备文件 所有往这个文件里面写入的内容都会丢失 俗称 黑洞 2 gt 1错误输出2重定向到标准输出1 意思是标准输出和错
  • 浅谈 qmake 之 shadow build

    shadow build shadow build 是什么东西 就是将源码路径和构建路径分开 也就是生成的makefile文件和其他产物都不放到源码路径 以此来保证源码路径的清洁 这不是qmake独创的东西 cmake中早就使用这个东西了
  • D3D初学入门一(配置开发环境及绘制D3D窗口)

    最近一直接触的都是C 的东东 好久没写C 代码了 怕手生忘记了 打算写写C 的代码 写什么好呢 想来想去 以前的工作学过接触了些OpenGL 那我就学习一下D3D吧 原以为D3D的中文入门资料会很多的 结果找了半天也没找到合适的 哎 随便将
  • 将 debian 安装到 虚拟机中,不需要官方虚拟 tools 的简单办法 (****)

    目录 将 debian 安装到 虚拟机中 不需要官方虚拟 tools 的简单办法 原版 衍生版 debian mxlinux 的一些区别 https blog csdn net ken2232 article details 1325311
  • 怎样将自己的电脑变成一个服务器(本地服务器)

    你想将自己的电脑变成一个服务器吗 或许你还不知道我们自己的电脑也可摇身一变成为服务器 现在我分享一下把我们的电脑变为服务器的方法 工具 原料 电脑 步骤1 打开 修改电脑相关服务功能 1 1 点击 开始 打开 控制面板 2 2 打开 程序
  • 谷歌浏览器设置黑暗模式

    方法一 在chrome的实验性功能中开启黑暗模式 1 打开Google Chrome 在地址栏中输入 chrome flags 回车 进入实验性功能页面 2 在搜索框中搜索 Auto Dark Mode for Web Contents 3
  • UBOOT命令总结(转)

    UBOOT命令总结 转 很好的UBOOT命令总结 我在起步时就是看的这篇东西 熟悉了以后就用 看自带帮助就行 Printenv 打印环境变量 Uboot gt printenvbaudrate 115200ipaddr 192 168 1
  • qtp的基本使用方法(1)

    1 action qtp为每一个action生成相应的测试文件和目录 对象库也是和action绑定的 用action 来划分和组织测试流程 编辑action 修改action的名字 action properties 增加action in
  • 彻底卸载、devtools安装问题、扩展程序的使用

    目录 一 彻底卸载 MySQL Mongo数据库 二 vue devtools 三 扩展程序的使用 一 彻底卸载 MySQL Mongo数据库 停止服务1 cmd命令 net stop mysql mongo 停止服务2 如下图 这个好 控
  • Git使用(2)多人协作:与远程仓库之间的沟通

    简单版本连接到github等服务器 远程和本地都没有分支 1 git checkout b newbranch 新建一个newbranch 2 git push origin newbranch 3 git pull origin newb
  • VS2005(VC++)远程调试方法

    仅我目前了解很多人还在使用成本很高的本地调试方法 即在需要调试的机器上安装VS环境 这样的好处就是直接 但是成本很高 要在目标机器安装一个VS的Copy 国内可能不是问题 还有源代码安全问题 同步问题等等 开始 已知 A B两个服务器 如果
  • Java实现哈希函数/散列算法

    哈希函数 散列算法 根据某个值进行hash值计算 确保唯一性 public class HashUtils private static final String ALGORITHM SHA 256 public static String
  • 个人sublime配色方案

    文章目录 1 效果图 2 描述文件 1 效果图 2 描述文件 color scheme Packages Color Scheme Default Monokai tmTheme font face Consolas font size 1
  • 安装vmware tools时,kernel版本不匹配问题的解决方法

    安装vmware tools 的时候 提示找不到C header files 此种情况下 按以下步骤操作 1 内核安装完毕后 需要用这个命令确定内核 C header 的安装目录 ls d usr src kernels uname r i
  • Raspberry Pi上设置I2C LCD

    在本教程中 我将向您展示使用I2C设置LCD所需的一切 连接LCD I2C也被称为两线接口 因为它仅使用两根线来发送和接收数据 实际上 如果算上Vcc和地线 则是4线 但是电源始终可以来自其他来源 连接启用I2C的LCD 将LCD与I2C背
  • 如何在 QEMU x86 上模拟 i2c 设备?

    我正在研究 QEMU 1 5 1 6 但还没有看到任何在 i2c 总线上添加设备的文档 有人可以帮忙吗 Thanks 好吧 没人对这个问题感兴趣 我发布我自己的解决方案 由于 QEMU 不支持 I2C 总线级数据传输 因此在将多点触摸数据从
  • ADXL345 与 ESP32 I2C 垃圾值问题

    我已根据以下教程使用 I2C 接口将 ESP32 与 ADXL345 连接起来Tutorial http www esp32learning com code esp32 and adxl345 sensor example php 但是
  • 是否有通用 I2C 命令来查看设备是否仍然存在于总线上?

    是否有通用的 I2C 命令来查看设备在初始化一次后是否仍然存在于总线上 例如 OLED 显示器 我问这个的原因是为了避免主程序由于库代码中存在无限循环而冻结 当设备断开连接时 例如 Wire 库 在 MCU 启动时 我想检查设备是否可用 并

随机推荐

  • Expert C Lanuage 学习笔记----1、穿越时空的迷雾(1)

    Expert C Lanuage 学习笔记 1 穿越时空的迷雾 xff08 1 xff09 1 First Mistake 几乎每个C语言编程新手都犯过下面错误 xff1a if i 61 3 正确应该是 if i 61 61 3 这种错误
  • vscode 保存代码自动格式化(vue)

    1 根据项目配置的eslint规则保存代码后 xff0c 自动格式化代码 2 需要安装prettier 和 vetur settings json 34 codestream serverUrl 34 34 https api codest
  • 理解互斥量和信号量

    互斥量 Mutex 互斥量表现互斥现象的数据结构 xff0c 也被当作二元信号灯 一个互斥基本上是一个多任务敏感的二元信号 xff0c 它能用作同步多任务的行为 xff0c 它常用作保护从中断来的临界段代码并且在共享同步使用的资源 Mute
  • 单链表逆序与排序

    xfeff xfeff xfeff xfeff xfeff xfeff include lt stdio h gt include lt stdlib h gt include lt string h gt typedef struct d
  • ubuntu apt-get update 失败解决。

    当运行apt get update后出现如下错误时 xff1a E Some index files failed to download they have been ignored or old ones used instead 可以
  • 深入理解句柄表

    涉及到句柄表的有以下这些概念 xff1a HANDLE TABLE HANDLE TABLE结构体中的TableCode变量 实际上啊 xff0c TableCode是指向句柄表项第一个句柄表项的指针 xff08 NULL句柄表项 xff0
  • LQR控制律设计

    LQR全称为Linear Quadratic Regulator xff0c 即线性二次型调节器 xff08 一 xff09 有限时域最优调节器设计 设线性系统 被控对象的离散化状态方程为 xff1a 初始条件 给定二次型性能指标函数 xf
  • 路径跟踪之LQR控制算法

    xff08 一 xff09 车辆建模 两自由度车辆模型为 xff1a 考虑恒定不变 xff0c 则上述模型可以看作一个输入为 状态变量为的控制系统 xff0c 可以表示为 xff1a 对于参考轨迹 xff0c 可以表示为 xff1a 将 x
  • Arrays.sort简单排序实例

    Arrays sort 方法实例 xff1a 用于对整形数组及字符串数组进行排序 这里写代码片 import java util ArrayList import java util Arrays import java util Coll
  • git rebase 成功之后如何撤销

    git rebase 过程中可以使用git abort continue来进行操作 xff0c 成功之后如何撤销呢 xff1f 首先执行git reflog查看本地记录 可知本次rebase之前的id 为 xff1a 02a3260 HEA
  • STM32---BOOT0和BOOT1

    文章目录 前言一 思维导图二 注意事项1 针对BOOT0和BOOT1的不同接线方式 xff08 高电平 xff0c 低电平 xff0c 不接线 xff09 xff0c 开发板的下载情况分析如下图 xff1a xff08 x 代表不接线 xf
  • Windowsxp主机下用Putty连接VirtualBox中的Debian

    参考网址 1 xff0c debian中需要安装openssh server xff0c 并开启ssh服务 2 xff0c VirtualBox的网络连接方式选择NAT xff08 可以连接外面的网络 xff09 xff0c 默认情况下 x
  • 设备接入天猫精灵教程(一)

    现在网上接入天猫精灵的教程基本都是云对云接入 xff0c 需要搭建服务器 xff0c 写硬件程序 xff0c 费时又复杂 这次结合之前的阿里云教程做一个通过阿里云物联网平台接入天猫精灵的教程 xff0c 免去了服务器开发 xff0c 大大的
  • 测试 使用 perf 进行性能分析时如何获取准确的调用栈

    测试 使用 perf 进行性能分析时如何获取准确的调用栈 ifonly 2020年02月27日 101 次阅读 目录 perf 是 Linux 下重要的性能分析工具 xff0c perf 可以通过采样获取很多性能指标 xff0c 其中最常用
  • Jetson Xavier NX 安装固态硬盘并挂载到/home目录下

    1 查看硬盘所有分区 指令 xff1a sudo fdisk lu xff12 对硬盘进行分区 指令 xff1a sudo fdisk dev nvme0n1 3 格式化分区为ext4 指令 xff1a sudo mkfs t ext4 d
  • 单目相机位姿求解之PNP算法原理剖析与实践

    对于视觉里程计中 xff0c 相机位姿的求解问题极为常见 对于双目相机 xff0c 由于其可以直接计算出深度信息 xff0c 所以在相机位姿求解上十分容易 但如果我们使用的是单目相机 xff0c 如何从二维图像中求解出相机相对三维物体的位姿
  • 计算器1.0

    数据结构让我们相遇 计算器1 0正式上线 xff1a define h span class token macro property span class token directive keyword include span span
  • 常用软件滤波方法及其示例程序

    常用软件滤波方法及其示例程序 作者 未知 来源 发布时间 2005 08 24 浏览次数 lt script language 61 34 Javascript 34 src 61 34 view php articleid 61 10 3
  • I2C协议调试总结

    1 协议总结 开始 xff1a 在SCL为高期间 xff0c SDA由高变低 结束 xff1a 在SCL为高期间 xff0c SDA由低变高 应答 xff1a 时钟脉冲 xff19 期间释放数据线 xff0c SCL为高期间 xff0c S
  • mtk6765上i2c-tools的使用

    1 下载i2c tools 从开源网站http dl lm sensors org i2c tools releases 下载i2c tools 几个版本都可以用 xff0c 可以选择下载i2c tools 4 3 xff12 到官网下载交