I2C驅動載入和速率修改請查看博文【樹莓派學習筆記——I2C設備載入和速率設置】。
經過i2cdetect -l指令能夠查看樹莓派上的I2C總線,從返回的結果來看樹莓派含有兩個I2C總線,經過閱讀相關的資料,樹莓派1代使用I2C0,而樹莓派2代使用I2C1。
[plain] view plaincopyprint?
pi@raspberrypi :~$ i2cdetect -l
i2c-0 i2c bcm2708_i2c.0 I2C adapter
i2c-1 i2c bcm2708_i2c.1 I2C adapter
pi@raspberrypi:~$ i2cdetect -l i2c-0 i2c bcm2708_i2c.0 I2C adapter i2c-1 i2c bcm2708_i2c.1 I2C adapter
若總線上掛載I2C從設備,可經過i2cdetect掃描某個I2C總線上的全部設備。可經過控制檯輸入i2cdetect -y 1,結果以下所示。
[cpp] view plaincopyprint?
pi@raspberrypi :~$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
pi@raspberrypi:~$ i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: 50 51 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
說明1:-y爲一個可選參數,若是有-y參數的存在則會有一個用戶交互過程,意思是但願用戶中止使用該I2C總線。若是寫入該參數,則沒有這個交互過程,通常該參數在腳本中使用。
說明2:此處I2C總線共掛載兩個設備——PCF8574和AT24C04,從機地址0x20爲PCF8574,從機地址0x50和0x51爲AT24C04,請注意AT24C04具有兩個I2C地址,相關內容請產看參考資料6.4。
經過i2cdump指令可導出I2C設備中的全部寄存器內容,例如輸入i2cdump -y 1 0x51,可得到如下內容:
[plain] view plaincopyprint?
pi@raspberrypi :~$ i2cdump -y 1 0x51
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: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
40: ff ff ff 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: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
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 ff ff ff ff ff ff ff ff ff ff ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
c0: ff ff ff ff ff ff ff ff ff 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: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
pi@raspberrypi:~$ i2cdump -y 1 0x51 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: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 40: ff ff ff 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: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 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 ff ff ff ff ff ff ff ff ff ff ................ b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ c0: ff ff ff ff ff ff ff ff ff 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: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
i2cdump -y 1 0x51指令中,
-y 表明取消用戶交互過程,直接執行指令;
1 表明I2C總線編號;
0x51 表明I2C設備從機地址,此處選擇AT24C04的高256字節內容。
在該AT24C04的高256字節尚處於出廠默認狀態,全部的存儲地址中的內容均爲0XFF。
若是向I2C設備中寫入某字節,可輸入指令i2cset -y 1 0x50 0x00 0x13
-y 表明曲線用戶交互過程,直接執行指令
1 表明I2C總線編號
0x50 表明I2C設備地址,此處選擇AT24C04的低256字節內容
0x00 表明存儲器地址
0x13 表明存儲器地址中的具體內容
[plain] view plaincopyprint?
pi@raspberrypi :~$ i2cget -y 1 0x50 0x00
0x13
pi@raspberrypi:~$ i2cget -y 1 0x50 0x00 0x13
若是從I2C從設備中讀出某字節,可輸入執行i2cget -y 1 0x50 0x00,可獲得如下反饋結果
-y 表明曲線用戶交互過程,直接執行指令
1 表明I2C總線編號
0x50 表明I2C設備地址,此處選擇AT24C04的低256字節內容
0x00 表明存儲器地址
i2ctools是一個簡單好用的工具,該工具使得I2C設備的調試更加方便。