[Android] i2c-toos 在 Android 上使用
CPU:RK3399
系统:Android 7.1
i2c-tools 是一款免费开源的工具,可以检测 i2c 总线上的设备,可以读写寄存器等等
可以从下面路径下载需要的版本:
https://www.kernel.org/pub/software/utils/i2c-tools/
如果系统安装了 git,也可以使用 git 下载:
git clone git://git.kernel.org/pub/scm/utils/i2c‐tools/i2c‐tools.git
在 android 平台使用 i2c-tools,就需要进行交叉编译或者直接编译成可执行程序
1、修改 Makefile 进行交叉编译
暂时没有使用这种方式
2、编译成可执行程序
(1) 将 i2c-tools 文件夹拷贝到安卓任意目录
(2) 在 i2c-tools 目录添加 Android.mk 编译文件
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)
(3) 使用 mmm 指令进行模块化编译,编译后会在 tools 目录下生成 5 个可执行程序
i2cdetect i2cdump i2cget i2cset i2ctransfer
(4) 通过 adb 将生成的文件 push 到 /system/bin 目录下即可
指令使用方法:
i2cdetect:
Usage: i2cdetect [-y] [-a] [-q|-r] I2CBUS [FIRST LAST]
i2cdetect -F I2CBUS
i2cdetect -l
I2CBUS is an integer or an I2C bus name
If provided, FIRST and LAST limit the probing range.
-V:输出当前版本号
# i2cdetect -V
-y:指令执行自动 yes,否则会提示确认执行Continue? [Y/n] Y
-a:输出总线上所有地址(00-7f),没有 -a,只显示 08-77,UU 表示该设备在驱动中已使用
// 输出 i2c0 总线上所有设备
# i2cdetect -y -a 0
# i2cdetect -y
// 输出 i2c0 总线上地址从 0x10-0x55 之间的设备
# i2cdetect -y 0x10 0x55
-q:快速写指令,-q 和 -r 不能同时使用
-r:读指令,-q 和 -r 不能同时使用
I2CBUS:i2c 总线编号
-F:此 i2c 支持的功能
// i2c0 支持的功能
# i2cdetect -F
-l:输出所有 i2c 总线
# i2cdetect -l
i2cdump:
Usage: i2cdump [-f] [-y] [-r first-last] [-a] I2CBUS ADDRESS [MODE [BANK [BANKREG]]]
I2CBUS is an integer or an I2C bus name
ADDRESS is an integer (0x08 - 0x77, or 0x00 - 0x7f if -a is given)
MODE is one of:
b (byte, default)
w (word)
W (word on even register addresses)
s (SMBus block)
i (I2C block)
c (consecutive byte)
Append p for SMBus PEC
-V:输出当前版本号
# i2cdump -V
I2CBUS:i2c 总线编号
ADDRESS:设备地址,建议使用十六进制
-f:强制使用此设备地址,即使此设备地址已经被使用;若不添加此参数,地址可能写失败
-y:指令执行自动 yes,否则会提示确认执行Continue? [Y/n] Y
-r:读取从 first-last 之间的寄存器值
// 读取 i2c1 上设备地址为 0x10,从 0x50-0x70 之间的寄存器值
# i2cdump -f -y -r 0x50-0x7f 0x10
-a:暂时不知道什么含义
i2cget:
Usage: i2cget [-f] [-y] [-a] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
I2CBUS is an integer or an I2C bus name
ADDRESS is an integer (0x08 - 0x77, or 0x00 - 0x7f if -a is given)
MODE is one of:
b (read byte data, default)
w (read word data)
c (write byte/read byte)
Append p for SMBus PEC
-V:输出当前版本号
# i2cget -V
-f:强制使用此设备地址,即使此设备地址已经被使用;若不添加此参数,地址可能写失败
-y:指令执行自动 yes,否则会提示确认执行Continue? [Y/n] Y
// 读取i2c1总线上设备地址为0x10,寄存器0x03的值
# i2cget -f -y 0x10 0x03
-b:读取长度是一个字节
-w:读取长度是一个字
i2cset:
Usage: i2cset [-f] [-y] [-m MASK] [-r] [-a] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]
I2CBUS is an integer or an I2C bus name
ADDRESS is an integer (0x08 - 0x77, or 0x00 - 0x7f if -a is given)
MODE is one of:
c (byte, no value)
b (byte data, default)
w (word data)
i (I2C block data)
s (SMBus block data)
Append p for SMBus PEC
-V:输出当前版本号
# i2cget -V
-f:强制使用此设备地址,即使此设备地址已经被使用;若不添加此参数,地址可能写失败
-y:指令执行自动 yes,否则会提示确认执行Continue? [Y/n] Y
// 设置i2c1总线上设备地址为0x10,寄存器0x03的值为0x20
# i2cget -f -y 0x10 0x03 0x20
[Android] i2c-toos 在 Android 上使用的更多相关文章
- Xamarin Android 应用程序内图标上数字提示
最近在用 Xamarin 做一个 Android 应用,打开应用时,如果有新消息,需要在应用内的 Toolbar 或者首页的图标上显示数字提示.在这里和大家分享一下实现方法,如果你有更新好的实现方法, ...
- Android项目,从web上取下汉字,中文部分乱码
Android项目,从web上取下汉字,中文部分乱码. 常见问题,搜索一下,网上有很多办法解决.如果还没有试过这个办法,可以尝试一下. BufferedReader in = new Buffered ...
- Android属性动画完全解析(上),初识属性动画的基本用法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43536355 在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系 ...
- Android UI之下拉刷新上拉刷新实现
在实际开发中我们经常要用到上拉刷新和下拉刷新,因此今天我写了一个上拉和下拉刷新的demo,有一个自定义的下拉刷新控件 只需要在布局文件中直接引用就可以使用,非常方便,非常使用,以下是源代码: 自定义的 ...
- android 文字写在图片上
在linearlayout中直接设置背景图片,背景图片会被拉伸.. 我们来试一下imagebutton 但是imagebutton无法添加文字.. button能同时添加文字和图片但是图片比例没法控制 ...
- Android属性动画完全解析(上)
Android属性动画完全解析(上) 转载:http://blog.csdn.net/guolin_blog/article/details/43536355 在手机上去实现一些动画效果算是件比较炫酷 ...
- 【转】Android 服务器之SFTP服务器上传下载功能
原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...
- Android的图片压缩并上传
Android开发中上传图片很常见,一般为了节省流量会进行压缩的操作,本篇记录一下压缩和上传的方法. 图片压缩的方法 : import java.io.ByteArrayOutputStream; i ...
- Android Button悬浮在SurfaceView上
实现Button悬浮于与SurfaceView之上实现 注意:你实现的SurfaceView和android中的Button,EditView是同级的,不能把一个包含在另一个里面 1.创建自己的Sur ...
- 【Xamarin开发 Android 系列 6】 Android 结构基础(上)
原文:[Xamarin开发 Android 系列 6] Android 结构基础(上) 前面大家已经熟悉了什么是Android,而且在 [Xamarin开发 Android 系列 4] Android ...
随机推荐
- setTimeout()方法和setInterval()方法
setTimeout方法: 定义和用法: setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. tip: 1000 毫秒= 1 秒. tip: 如果你只想重复执行可以使用setI ...
- 使用SAP Cloud Platform Leonardo机器学习的测试控制台
选中一个需要进行测试的Leonardo机器学习服务,点击Configure Environments: 因为我不想使用sandbox环境,所以我选择了eu10这个region: 维护clientid和 ...
- springcloud 之Ribbon客户端负载均衡配置使用
pom.xml添加配置说明:这里服务注册与发现用的是Eureka,所以消费者端需要引入eureka,使用EurekaClient来调用服务 <dependency> <groupId ...
- Mongodb数据存储优缺点
相对于Mysql来说 在项目设计的初期,我当时有了这样的想法,同时也是在满足下面几个条件的情况下来选择最终的nosql方案的: 1.需求变化频繁:开发要更加敏捷,开发成本和维护成本要更低,要能够快速地 ...
- 关于ubuntu软件图标的问题
原因是这样的,有一次我更新我的IDEA之后,程序图标就不见了. 怎么说呢,就是以下显示的这样. 在Frequent中显示正常, 在All中却没有!!! 是的,它就是在一边有一边没有... 奇了怪了. ...
- Spring中的资源文件框架——Resource
摘要 Spring4 以后,官方推荐我们使用Java Config来代替applicationContext.xml,声明将Bean交给容器管理. 在Spring Boot中,Java Config的 ...
- Eclipse启动tomcat超时
启动tomcat 超时 Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the ser ...
- MyBatis_动态sql_foreach_mysql下foreach批量插入的两种方式
方法1: 笔记要点出错分析与总结工程组织数据库组织0.重新修改Bean类 修改1.定义接口 //批量插入 public void addEmps(@Param("emps") ...
- P2341 [HAOI2006]受欢迎的牛[SCC缩点]
题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢"是可以传递的--如果A喜 欢B,B喜 ...
- flask中使用ajax 处理前端请求,结果展示在同一页面,不点击页面不展示
在同一页面点击按钮,后端处理后展示在同一页面,不点击隐藏该结果:与上一篇大同小异,需要在 html.flask.js微调 效果展示: (未点击查询) (点击查询) html: <html> ...