(一)I2C學習

來源:互聯網
上載者:User

標籤:資料   art   工作   linux   代碼   時間   

一、介紹
     I2C匯流排是由Philips公司發明的一種兩線式串列匯流排,用於串連微控制器及其外圍裝置。I2C最主要的優點是簡單、有效。由於不需要額外獨立的介面,所以i2c匯流排佔用的空間非常少,減少了電路板的空間和晶片引腳的數量。i2c匯流排最初是為音頻和視頻裝置開放,現在已應用於各種裝置。


二、I2C概述
     I2C匯流排是由資料線SDA和時鐘線SCL構成的串列匯流排,可發送和接受資料,每個裝置都有唯一的地址識別。I2C運用主/從雙向通訊,器件發送資料到匯流排上則定義為發送器,器件接受資料則是接受器。主器件和從器件都可以工作於接收和發送狀態。匯流排必須由主器件(通常為微處理器)控制,主器件產生SCL控制匯流排的傳輸方向,併產生起始和停止條件。SDA上的資料狀態僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA上狀態的改變被用來表示起始和停止。
     I2C資料格式如下:
    無資料:SCL=1,SDA=1;
    開始位(Start):當SCL=1時,SDA由1向0跳變;
    停止位(Stop):當SCL=1時,SDA由0向1跳變;
    資料位元:當SCL由0向1跳變時,由發送方控制SDA,此時SDA為有效資料,不可隨意改變SDA;
    當SCL保持為0時,SDA上的資料可隨意改變;
    地址位:定義同資料位元,但只由發送器發給接收器;
    應答位(ACK):當發送方傳送完8位時,發送方釋放SDA,由接收方控制SDA,且SDA=0;
    否應答位(NACK):當發送方傳送完8位時,發送方釋放SDA,由接收方控制SDA,且SDA=1。
    當資料為單位元組傳送時,格式為:
       開始位,8位地址位(含1位讀寫位),應答,8位元據,應答,停止位。
    當資料為一串位元組傳送時,格式為:
           開始位,8位地址位(含1位讀寫位),應答,8位元據,應答,8位元據,應答,……,8位元據,應答,停止位。
     需要注意的是:
    (1)SCL一直由主器件(Master)控制,SDA依照資料傳送的方向,讀資料時由從器件(Slave)控制SDA,寫資料時由Master控制SDA。當8位元據傳送完畢之後,應答位或者否應答位的SDA控制權與資料位元傳送時相反。
    (2)開始位“Start”和停止位“Stop”,只能由Master來發出。
    (3)地址的8位傳送完畢後,成功配置地址的Slave裝置必鬚髮送“ACK”。否則否則一定時間之後Master視為逾時,將放棄資料傳送,發送“Stop”。
    (4)當寫資料的時候,Master每發送完8個資料位元,Slave裝置如果還有空間接受下一個位元組應該回答“ACK”,Slave裝置如果沒有空間接受更多的位元組應該回答“NACK”,Master當收到“NACK”或者一定時間之後沒收到任何資料
       將視為逾時,此時Master放棄資料傳送,發送“Stop”。
    (5)當讀資料的時候,Slave裝置每發送完8個資料位元,如果Master希望繼續讀下一個位元組,Master應該回答“ACK”以提示Slave準備下一個資料,如果Master不希望讀取更多位元組,Master應該回答“NACK”以提示Slave裝置准
       備接收Stop訊號。
    (6)當Master速度過快Slave端來不及處理時,Slave裝置可以拉低SCL不放(SCL=0將發生“線與”)以阻止Master發送更多的資料。此時Master將視情況減慢或結束資料傳送。
    


三、I2C驅動架構
Linux的I2C體繫結構分為3個組成部分:
1.I2C核心
I2C 核心提供了I2C匯流排驅動和裝置驅動的註冊、登出方法,I2C通訊方法(即“algorithm”)上層的、與具體適配器無關的代碼以及探測裝置、檢測裝置地址的上層代碼等。
2.I2C匯流排驅動
I2C匯流排驅動是對I2C硬體體繫結構中適配器端的實現,適配器可由CPU控制,甚至直接整合在CPU內部。
I2C匯流排驅動主要包含了I2C適配器資料結構i2c_adapter、I2C適配器的algorithm資料結構i2c_algorithm和控制I2C適配器產生通訊訊號的函數。
經由I2C匯流排驅動的代碼,我們可以控制I2C適配器以主控方式產生開始位、停止位、讀寫周期,以及以從裝置方式被讀寫、產生ACK等。
3.I2C裝置驅動
I2C裝置驅動是對I2C硬體體繫結構中裝置端的實現,裝置一般掛接在受CPU控制的I2C適配器上,通過I2C適配器與CPU交換資料。
I2C裝置驅動主要包含了資料結構i2c_driver和i2c_client,我們需要根據具體裝置實現其中的成員函數。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.