• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

OK3399-C干貨筆記!I2C4掛載EEPROM其實如此簡單

2022/07/23
1307
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

作者:楊超凡

題圖:飛凌嵌入式

飛凌嵌入式OK3399-C開發(fā)板預留出了I2C4引腳接口,位于P32插針引腳上,分別是I2C4_SCL和I2C4_SDA。小編將通過本篇文章為大家列舉和說明如何使用I2C4掛載at24c08(EEPROM芯片。

飛凌嵌入式OK3399-C開發(fā)板預留出了I2C4引腳接口,位于P32插針引腳上,分別是I2C4_SCL和I2C4_SDA。小編將通過本篇文章為大家列舉和說明如何使用I2C4掛載at24c08(EEPROM)芯片。

修改結(jié)果

1、修改kernel/arch/arm64/boot/dts/rockchip/OK3399.dts,添加修改如下:

 

2、摘除at24c08模塊上的上拉電阻,飛線使用1.8V給模塊供電,接入I2C4_SCL和I2C4_SDA。

修改思路

我們要添加一個I2C設備的思路為:在設備樹中添加描述->在設備樹描述中添加對應設備驅(qū)動->設備驅(qū)動添加到內(nèi)核。

按照思路,首先要在設備樹I2C4節(jié)點下添加at24c08的設備信息。在kernel/arch/arm64/boot/dts/rockchip/OK3399-C.dts文件,找到I2C4節(jié)點如下:

 

目前是disabled的狀態(tài),并且沒有任何設備信息。添加設備信息如下:

 

如上圖,通過設備樹告訴內(nèi)核,I2C4開始使用,并且掛載了一個EEPROM設備,名字叫at24c08@50,其使用的驅(qū)動是compatible=“”;

那么我們現(xiàn)在缺少這個驅(qū)動,一般的I2C設備所使用的驅(qū)動文件對應的I2C廠家會提供,如果廠家說不需要驅(qū)動等,其實不是指的真的“不需要”驅(qū)動,而是他們的設備是可以使用通用驅(qū)動的。

本文中的設備就是這樣,與廠家溝通后表示沒有驅(qū)動文件。那么直接在內(nèi)核目錄下查找eeprom、at24這樣的字眼,找找看有沒有對應的通用驅(qū)動文件。

 

可見有kernel/drivers/misc/eeprom/at24.c文件。

查看其內(nèi)容是如何匹配使用這個驅(qū)動的,正常來說驅(qū)動文件中應該預留了.compatible= *** 作為設備樹調(diào)用該驅(qū)動的接口,只要在設備樹描述里的compatible與 驅(qū)動文件中的.compatible中描述的一致,就會匹配成功了。

但是這個at24.c中并沒有.compatible,只有一個at24_ids如下其中有”24c08”:

 

對比同目錄的at25.c文件就有.compatible沒有ids。

 

ids中描述的也是和.compatible一樣,是設備樹用來識別匹配使用的,其中的三種識別匹配條件感興趣的可以深追一下。因與本文無關(guān),不再贅述。所以找到了對應的驅(qū)動文件,返回設備樹添加描述。

 

現(xiàn)在這樣是告訴了內(nèi)核我要使用I2C4,我的I2C4下有個EEPROM設備,使用的是“24c08”驅(qū)動,但是還沒有將”24c08”這個文件給到內(nèi)核,那么接下來的目的就是把驅(qū)動編進內(nèi)核。

在kernel目錄下運行makemenuconfig,搜索at24,如下:

 

按下數(shù)字1,自動跳轉(zhuǎn)到對應選項,按下y選中,保存退出。

 

因為makemenuconfig修改的是.config文件,而編譯腳本中每次都會重新生成.config文件,所以為了讓修改生效,修改編譯腳本,使其不重新生成.config文件,如下:

 

將生成.config文件的命令注釋掉,編譯內(nèi)核,這樣就將”24c08”給到內(nèi)核,也通過設備樹告訴內(nèi)核,I2C4下有個EEPROM設備要用“24c08”。

到此,我們的常規(guī)添加設備思路就已經(jīng)完成了:在設備樹中添加描述->設備樹描述對應設備驅(qū)動->設備驅(qū)動添加到內(nèi)核。

接下來就是編譯內(nèi)核,燒寫boot鏡像到開發(fā)板,使用i2ctool的命令進行查看,這里也不贅述i2ctool命令的具體使用方法。使用命令:i2cdetect-l 、i2cdetect-y 4。

 

對應的地址已經(jīng)被驅(qū)動注冊,但是沒有生成devices下的I2C4設備,說明模塊可能沒有正常工作,查看模塊相關(guān)信息。

 

 

模塊自帶I2C4上拉電阻,因為OK3399-C底板上也帶有上拉電阻如下圖,并且是1.8V上拉,為了電平匹配,不修改底板的狀態(tài)下,使用1.8V為基準,將模塊帶有的上拉電阻摘除,使用1.8V配置。

 

再次修改設備樹,添加上時鐘描述和設備地址描述。

 

編譯后,燒寫內(nèi)核,燒寫完畢啟動開發(fā)板。

 

識別到I2C4下的設備,然后進行讀寫測試即可,如下命令:

echo"hello my world" > /sys/bus/i2c/devices/1-0050/eeprom

cat/sys/bus/i2c/devices/4-0050/eeprom

 

至此一個新的I2C EEPROM設備添加成功,對I2C設備的讀寫操作也可以通過開發(fā)板中帶有的i2ctool相關(guān)命令操作。

以上就是OK3399-C開發(fā)板I2C4掛載EEPROM的修改實例。如您遇到其他技術(shù)問題,可以撥打飛凌技服專線0312-3119192咨詢飛凌的技術(shù)支持工程師。

飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設計和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設有華東、華南技術(shù)服務中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務網(wǎng)絡。公司研發(fā)的智能設備核心平臺廣泛應用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機器人、環(huán)境監(jiān)測等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設計和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團隊,在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設有華東、華南技術(shù)服務中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務網(wǎng)絡。公司研發(fā)的智能設備核心平臺廣泛應用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機器人、環(huán)境監(jiān)測等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

秉承專業(yè)態(tài)度,專注智能設備核心平臺研發(fā)與制造,以技術(shù)研發(fā)創(chuàng)新為主導,以客戶實用化,產(chǎn)品化為目標,把握嵌入式行業(yè)的前沿發(fā)展需求,利用核心技術(shù)為客戶提供穩(wěn)定、可靠、功能優(yōu)異的高品質(zhì)產(chǎn)品。合作聯(lián)系:17713286011