天天看點

IIC總線了解與拓展

**IIc總線的基礎了解與拓展**
           

常用串行總線:UART,1-wire,IIC,SPI;

UART:一條資料輸入線,一條資料輸出線,異步串行通信;

IIC:一條時鐘線,一條資料線,同步(外同步)串行通信,

SPI:一條時鐘線,一條資料輸入線,一條資料輸出線;同步(外同步)串行通信

1-wire:單線總線,隻有一條線;

以下講解IIC總線:

IIC總線:可挂多個器件,且每個器件都有唯一的位址;

資料的通訊方式是主從方式,主機聯系從機,從機被動回應主機;

在多主機系統中,同時有幾個主機企圖啟動總線傳輸資料,這時,IIc總線通過總線仲裁,決定那一台主機控制總線;

一般情況下,我們采用單主機模式;

起始信号和停止信号都由主機産生。SCL始終由主機控制,SDA不是,當SDA拉高時(釋放),各器件可拉低使用,将資料放在SDA總線上;IIC總線上傳輸的資料信号為廣義的,既包括位址信号又包括資料信号;

以下講解均為單主機,多從機的情況:(這裡的主機可了解為單片機,從機可了解為各個器件)

當總線空閑時,兩根線(SDA和SCL)都是高電平(通過上拉電阻(4.7-10k電阻)接電源)

SCL線與SDA相似,這裡以SDA線舉列:

當總線SDA上任一器件輸出低電平時,就會拉低SDA總線;

占用總線:當某一個器件将總線SDA拉低時,此時它占用了IIC總線,總線上的其他器件,就不能用IIC總線傳輸資料;

釋放總線:将SDA拉高;隻有釋放了SDA總線,其他器件才能隻用總線SDA,

總線SCL同理;

IIC總線的幾個狀态:

空閑狀态:SDA與SCL同時處于高電平

開始信号:SCL為高期間,SDA 由高到低的跳變(下降沿);

停止信号:SCL為高期間,SDA由低到高的跳變(上升沿)

應答信号(ACK ):發送器每發送一個位元組,就在時鐘脈沖9的期間釋放SDA,由接收器傳回一個應答信号(低電平有效) ;在第9個時鐘脈沖之前要将SDA拉低(從機操作),確定在第9個脈沖高電平期間,SDA是穩定的低電平(即SDA的低電平和SCL的高電平相比,開始的早,結束的晚)

資料的有效性:資料傳送時,SCL為高電平期間,SDA上的資料必須穩定;隻有SCL為低時,SDA線的電平狀态才可以變化(不包括起始信号和停止信号);

資料傳輸:每一個位對應時鐘的一個脈沖;IC與IC之間雙向傳送;

IIC的傳送與應答:

每個位元組必須是八位,資料傳送時,先傳送最高位(MSB),每一個傳送的位元組後都有一個應答位,即一幀共9位

了解:主機發送,從機接受時,從機發送非應答信号,主機結束本次傳輸,從機發送本次應答信号,繼續傳輸;

主機接受,從機發送:主機發送非應答信号,從機結束本次傳輸(釋放SDA總線,允許主機發送停止信号);主機發送應答信号,叢機繼續傳輸;

(什麼時候不想接收資料了(主機或從機),接收方就發送非應答信号,使SDA置1,釋放總線SDA)(補充:也可在應答信号下,主機發送結束信号)

總線的尋址:起始信号後的第一個位元組(七位尋址,一位讀/寫位)

開始信号完成後,應将SDA置高,友善從機使用;(也可以沒有),一般情況下,主機操作完要釋放SDA線)