Linux I2C 驅動的幾個概念

2021-06-09 00:23:41 字數 833 閱讀 8344

struct i2c_adapter

無法避免,我們必然碰到struct i2c_adapter這個資料結構。好在我們只是要編寫i2c裝置驅動,我們只需簡單的認為,i2c_adapter是標識乙個i2c匯流排的資料結構的,直白一點就是cpu這邊的i2c控制器,i2c主裝置。我們跟i2c裝置的所有通訊,都必須通過這個控制器進行。

struct i2c_client

用來表示乙個i2c從裝置,我們的驅動**所對應的裝置。用來表示從裝置的資料結構還有 struct i2c_board_info。為了弄清楚兩者的關係,我們先看一下struct i2c_client所包含的成員。

struct i2c_client ;

struct i2c_board_info

按照linux**的注釋,這個資料結構是用於建立裝置(i2c_client)的模板,  它提供了系統建立i2c_client的關鍵資訊。其很多欄位跟struct i2c_client存在對應關係。 

struct i2c_board_info ;

i2c_client 和 i2c_board_info 兩者都是描述乙個i2c裝置,但是它們使用的地方是不一樣的。 

i2c_client  應用於裝置驅動的各個操作函式的引數中,用於指代當前操作的裝置,而且它還包含了i2c_adapter, 指明了裝置是掛載在哪個i2c匯流排上的。i2c_client是系統動態建立的。 

i2c_board_info, 用於在**中靜態宣告i2c裝置, 這些宣告往往放在board相關的檔案中。 board的初始化函式會呼叫i2c_register_board_info(), 將宣告的靜態i2c裝置註冊到系統的中。這些資訊是生成對應的i2c_client的重要依據。

linux i2c 驅動分析

static struct platform driver s3c2410 i2c driver static struct platform driver s3c2440 i2c driver static int init i2c adap s3c init void return ret st...

linux i2c驅動總結

最近幾天一直在看i2c的驅動架構,看到目前的感覺是說明白吧又不是很透徹,說不明白吧又知道點,總之有點不明白。明白的 1 adapter驅動,i2c控制器驅動,如果要開發i2c控制器的,這部分是要實現的。這部分要填充struct i2c adapter 結構圖和struct alogrithm結構體....

linux i2c匯流排驅動

技術就是這樣,看一百遍不如做十遍。在對i2c做了乙個簡單的記錄之後發現比單看要理解更深刻,當然在記錄完i2c驅動之後,最希望自己能夠堅持自己實現at24c02的讀寫驅動與測試應用程式。由於是做記錄,少不了借用網路各種優秀資源,下圖是某部落格中找到的i2c框架。1 hardware層,cpu的i2c ...