i2c匯流排 && driver

來源:互聯網
上載者:User

一 1  i2c匯流排:2線式串列匯流排介面,SDA(資料線)和SCL(時鐘訊號線),SCL一般是由主裝置控制的,用來控制資料轉送的開始、結束、以及傳輸方向(即R/W)。

    2   當SCL 處於高電平時,SDA由高向低跳躍,即主裝置通過I2C發送一個開始訊號(所有從裝置處於就緒狀態);當SCL處於高電平,SDA由低向高跳躍,即主裝置通過I2C匯流排發送一個停止訊號。

    3  資料轉送時,主裝置發送從裝置的地址和相應的資料(按照位元組傳輸),掛在在這條I2C匯流排上的所有從裝置都將地址和自己的地址進行匹配,如果匹配了則將接收收據(I2C裝置的連接埠(裝置驅動中已設定好)),從裝置接收到資料後要響應主裝置,如果不做響應,主裝置會認為從裝置出現故障,則將發送停止訊號。

   4  資料轉送完畢時,主裝置發送停止訊號。

二  1  I2C匯流排驅動,每條I2C匯流排都有一個對應的驅動,匯流排驅動並不做任何操作,只是為這條匯流排提供讀寫的機制而已。真正的讀寫操作是有裝置驅動來完成的。

      2  機器上電後,先註冊I2C匯流排驅動到核心中,然後註冊I2C裝置驅動到核心(在這過程中會將裝置註冊到系統中,通常情況下在PC機中由核心提供的模型驅動來完成)。

      3  系統初始化時,調用i2c_register_board_info介面將裝置資訊添加到__i2c_board_list中,然後i2c主機(微處理器)添加adapter,adapter將掃描__i2c_board_list,逐個地將裝置註冊到匯流排上。

三  1  I2C裝置驅動,裝置驅動註冊到核心之後,會調用相應的介面來遍曆系統中所有的I2C匯流排驅動,以此來探測裝置,有可能會探測到多個裝置,因為微控制器中有可能有多個I2C匯流排介面,同時每條I2C匯流排上可以掛載多個I2C裝置(並行的掛在匯流排上),並且裝置驅動可能為多條I2C匯流排上得I2C裝置服務。

     2  I2C裝置驅動探測到I2C裝置後,會建立一個struct i2c_client結構體(屬性包括,匯流排驅動、裝置驅動,裝置資訊等)來標識該裝置,這樣匯流排驅動,裝置驅動,I2C裝置就關聯起來了。之後若有通訊時,匯流排驅動會調用i2c_master_send   && i2c_master_recv來向裝置寫資料或者從裝置讀取資料。

四  1  驅動,本質上來講是硬體裝置(或晶片)的軟體抽象。

      2  連接埠,對CPU而言即寄存器。

五   具體的源碼可以參考    核心中  driver/i2c/i2c-core.c   &&   driver/i2c/i2c-dev.c 源檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.