I2C驅(qū)動情景分析_第1頁
I2C驅(qū)動情景分析_第2頁
I2C驅(qū)動情景分析_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、內(nèi)核版本:linux-3.4.2直奔主題,在Linux下怎樣增加一個I2C設(shè)備呢?假設(shè)手上有一塊從淘寶上買來的開發(fā)板,我要在開發(fā)板的I2C總線上增加一個從設(shè)備(如 at24c08),那么我要怎樣寫這個“I2C設(shè)備驅(qū)動,讓應(yīng)用程序可以訪問at24c08呢? 先來看一個最簡單的i2c設(shè)備驅(qū)動:static struct i2c_board_info at24cxx_info =所支持的i2c設(shè)備的列表I2C_BOARD_INFO(at24c08”, 0 x50),一項(xiàng)代表一個支持的設(shè)備,它的名字叫做at24c08,器件地址是 0 x50);static struct i2c_client *at2

2、4cxx_client;static int at24cxx_dev_init(void)struct i2c_adapter *i2c_adap;分配一個適配器的指針i2c_adap = i2c_get_adapter(0);調(diào)用core層的函數(shù),獲得一個i2c總線。這里我們已經(jīng)知道新增的器件掛接在編號為0的i2c總線上at24cxx_client = i2c_new_device(i2c_adap, &at24cxx_info); / 把 i2c 適配器和新增的I2C器件關(guān)聯(lián)起來,這個用了 i2c總線0,地址是0 x50。這就組成了一個客戶端 at24cxx_client i2c_put_

3、adapter(i2c_adap);return 0;static void at24cxx_dev_exit(void)i2c_unregister_device(at24cxx_client);module_init(at24cxx_dev_init);module_exit(at24cxx_dev_exit);從上面的程序可以看到,寫一個i2c設(shè)備驅(qū)動程序,與寫普通的字符驅(qū)動基本一樣。特別之處是 它調(diào)用了 i2c的core層的函數(shù),以獲得對i2c總線的控制。因?yàn)橛玫氖情_發(fā)板,板上的與soc芯片 (一般來說就是arm的芯片)i2c總線驅(qū)動一般都做好了,直接調(diào)用core層的函數(shù)就可以控制so

4、c 的i2c模塊了。也就是說,寫i2c設(shè)備驅(qū)動不需要關(guān)注arm內(nèi)部的i2c模塊的寄存器,我們需要關(guān) 注的是設(shè)備(at24c08)的寄存器以及它的datasheet對時序的要求。其實(shí),添加i2c設(shè)備的方法很 靈活。根據(jù) Linux 的官方文檔linux-3.4.2Documentationi2cinstantiating-devices,添 加i2c設(shè)備的方法總結(jié)有4種:i2c_register_board_info:根據(jù)總線編號、設(shè)備名字(at24c08)、設(shè)備地址(0 x50)注冊 一個字符驅(qū)動。這種方法最簡單、最粗暴,最貼近平時在開片機(jī)上開發(fā)i2c器件的。i2c_new_device:根據(jù)

5、i2c總線的編號,聲明一個i2c設(shè)備:這種方法就是上面例子用的方法。 這種方法也簡單,但是需要事先知道器件掛接在哪條總線上。對于設(shè)備,還實(shí)現(xiàn)知道了設(shè)備地址0 x50, 總線適配器也支持名字為、at24c08”的設(shè)備i2c_new_probed_device:從用戶空間實(shí)例化一個器件:這個方法相當(dāng)智能快速,如下輸入指令,即可增加一個i2c設(shè)備,同 時增加了對應(yīng)的設(shè)備文件。# echo eeprom 0 x50 /sys/bus/i2c/devices/i2c-3/new_device根據(jù)英文文檔的標(biāo)題,添加i2c設(shè)備有稱之為、i2c設(shè)備的實(shí)例化。從上述可以知道,在實(shí)例化一個i2c設(shè)備之前,除了有對應(yīng)的驅(qū)動支持

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論