<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > Linux I2C總線(xiàn)驅動(dòng)調試之i2c-tools工具使用

Linux I2C總線(xiàn)驅動(dòng)調試之i2c-tools工具使用

發(fā)布人:電子禪石 時(shí)間:2024-01-28 來(lái)源:工程師 發(fā)布文章

i2c-tools介紹
在嵌入式linux開(kāi)發(fā)中,有時(shí)候需要確認i2c硬件是否正常連接,設備是否正常工作,設備的地址是多少等等,這里我們就需要使用一個(gè)用于測試I2C總線(xiàn)的工具——i2c-tools。

i2c-tools是一個(gè)專(zhuān)門(mén)調試i2c的開(kāi)源工具,可獲取掛載的設備及設備地址,還可以讀寫(xiě)I2C設備寄存器。調試新的設備驅動(dòng)時(shí),難免要反復修改寄存器,然后看結果現象。傳統的做法是修改驅動(dòng)代碼寄存器值->編譯->下載->運行->看結果。這一過(guò)程比較費時(shí)間,而每次需要改的可能只是 1 個(gè) bit,這種情況下 i2c-tools 簡(jiǎn)直就是神器。

下面我們就對這個(gè)工具的安裝和使用做個(gè)簡(jiǎn)單介紹。

i2c-tools 官方說(shuō)明:

https://i2c.wiki.kernel.org/index.php/I2C_Tools

工具源碼下載地址:

https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/

i2c-tools工具包括:

i2cdetect:用于掃描 i2c 總線(xiàn)上的設備,并顯示地址。
i2cset:設置i2c設備某個(gè)寄存器的值。
i2cget:讀取i2c設備某個(gè)寄存器的值。
i2cdump:讀取某個(gè)i2c設備所有寄存器的值。
i2ctransfer:一次性讀寫(xiě)多個(gè)字節。

工具命令介紹:
    i2cdetect:檢測i2c芯片
    i2cdump:查看寄存器值
    i2cget:獲取單個(gè)寄存器值(8位寄存器)
    i2cset:設置單個(gè)寄存器值(8位寄存器)
    i2ctransfer:一次傳輸多字節數據(16位寄存器)
參數介紹:
    -y:禁用交互模式。
    -f:強制訪(fǎng)問(wèn)設備。
    -r:寫(xiě)入后立即讀回該值。

注:i2c-tools 原理是通過(guò)操作  /dev 路徑 i2c-× 設備文件完成,因此你的 kernel 必須開(kāi)啟了 CONFIG_I2C_CHARDEV 配置,否者會(huì )報找不到節點(diǎn)。  

在設備上也可以通過(guò)目標板終端輸入:ls /sys/bus/i2c/devices查看i2c設備節點(diǎn)信息??吹降膇2c-0,i2c-1,指的是i2c總線(xiàn)節點(diǎn),i2c從設備都是掛載在總線(xiàn)節點(diǎn)下的。

工具編譯
工具源碼,使用以下命令進(jìn)行編譯

make CC=arm-linux-gnueabihf-gcc USE_STATIC_LIB=1

USE_STATIC_LIB 的意思是使用靜態(tài)編譯。編譯完成后,會(huì )在tools目錄下產(chǎn)生i2cdetect,i2cdump,i2cget,i2cset,i2ctransfer五個(gè)產(chǎn)物。將這些可執行文件拷貝到設備上。

不加 USE_STATIC_LIB 編譯選項,會(huì )使用動(dòng)態(tài)鏈接的方式編譯。編譯完成后需要拷貝i2c-tools-4.3/lib 目錄下的libi2c.so.0動(dòng)態(tài)庫到設備上的/usr/bin 目錄下。編譯會(huì )生成五個(gè)工具:i2cdetect、i2cset、i2cget、i2cdump、i2ctransfer,拷貝到開(kāi)發(fā)板中就可以使用。

i2c-tools使用方法
i2cdetect:查詢(xún)開(kāi)發(fā)板包含的i2c總線(xiàn)和外設,看以下命令:

探測開(kāi)發(fā)板包含的i2c總線(xiàn)。

i2cdetect -y -r 0

探測i2c-0總線(xiàn)上掛載的外設,參數-y表示取消交互模式,直接執行命令。

i2cdetect -y -r 1

探測i2c-1總線(xiàn)上掛載的外設,UU表示該設備已經(jīng)被Linux內核驅動(dòng)占用,探測程序會(huì )略過(guò)該設備。下圖所示,從設備地址分別是0x0c和0x1a。 UU表示設備地址的從設備被驅動(dòng)占用,卸載對應的驅動(dòng)后,UU就會(huì )變成數據。-- 表示該地址被檢測,但是沒(méi)有應答。

 i2cset:設置i2c設備單個(gè)寄存器的值,看幾個(gè)命令:

i2cset -y -f 0 0x57 0x00 0x10i2cset -y -f 0 0x57 0x01 0x11i2cset -y -f 0 0x57 0x02 0x12i2cset -y -f 0 0x57 0x03 0x13

下面以i2cset -y -f 0 0x57 0x00 0x10為例進(jìn)行分析
參數含義:
-y 取消交互模式,直接執行命令
-f 強制訪(fǎng)問(wèn)該設備
0 表示i2c總線(xiàn)編號
0x57 表示i2c設備地址
0x00 表示寄存器地址
0x10 表示待寫(xiě)入的值
i2cget:查看i2c設備單個(gè)寄存器的值,看幾個(gè)命令:
 

i2cget -y -f 0 0x57 0x00

以 i2cget -y -f 0 0x57 0x00為例進(jìn)行分析,參數含義:
-y 取消交互模式,直接執行命令
-f 強制訪(fǎng)問(wèn)該設備
0 表示i2c總線(xiàn)編號
0x57 表示i2c設備地址
0x00 表示寄存器地址

 i2cdump:查看i2c設備所有寄存器的值,看以下命令:

i2cdump -y -f 1 0x32

參數含義:
-y 取消交互過(guò)程,直接執行命令
-f 強制訪(fǎng)問(wèn)該設備
1 表示i2c總線(xiàn)編號
0x32 表示i2c設備地址

其他資源
Linux內核i2c-tools命令

i2c-tools工具的安裝和使用簡(jiǎn)單介紹-電子發(fā)燒友網(wǎng)

https://www.cnblogs.com/liuwanpeng/p/7346558.html

Linux下I2C-tools工具使用_i2cdetect_深海帶鯉魚(yú)的博客-CSDN博客

嵌入式Linux驅動(dòng)開(kāi)發(fā)(I2C專(zhuān)題)(四)_嵌入式學(xué)習者。的博客-CSDN博客 

摘自:https://blog.csdn.net/yyz_1987/article/details/131953108


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: I2C

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>