android i2c权限,在android下使用i2c tools

在android使用i2c tools訪問i2c,很方便,可以在https://launchpad.net/ubuntu/+source/i2c-tools 下載最新的i2c tools.

把i2c-tools-3.1.1 解壓到external下,然后在i2c-tools-3.1.1根目錄下創建Android.mk文件,內容為:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_C_INCLUDES += $(LOCAL_PATH)/include $(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)/include $(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)/include $(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)/include $(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)/include $(LOCAL_PATH) $(LOCAL_PATH)/$(KERNEL_DIR)/include

include $(BUILD_EXECUTABLE)

然后在該目錄下執行mm,即可編譯成功.,生成生成i2cdetect,i2cdump,i2cset,i2cget等命令工具.

-----------------------下面是關於這四個命令的用法舉例

i2c-tools中含有四個執行檔

i2cdetect – 用來列舉I2C bus和上面所有的裝置

i2cdump – 顯示裝置上所有register的值

i2cget – 讀取裝置上某個register的值

i2cset – 寫入裝置上某個register

以下是實驗結果

/system/bin # i2cdetect -l

i2c-0   i2c             s3c2410-i2c                             I2C adapter

i2c-1   i2c             s3c2410-i2c                             I2C adapter

i2c-2   i2c             s3c2410-i2c                             I2C adapter

/system/bin #

看到有三條I2C總線

/system/bin # i2cdetect -y -r 0

0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f

00:          -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- 34 -- -- -- -- -- -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

發現 I2C 設備的位置顯示為UU或者表示設備地址的數值,UU表示該設備在 driver 中被使用。

/system/bin #

查看總線0上面有哪些設備以及設備地址;

/system/bin # i2cdump -f -y 0 0x34

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: 38 70 00 21 00 00 00 00 00 00 00 00 00 00 00 00    8p.!............

10: 05 00 5f 00 00 00 00 00 00 00 00 00 00 00 00 00    ?._.............

20: 00 00 00 16 00 00 00 68 ff 68 00 00 00 00 00 00    ...?...h.h......

30: 61 02 42 c9 45 22 9d 08 a5 1f 68 5f fc 16 00 00    a?B?E"????h_??..

40: d8 ff 03 01 00 00 00 00 08 08 02 00 60 00 00 00    ?.??....???.`...

50: cf 0e 00 00 0e 1f 00 00 00 00 00 00 00 00 71 04    ??..??........q?

60: a2 05 00 08 00 00 00 00 00 00 00 00 00 00 00 00    ??.?............

70: 0c 27 a1 00 00 00 00 00 d0 02 00 00 0f 17 a2 00    ?'?.....??..???.

80: e0 fd 83 80 32 00 ff 00 00 00 00 00 00 00 00 21    ????2..........!

90: 07 a5 07 07 00 02 00 00 00 00 00 00 00 00 00 00    ????.?..........

a0: 00 00 00 00 00 01 1d 01 cd 06 00 00 0e 12 a2 0b    .....?????..????

b0: 00 00 00 00 00 00 00 00 00 14 80 ba d2 0d 00 00    .........?????..

c0: 01 01 02 04 07 0d 10 1a 24 2e 35 3d 49 54 5c 63    ????????$.5=IT\c

d0: 00 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: 41 00 80 03 00 00 00 00 00 00 00 00 00 00 00 00    A.??............

/system/bin # i2cget -f -y 0 0x34 0x28

0xff

/system/bin #

單獨讀0x28寄存器的值

/system/bin #

/system/bin #

/system/bin # i2cset -f -y 0 0x34 0x28 0xfb

/system/bin #

單獨寫0x28寄存器的值

/system/bin # i2cget -f -y 0 0x34 0x28

0xfb

/system/bin #

可以看出寄存器值已經由0xff改成為0xfb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值