博客專欄

EEPW首頁(yè) > 博客 > Linux kernel 使能I2C驅(qū)動(dòng)

Linux kernel 使能I2C驅(qū)動(dòng)

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

   記錄一下在kernel中使用設(shè)備樹(shù)使能I2C驅(qū)動(dòng)并在/dev目錄下顯示i2c-0節(jié)點(diǎn)的方法。


第一步:menuconfig

        在內(nèi)核源碼目錄下,我們先進(jìn)行圖形化界面配置,使用如下命令:

    make menuconfig

如圖,在路徑Device Drivers > I2C support下,進(jìn)行I2C的選項(xiàng)選擇。其中第三項(xiàng):I2C device interface要記得勾選,否則在/dev目錄下不會(huì)生成I2C節(jié)點(diǎn)!






1706952508367143.png

設(shè)備樹(shù):

 一般使用硬件I2C的時(shí)候,原廠會(huì)在設(shè)備樹(shù)的dtsi文件中加入該節(jié)點(diǎn)的信息,但status狀態(tài)是disabled,所以我們需要在所使用的dts文件中使能該節(jié)點(diǎn)。

        原廠寫好的節(jié)點(diǎn):

image.png

用戶需要自己添加的信息:

image.png

將狀態(tài)status賦值為okay一般就可以結(jié)束了。我這里I2C下掛了一個(gè)RTC芯片,所以我添加了RTC的節(jié)點(diǎn)。


第三步:編譯、下載、測(cè)試

        在kernel啟動(dòng)log中可以看到有I2C驅(qū)動(dòng)控制器打印的信息

在系統(tǒng)中 ls /dev查看是否存在I2C節(jié)點(diǎn):
1706952864704097.png

可以看到,i2c-0節(jié)點(diǎn)存在,此時(shí)就可以使用open,write,read應(yīng)用函數(shù)去操作節(jié)點(diǎn)啦。


        關(guān)鍵注意點(diǎn):menuconfig選擇配置項(xiàng)的時(shí)候,一定記得要選擇I2C device interface,否則/dev下找不到該節(jié)點(diǎn)!

附加記錄(linux下gpio模擬i2c)

menuconfig:

1706952942912121.png












 設(shè)備樹(shù):

image.png

注意使用的gpio有沒(méi)有其他其他功能被占用,另外要添加到alise節(jié)點(diǎn)。

gpios兩個(gè)引腳的順序:

1706953117150863.png


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



關(guān)鍵詞: I2C

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉