i2c-tools是一個開源的linux下I2C設備測試工具,在Ubuntu或者ARM板環境下都能使用,下面介紹一下arm9下的I2C-tools工具的交叉編譯和使用測試。
步驟一:獲取i2c-tools源碼:
git clone https://github.com/ev3dev/i2c-tools.git
步驟二 :交叉編譯i2c-tools:
make CC=arm-linux-gcc
編譯完成後會在tools路徑下生成四個可執行工具程序,i2cdetect、i2cdump、i2cget、i2cset
步驟三:將可執行程序拷貝到板子上運行測試
我的是I-MAX287A的板子,運行後效果如下:
(1)查找i2c從設備的地址:
指令:
./i2cdetect -l
此指令可以列出板子上的i2c設備名稱
./i2cdetect -r -y 1
此指令可以掃描i2c總線上所有從設備的地址,這裏顯示的0x18這個地址,其實是在MCU作爲I2C從設備時初始化的0x30,可以看出i2c-tools掃描設備時地址是實際地址左移1位得到的。
(2)向I2C從設備寫數據
指令:
./i2cdump -f -y 1 0x18
該指令會向I2C-1總線的0x30地址循環寫256個字節的數據,如下圖中左側是MCU作爲I2C從設備接收的結果。
(3)讀取數據
指令:
./i2cget -f -y 1 0x18 0x00 w
爲了便於查看現象,首先往設從設備的緩存區i2c寫一些數據,然後通過i2c-tools的i2cget來單個字節讀取
如果不知道運行指令的參數代表什麼意思,可以用--help來獲取每個運行程序的幫助。