Android:i2c调试工具 i2c-tools使用,在Android external下新增一个可执行应用及编译,i2cdetect 、i2cget 、i2cset、i2ctransfer

   

一、使用i2c-tools工具让调试i2c外围设备方便很多,有必要推荐一下。

二、在android源码里面编译i2c-tools。源码下载路径:androidlinuxi2c调试工具源码i2c-tools-3.0.0.zip_i2ctools源码-Linux代码类资源-CSDN下载

      1、下载i2c-tools source code,如下

     2、把代码放到external下,添加Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
LOCAL_SRC_FILES := tools/i2cbusses.c tools/util.c
LOCAL_MODULE := i2c-tools
include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES:=tools/i2cdetect.c
LOCAL_MODULE:=i2cdetect
LOCAL_CPPFLAGS += -DANDROID
LOCAL_SHARED_LIBRARIES:=libc
LOCAL_STATIC_LIBRARIES := i2c-tools
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
include $(BUILD_EXECUTABLE)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES:=tools/i2cget.c
LOCAL_MODULE:=i2cget
LOCAL_CPPFLAGS += -DANDROID
LOCAL_SHARED_LIBRARIES:=libc
LOCAL_STATIC_LIBRARIES := i2c-tools
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
include $(BUILD_EXECUTABLE)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES:=tools/i2cset.c
LOCAL_MODULE:=i2cset
LOCAL_CPPFLAGS += -DANDROID
LOCAL_SHARED_LIBRARIES:=libc
LOCAL_STATIC_LIBRARIES := i2c-tools
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
include $(BUILD_EXECUTABLE)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES:=tools/i2cdump.c
LOCAL_MODULE:=i2cdump
LOCAL_CPPFLAGS += -DANDROID
LOCAL_SHARED_LIBRARIES:=libc
LOCAL_STATIC_LIBRARIES := i2c-tools
LOCAL_C_INCLUDES += $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include
include $(BUILD_EXECUTABLE)

     3、可以单独执行mmm mmm external/i2c-tools-3.0.0/进行编译,     会在out/xxx/system/bin/目录下生成 i2cdetect、i2cget 、i2cdump 、i2cset可执行文件。

      4、也可以在编译系统的时候把该模块添加进来,在device/xxx/device.mk里面添加:

           PRODUCT_PACKAGES += \
                                     i2cdetect \
                                     i2cget \
                                     i2cdump \
                                     i2cset

             这样在整个系统编译的时候(比如make -j16)能够生成那几个可执行文件。

         5、也可以用单独的arm编译器进行编译,Makefile文件如下,修改你的编译器路径。

# I2C tools for Linux
#
# Copyright (C) 2007  Jean Delvare <khali@linux-fr.org>
#
# Licensed under the GNU General Public License.

DESTDIR	=
prefix	= /usr/local
bindir	= $(prefix)/bin
sbindir	= $(prefix)/sbin
mandir	= $(prefix)/share/man
man8dir	= $(mandir)/man8
incdir	= $(prefix)/include

INSTALL		:= install
INSTALL_DATA	:= $(INSTALL) -m 644
INSTALL_DIR	:= $(INSTALL) -m 755 -d
INSTALL_PROGRAM	:= $(INSTALL) -m 755
RM		:= rm -f
CROSS_COMPILE	?=~/xxxxxxxxxx/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
#CC	:= gcc
CC	:= $(CROSS_COMPILE)
CFLAGS	:= -Wall
LDFLAGS+=-static
CFLAGS	+= -O2
# When debugging, use the following instead
#CFLAGS	+= -O -g

KERNELVERSION	:= $(shell uname -r)

.PHONY: all strip clean install uninstall

all:

include eeprom/Module.mk
include include/Module.mk
include tools/Module.mk

三、如何使用i2c-tools?

    1、通过 adb push 之间将编译生成的4个文件复制到 Android 平台的 /system/bin 目录下,修改可以执行权限。

    2、用i2cdetect检测系统上有几组i2c总线:

          i2cdetect -l

    3、用i2cdetect检测有哪些设备挂载在i2c_n总线上:

          i2cdetect -r -y 0  
          i2cdetect -r -y 1
          ...

    4、用i2cdump查看器件所有寄存器的值,这个很有用,输入 i2cdump -f -y 1 0x2b (查看总线1地址是0x20设备寄存器值)

    5、用i2cset设置单个寄存器值,用i2cget读取单个寄存器值。

          i2cset -f -y 1 0x2b 0x32 0x3f (设置i2c-1上0x2b器件的0x32寄存器值为0x3f)

          PS:新版需要在后面加个b,例如:i2cset -f -y 4 0x48 0x10  0x01 b

          i2cget -f -y 1 0x2b 0x32     (读取i2c-1上0x2b器件的0x32寄存器值)

五、注意用i2cdetect检测有哪些设备挂载在i2c_n总线上的时候,有的地方用i2cdetect  -y 1,不带-r;而有的地方用  i2cdetect -r -y 1。  

六、i2ctransfer 使用

        6.1 i2ctransfer -f -y 0 w3@0x31 0x42 0x22 0x12

0:代表 IIC 的总线号

w:代表写

3:代表写 3 Byte

0x32:代表 IIC 设备地址

后边三个数据代表要写的数据

        6.2 i2ctransfer -f -y 0 w1@0x3A 0x08 r3

从0x3A地址上偏移0x08之后读取3个Byte

        6.3  i2ctransfer -f -y 0 w16@0x49 0x48 0xff-

代表的是从 0x49 地址上偏移0x48的地方写入 0xff,偏移 0x49 的地方写 0xfe...以此类推

        6.4 实际操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值