I2CHelper
下載下傳位址:https://download.csdn.net/download/qq_33544860/81854199
I2CHelper是一個簡單的I2C調試工具,它可以用來設定讀取、設定相關的寄存器。功能和著名的i2c-tool類似。
準備工作
在這裡主要介紹如何在android裡面進行使用。
首先,由于涉及到權限問題,我們需要通過adb進行root以及remount,如:
adb root
adb remount
接下來,就可以将I2CHelper push到/system/bin裡面了:
adb push I2CHelper /system/bin
用法
從這裡開始,我們來看一下如何正确使用此應用程式來進行相關的設定。
help
預設的模式,如果不帶任何參數的話,那麼就會進入如下模式。
指令行的用法如下:
adb shell ./system/bin/I2CHelper
或是帶“help”參數,如:
adb shell ./system/bin/I2CHelper help
detect
該功能主要用來檢測I2C總線上有哪些裝置,以及該裝置的位址是什麼。該模式的參數隻有一個,便是detect,如:
adb shell ./system/bin/I2CHelper detect
在某個android平台上的運作結果如下所示:
|-------|--------------|---------------|--------------|-----------------|
| BUS | 7BIT ADDRESS | WRITE ADDRESS | READ ADDRESS | POSSIBLE DEVICE |
|-------|--------------|---------------|--------------|-----------------|
| i2c-0 | 0x0C | 0x18 | 0x19 | Unknow |
| i2c-0 | 0x44 | 0x88 | 0x89 | Unknow |
| i2c-0 | 0x5D | 0xBA | 0xBB | GM7150,TVP5151 |
| i2c-1 | 0x5D | 0xBA | 0xBB | GM7150,TVP5151 |
| i2c-2 | 0x28 | 0x50 | 0x51 | Unknow |
| i2c-2 | 0x5D | 0xBA | 0xBB | GM7150,TVP5151 |
|-------|--------------|---------------|--------------|-----------------|
get
該模式主要是用來擷取裝置的某個寄存器的數值,其功能參數為:
I2CHelper get [BUS][7-BIT ADDR][REG]
假如某個I2C裝置挂載在dev/i2c-2上,其位址為0x5D,我們想擷取它0x21寄存器的數值,那麼我們可以執行如下指令:
adb shell ./system/bin/I2CHelper get 2 0x5D 0x21
輸出結果如下所示:
|-------|--------------|------------------|-------|
| BUS | 7BIT ADDRESS | REGISTER ADDRESS | VALUE |
|-------|--------------|------------------|-------|
| i2c-2 | 0x5D | 0x21 | 0xE |
|-------|--------------|------------------|-------|
set
該模式主要是用來設定寄存器的數值,其功能參數為:
I2CHelper set [BUS][7-BIT ADDR][REG][VAL]
假如某個I2C裝置挂載在dev/i2c-2上,其位址為0x5D,我們想設定它0x21寄存器的數值為0x0A,那麼我們可以執行如下指令:
adb shell ./system/bin/I2CHelper set 2 0x5D 0x21 0x0A
指令執行的結果如下所示:
|-------|--------------|------------------|-----------|-----------|
| BUS | 7BIT ADDRESS | REGISTER ADDRESS | OLD VALUE | NEW VALUE |
|-------|--------------|------------------|-----------|-----------|
| i2c-2 | 0x5D | 0x21 | 0xE | 0xA |
|-------|--------------|------------------|-----------|-----------|
dump
該模式主要是用來dump出整個I2C裝置的所有寄存器的數值,其功能參數為:
I2CHelper dump [BUS][7-BIT ADDR][File --Option]
其中File這個參數是可選的。如果有此參數的話,會将相關的數值儲存到檔案中,以便于“load”模式使用。
假如某個I2C裝置挂載在dev/i2c-2上,其位址為0x5D,我們想将它寄存器全部dump出來,那麼執行如下指令:
adb shell ./system/bin/I2CHelper dump 2 0x5D
如果将dump的資料儲存到檔案中,則加上檔案路徑:
adb shell ./system/bin/I2CHelper dump 2 0x5D /sdcard/dump.txt
執行結果如下所示:
Bus: i2c-2
Address: 0x5D
|---|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
|---|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|
| 0 | 00 | 15 | 00 | AF | C0 | 00 | 10 | 60 | 00 | 70 | 80 | 00 | 80 | 40 | 00 | 02 |
| 1 | 1E | 00 | 00 | 00 | 00 | 01 | 6E | 05 | 00 | 00 | 0C | 14 | 00 | 00 | 00 | 00 |
| 2 | 0E | 0E | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| 3 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| 4 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| 5 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| 6 | 00 | 00 | 01 | 00 | 00 | 04 | 04 | 08 | 15 | 00 | 0C | 32 | 0F | DA | 03 | 00 |
| 7 | FF | 06 | 06 | 10 | 00 | 04 | 00 | 08 | 40 | 04 | 00 | 00 | 03 | 0A | 01 | 74 |
| 8 | 71 | 50 | 03 | 00 | 02 | 71 | 11 | 00 | 60 | 40 | FF | 00 | 83 | 00 | 00 | 00 |
| 9 | 05 | 00 | 40 | 03 | 02 | 02 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| A | 55 | AA | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| B | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| C | 00 | 00 | 04 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| D | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| E | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| F | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
|---|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|
Succeed to save the dump value to /sdcard/dump.txt
load
該模式主要是将dump出來的資料回寫到I2C裝置中。使用該指令的前提是,我們之前已經通過dump指令将資料儲存了起來。load的指令用法如下:
I2CHelper load [BUS][7-BIT ADDR][File]
假如資料是儲存在/sdcard/dump.txt檔案中,那麼我們可以執行如下指令讀取并寫回到裝置中:
adb shell ./system/bin/I2CHelper load 2 0x5D /sdcard/dump.txt
執行結果如下所示:
Bus: i2c-2
Address: 0x5D
[Comment]
00~FF: The value succeed to set
XX: The value failed to set
II: The value ignore to set,because there is error in the dump file
|---|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
|---|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|
| 0 | 00 | 15 | 00 | AF | C0 | 00 | 10 | 60 | 00 | 70 | 80 | 00 | 80 | 40 | 00 | 02 |
| 1 | 1E | 00 | 00 | 00 | 00 | 01 | 6E | 05 | 00 | 00 | 0C | 14 | 00 | 00 | 00 | 00 |
| 2 | 0E | 0E | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| 3 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| 4 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| 5 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| 6 | 00 | 00 | 01 | 00 | 00 | 04 | 04 | 08 | 15 | 00 | 0C | 32 | 0F | DA | 03 | 00 |
| 7 | FF | 06 | 06 | 10 | 00 | 04 | 00 | 08 | 40 | 04 | 00 | 00 | 03 | 0A | 01 | 74 |
| 8 | 71 | 50 | 03 | 00 | 02 | 71 | 11 | 00 | 60 | XX | FF | 00 | 83 | 00 | 00 | 00 |
| 9 | 05 | 00 | 40 | 03 | 02 | 02 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| A | 55 | AA | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| B | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| C | 00 | 00 | 04 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| D | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| E | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
| F | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
|---|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|----|
這裡稍微需要注意一下結果。如果數值是“0x00~0xFF”的話,那麼意味着是正常寫進去的;如果是“XX”,則是寫入失敗的,很可能是這個裝置的這個寄存器是不允許寫的;如果是“II”的話,意味着儲存的資料當中,該位址的資料是不正确的,是以是沒有往裝置中寫入。