博客專欄

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

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

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

           記錄一下在kernel中使用設(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è)備樹:

         一般使用硬件I2C的時(shí)候,原廠會(huì)在設(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è)備樹:

        image.png

        注意使用的gpio有沒有其他其他功能被占用,另外要添加到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)閉
        主站蜘蛛池模板: 鄂伦春自治旗| 育儿| 林州市| 中方县| 凤凰县| 华坪县| 吉首市| 屯门区| 台东市| 麟游县| 从江县| 腾冲县| 清镇市| 凤庆县| 汶川县| 武穴市| 抚顺市| 江安县| 左贡县| 揭阳市| 东阳市| 四川省| 松原市| 恩平市| 共和县| 嘉定区| 江北区| 如皋市| 义马市| 万源市| 板桥市| 桓仁| 通州市| 永丰县| 馆陶县| 阳原县| 英超| 民勤县| 夹江县| 芦溪县| 临江市|