嵌入式linux驅動-I2C筆記
一、開發環境
1、核心:Linux 2.6.22.6;
2、JZ2440v3
3、ubuntu 9.10
二、過程
參考drivers/i2c/chips/eeprom.c,drivers/i2c/chips/ds1374.c。
1.分配一個i2c_driver結構體
2.設定i2c_driver結構體
設定兩個重要的成員
.attach_adapter=xxx_adapter //在函式xxx_adapter會呼叫 i2c_probe(adap,裝置地址addr,發現這個裝置後要呼叫的函式function)
.detach_client=xxx_client
3.註冊上面分配的i2c_driver結構體變數。使用函式i2c_add_driver,在入口函式裡註冊。註冊後,裝載驅動時程式會呼叫xxx_adapter函式,xxx_adapter函式中會呼叫i2c_probe(adap,addr,function)函式,確認裝置地址為addr是否有裝置(通過是否會回發ACK訊號確認),如果裝置存在則執行function函式。解除安裝驅動時會呼叫xxx_client函式,在xxx_adapter中註冊分配的東西要在這解除安裝釋放。
4.構造i2c_client結構體,收發資料會用到。例子中這個i2c_client結構體的變數
i2c_client結構體重要成員
.address //裝置地址
.adapter //指向介面卡
.driver //指向i2c_driver結構體
使用:i2c-attach_client(i2c_client結構體變數)
5.編寫xxx_read,xxx_write函式。
其中要用到i2c_msg結構體。這個結構體中可以用設定資料傳輸三要素:源地址、目的地址、長度,操作型別(讀、寫)等。設定好三要素還有讀寫,再呼叫