I2C Tool 安装及使用 For i.MX8

关键字 :NXPI2C Tooli.MX8
下载源码
 
1. 获取源码
wget https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/i2c-tools-4.1.tar.xz
2. 解压源码
tar xvf i2c-tools-4.1.tar.xz cd i2c-tools-4.1
 
Linux 系统

1. 编译生成
make sudo make install
 2. 在 tool 目录下生成如下文件
 
 
Android 系统
 
1. 复制源码到 Android 的 external 目录下
2. 在 i2c-tools-4.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)
 3. 执行
mmm external/i2c-tools-4.1/​
会生成 4 个可执行文件 i2cdetect i2cdump i2cget i2cset
 
 
i2c-tools 的用法
i2cdetect
语法
i2cdetect [-y] [-a] [-q|-r] i2cbus [first last]
i2cdetect -F i2cbus
i2cdetect -V
i2cdetect -l
常用指令
i2cdetect -l            //检测有几组 i2c 总线在系统上 
i2cdetect -y [num] //检测 i2c-num 上的挂载情况
列举 I2C Bus
mek_8q:/data # ./i2cdetect -l                                                  
i2c-3 i2c 57226000.i2c I2C adapter
i2c-1 i2c i2c-rpmsg-adapter I2C adapter
i2c-6 i2c 58226000.i2c I2C adapter
i2c-4 i2c 5a800000.i2c I2C adapter
i2c-2 i2c 56226000.i2c I2C adapter
i2c-7 i2c 58246000.i2c I2C adapter
i2c-5 i2c 57247000.i2c I2C adapter
列举 I2C Bus I2C4 上面连接的所有设备
1|mek_8q:/data # ./i2cdetect -y 4                                              
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- 1c -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- 6c -- -- --
70: -- -- -- -- -- -- -- --

发现 I2C 设备的位置显示为 UU 或者表示设备地址的数值, UU 表示该设备在 driver 中被使用。

i2cdump
语法
i2cdump [-f] [-r first-last] [-y] i2cbus address [mode [bank [bankreg]]]
i2cdump -V
常用指令
i2cdump -f -y [bus-number] [slave-addr] //查看 i2c bus-num 上 slave-addr 寄存器的值
获取 I2C4 总线上设备地址为 0x1c 设备所有寄存器的值
mek_8q:/data # ./i2cdump -y -f 4 0x1c                                          
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 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .?..............
10: ff ff 00 22 f4 08 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: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 ................
40: 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
60: 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .?..............
70: ff ff 00 00 10 10 00 00 00 00 00 00 00 00 00 00 ....??..........
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
a0: ff ff ff ff ff ff f8 ff 00 00 ff ff 00 ff ff ff ......?.........
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
c0: 00 ff 00 00 ff ff ff 00 00 ff ff ff ff ff ff ff ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
e0: 00 ff 08 00 2b 76 00 ff ff ff ff ff ff ff ff ff ..?.+v..........
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................

i2cget
语法
i2cget [-f] [-y] i2cbus chip-address [data-address [mode]]
i2cget -V
常用指令
i2cget -f -y [bus-num] [slave-addr] [register] //读取 i2c 总线 num 上从机 addr 设备寄存器的值
读取 I2C4 总线上设备地址为 0x1c 设备的 0x13 寄存器的值
mek_8q:/data # ./i2cget -y -f 4 0x1c 0x13
0x22

i2cset
语法
i2cset [-f] [-y] [-m mask] [-r] i2cbus chip-address data-address [value] ...  [mode]
i2cset -V
常用指令
i2cset -f -y [bus-num] [slave-addr] [register] [val] //设置 i2c 总线 num 上从机 addr 设备的寄存器的值
设置 I2C4 总线上设备地址为 0x1c 设备的 0x13 寄存器的值为 0x11
mek_8q:/data # ./i2cset -y -f 4 0x1c 0x13 0x11​

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论