I2C基礎知識學習

1、I2C串行通信協議

採用串行總線技術可以使系統的硬件設計大大簡、系統的體積減小、可靠性提高。同時,系統的更改和擴展極爲容易。
單片機應用系統中常用的串行擴展總線有:IIC(Inter IC BUS)總線單總線(1-WIRE BUS)、SPI(Serial Peripheral Interface)總線等。

2、I2C總線概述

IIC(Inter-Intergrated Circuit)總線,也可以寫作I2C,主要用於同一電路板內各集成電路模塊(IC)之間的連接。採用雙向兩線制串行數據傳輸方式,簡化了IC之間的通信連接。IIC協議由PHILIPS公司於二十世紀八十年代初提出,其後,PHILIPS和其他廠商提供了種類豐富的IIC兼容芯片。目前,IIC總線標準已經成爲世界性的工業標準。各大半導體公司推出了大量的帶有IIC接口的芯片,如RAM、EEPROM、Flash ROM、A/D、D/A轉換、LED/LCD驅動、實時時鐘等。

3、I2C總線特點

在硬件結構上,它採用數據(SDA)和時鐘(SCL)兩根線來完成數據的傳輸及外圍器件的擴展,任何一個具有IIC總線接口的外圍器件,不論其功能差別有多大,都具有相同的電氣接口,因此都可以掛接在總線上,不需設計總線接口;增加和刪減系統中的外圍器件,不會影響總線和其他器件的工作,便於系統功能的改進和升級。
對各器件的尋址採用軟尋址方式,因此節點上沒有必須的片選線 ,器件地址完全取決於器件類型於單元結構,簡化了IIC系統的硬件連接。
在這裏插入圖片描述

4、I2C總線的相關術語

①主機(主控器):在IIC總線通信時,提供時鐘信號,對總線時序進行控制的器件 。主機負責總線上各個設備信息的傳輸控制,檢測並協調數據的發送和接收。主機對整個數據傳輸具有絕對的控制權,其他設備只對主機發送的控制信息作出響應。如果在IIC系統中只有一個MCU,那麼由MCU擔任主機。
②從機(被控器):在IIC總線通信中,除主機外的其他設備均爲從機。主機通過從機地址訪問從機,對應的從機作出響應,與主機通信。從機之間無法通信,任何數據傳輸都必須通過對主機進行
③地址:每一個IIC器件都有自己的地址,以供自身在從機模式下使用。在標準的IIC中定義從機地址是七位(擴展IIC允許10位地址)
④發送器:發送數據到總線的器件
⑤接收器:從總線接收數據的器件
⑥SDA(Serial Data):串行數據線
⑦SCL(Serial Clock):串行時鐘線

5、I2C總線通信協議

下圖給出一個由MCU作爲主機,通過IIC總線帶3個從機的單主機IIC總線系統。這是最常用、最典型的IIC總線連接方式。
在這裏插入圖片描述
IIC總線系統上由一條串行數據線SDA和一條串行時鐘線SCL組成。當總線空閒時,兩根線均爲高電平。連到總線上的任一器件輸出的低電平,講使總線的信號變低,即各器件的SDA及SCL都是線與關係

一、I2C總線的數據傳送

1、IIC總線是以串行方式傳輸數據,I2C總線進行數據傳送時,從數據字節的最高位開始傳送,每一個數據位在SCL上都有一個時鐘脈衝相對應。時鐘信號爲高電平期間,數據線上的數據必須保持穩定,只有在時鐘線的信號爲低電平期間,數據線上的高電平或低電平狀態才允許變化。
在這裏插入圖片描述
2、起始、終止信號和應答與非應答

起實信號(START):如下圖所示,當SCL爲高電平時,SDA由高電平向低電平跳變,主機就向從機產生開始信號。當總線空閒的時候,主機通過發送(START)信號建立通信。
在這裏插入圖片描述
停止信號(STOP):當SCL爲高電平時,SDA由低電平向高電平跳變,產生停止信號。主機通過發送停止信號,結束數據通信。

注意:
起始和終止信號都是由主機發出,在起始信號產生後,總線就處於被佔用的狀態,其他器件不能再產生開始信號。在終止信號產生後,總線就處於空閒狀態。
連接到IIC總線上的器件,若具有IIC總線的硬件接口,則很容易檢測到起始和終止信號。
在這裏插入圖片描述
應答信號(A):接收數據的IC在接收到8位數據後,向發送數據的IC發出的低電平脈衝應答。每一個數據字節後面都要跟一位應答信號,表示已經收到數據。應答信號在第9個時鐘週期(SCL=1)出現,這時發送器必須在這一時鐘位上釋放數據線,由接收設備拉低SDA電平來產生應答信號。所以,一個完整的字節數據傳輸需要9個時鐘脈衝。

非應答信號:如果接收設備保持SDA的高電平則產生非應答信號。
如果從機作爲接收方向主機發送非應答信號,主機就認爲此次數據傳輸失敗;
如果是主機作爲接收方,在從機發送器發送完一個字節數據後,發送了非應答信號,從機就認爲數據傳輸結束,並釋放SDA線,不論是以上哪種情況都會終止數據傳輸。
應答信號由接收器產生,總線上帶有IIC總線接口的器件很容易檢測到這些信號。

3、數據傳送格式

IIC總線發送器送到SDA線上的每個字節必須位8位長,傳送時高位在前,低位在後。與之對應,主器件在SCL線上產生8個脈衝,第9個脈衝低電平期間,發送器釋放SDA線,接收器把SDA線拉低,以給出一個接收確認位(即應答信號);每傳1個字節需要9個時鐘脈衝。
在這裏插入圖片描述
4、主機向從機讀寫數據的過程

IIC總線上傳送的數據是廣義的,既包括地址信號,又包括真正的數據信號。
(1)主機向從機寫入一個字節數據的操作過程
在這裏插入圖片描述
(2)主要要從從機讀出1個字節數據的操作過程
在這裏插入圖片描述
5、從機的尋址約定

爲了消除IIC總線系統中主控器與被控器的地址選擇線,最大限度簡化總線連接線,IIC總線採用了獨特的尋址約定,規定開始信號後的第一個字節爲尋址字節(從機地址),用來尋址被控器件,並規定數據傳送方向。
尋址字節各位的定義:
D7~D1維組成從機的地址;D0位是數據傳送方向位,爲“0”時表示主機向從機寫數據,爲“1”時表示主機由從機讀數據(規律:以主機看,高度低寫)。
在這裏插入圖片描述
主控器發送開始信號後,立即發送尋址字節,這時,總線上的所有器件都將尋址字節中的7位地址與自己器件地址比較。如果兩者相同,則該器件認爲被主控器尋址,併發送應答信號,被控器根據讀寫位確定自身是作爲發送器還是接收器。
從機的地址由固定部分和可編程部分組成。在一個系統中可能接入多個同類的從機,從機地址中可編程部分決定了可接入總線該類器件的最大數目。如一個從機的7位尋址位有4位是固定爲,3位是可編程位,這時僅能尋址8個同樣的器件,即可以有八個同樣的器件接入到該I2C總線系統中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章