當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]IIC總線是PHLIPS公司推出的一種串行總線,是具備多主機(jī)系統(tǒng)所需的包括總線裁決和高低速器件同步功能的高性能串行總線。

1. IIC總線基本概念

1.1總線概述

IIC總線是PHLIPS公司推出的一種串行總線,是具備多主機(jī)系統(tǒng)所需的包括總線裁決和高低速器件同步功能的高性能串行總線。

1.2總線結(jié)構(gòu)

IIC總線是由數(shù)據(jù)線SDA和時(shí)鐘線SCL構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在CPU與被控IC之間、IC與IC之間可以進(jìn)行雙向傳送,最高傳送速率100kbps。各種被控制電路均并聯(lián)在這兩條總線上。

2. IIC總線協(xié)議

2.1數(shù)據(jù)傳輸中的主/從機(jī)

在多主機(jī)系統(tǒng)中,可能同時(shí)有幾個(gè)主機(jī)企圖啟動(dòng)總線傳送數(shù)據(jù)。為了避免混亂, IIC總線要通過總線仲裁,以決定由哪一臺(tái)主機(jī)控制總線。連在每一個(gè)總線上的電路和模塊都有一個(gè)唯一地址,它們彼此之間只有簡單的Master/Slaver關(guān)系。

主機(jī):控制時(shí)鐘線,產(chǎn)生啟動(dòng)信號、時(shí)鐘信號、停止信號??刂凭€上的發(fā)送和接收節(jié)奏。

從機(jī):按SCL線上的時(shí)鐘接收SDA線上的數(shù)據(jù)或發(fā)送數(shù)據(jù)到SDA線上。

2.2協(xié)議概述

IIC總線僅占用系統(tǒng)的兩個(gè)I/O口,一條作為串行數(shù)據(jù)線SDA,一條作為串行時(shí)鐘線SCL,線上外加上拉電阻,在不傳數(shù)據(jù)時(shí)SCL、 SDA總保持高電平。IIC總線通過上拉電阻接電源正極。當(dāng)總線空閑時(shí),兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號變低,即各器件的SDA及SCL都是線“與”關(guān)系。CPU發(fā)出的控制信號分為地址碼和控制量兩部分,地址碼用來選址,即接通需要控制的電路,確定控制的種類;控制量決定該調(diào)整的類別(如對比度、亮度等)及需要調(diào)整的量。這樣,各控制電路雖然掛在同一條總線上,卻彼此獨(dú)立,互不相關(guān)。

2.3時(shí)序圖

完整的數(shù)據(jù)傳輸過程時(shí)序圖:

2.4信號類型

(1)開始信號:SCL為高電平時(shí),SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。

(2)結(jié)束信號:SCL為高電平時(shí),SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。

(3)應(yīng)答信號:接收數(shù)據(jù)的IC在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU向受控單元發(fā)出一個(gè)信號后,等待受控單元發(fā)出一個(gè)應(yīng)答信號,CPU接收到應(yīng)答信號后,根據(jù)實(shí)際情況判斷是否繼續(xù)傳遞信號。若未收到應(yīng)答信號,由判斷為受控單元出現(xiàn)故障。

(4)總線空閑:SCL和SDA都保持高電平的狀態(tài)

(5)總線忙:在數(shù)據(jù)傳送開始以后,SCL為高電平的時(shí)候,SDA的數(shù)據(jù)必須保持穩(wěn)定,只有當(dāng)SCL為低電平的時(shí)候才允許SDA上的數(shù)據(jù)改變.

這些信號中,起始信號是必需的,結(jié)束信號和應(yīng)答信號,都可以不要。IIC總線有兩根信號線,一根為SDA(數(shù)據(jù)線),一根為SCL(時(shí)鐘線)。任何時(shí)候時(shí)鐘信號都是由主控器件產(chǎn)生。

3. IIC總線數(shù)據(jù)傳輸格式

3.1字節(jié)傳送與應(yīng)答:

每一個(gè)字節(jié)必須保證是8位長度。數(shù)據(jù)傳送時(shí),先傳送最高位(MSB),每一個(gè)被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位(即一幀共有9位)。

3.2數(shù)據(jù)幀格式

IIC總線上傳送的數(shù)據(jù)信號是廣義的,既包括地址信號,又包括真正的數(shù)據(jù)信號。(注:下圖中有陰影部分表示數(shù)據(jù)由主機(jī)向從機(jī)傳送,無陰影部分則表示數(shù)據(jù)由從機(jī)向主機(jī)傳送。A表示應(yīng)答, A非 表示非應(yīng)答(高電平)。S表示起始信號,P表示終止信號。)

A. 主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個(gè)傳送過程中不變

B. 主機(jī)在第一個(gè)字節(jié)后,立即從從機(jī)讀數(shù)據(jù)

C. 傳送過程中,當(dāng)需改變傳送方向時(shí),起始信號和從機(jī)地址都被重復(fù)產(chǎn)生一次,但兩次讀/寫方向位正好反相。

4. IIC總線多主機(jī)競爭的仲裁

總線上可能掛接有多個(gè)器件,有時(shí)會(huì)發(fā)生兩個(gè)或多個(gè)主器件同時(shí)想占用總線的情況,這種情況叫做總線競爭。IIC總線具有多主控能力,可以對發(fā)生在SDA線上的總線競爭進(jìn)行仲裁,其仲裁原則是這樣的:當(dāng)多個(gè)主器件同時(shí)想占用總線時(shí),如果某個(gè)主器件發(fā)送高電平,而另一個(gè)主器件發(fā)送低電平,則發(fā)送電平與此時(shí)SDA總線電平不符的那個(gè)器件將自動(dòng)關(guān)閉其輸出級??偩€競爭的仲裁是在兩個(gè)層次上進(jìn)行的。首先是地址位的比較,如果主器件尋址同一個(gè)從器件,則進(jìn)入數(shù)據(jù)位的比較,從而確保了競爭仲裁的可靠性。由于是利用IIC總線上的信息進(jìn)行仲裁,因此不會(huì)造成信息的丟失。

為何識別到“0”將丟失仲裁呢?因?yàn)閷τ贠D門,只能驅(qū)動(dòng)到低電平,釋放總線只能通過不驅(qū)動(dòng)總線釋放,停止驅(qū)動(dòng)即產(chǎn)生“1”,但是發(fā)現(xiàn)總線還是“0”,這說明還有主機(jī)在跟自己競爭總線使用權(quán),自己線驅(qū)動(dòng)到“1”,確檢測到“0”,那代表自己已經(jīng)失去了仲裁。

• 主機(jī)只能在總線空閑時(shí)啟動(dòng)傳送。兩個(gè)或多個(gè)主機(jī)可能在起始條件的最小持續(xù)時(shí)間tHD;STA 內(nèi)產(chǎn)生一個(gè)起始條件,結(jié)果在總線上產(chǎn)生一個(gè)規(guī)定的起始條件。

• 當(dāng)SCL 線是高電平時(shí),仲裁在SDA 線發(fā)生;這樣,在其他主機(jī)發(fā)送低電平時(shí),發(fā)送高電平的主機(jī)將斷開它的數(shù)據(jù)輸出級,因?yàn)榭偩€上的電平與它自己的電平不相同。然后,進(jìn)一步獲得其的判定條件:

• 仲裁可以持續(xù)多位。首先是比較地址位。如果每個(gè)主機(jī)都試圖尋址同一的器件,仲裁會(huì)繼續(xù)比較數(shù)據(jù)位(假設(shè)主機(jī)是發(fā)送器),或者比較響應(yīng)位(假設(shè)主機(jī)是接收器)。

• IIC總線的地址和數(shù)據(jù)信息由贏得仲裁的主機(jī)決定,在仲裁過程中不會(huì)丟失信息。丟失仲裁的主機(jī)可以產(chǎn)生時(shí)鐘脈沖直到丟失仲裁的該字節(jié)末尾。

• 在串行傳輸過程中時(shí),一旦有重復(fù)的起始條件或停止條件發(fā)送到IIC 總線的時(shí)侯,仲裁過程仍在進(jìn)行。如果可能產(chǎn)生這樣的情況,有關(guān)的主機(jī)必須在幀格式相同位置發(fā)送這個(gè)重復(fù)起始條件或停止條件。

• 此外,如果主機(jī)也結(jié)合了從機(jī)功能,而且在尋址階段丟失仲裁,它很可能就是贏得仲裁的主機(jī)在尋址的器件。那么,丟失仲裁的主機(jī)必須立即切換到它的從機(jī)模式。

• IIC總線的控制只由地址或主機(jī)碼以及競爭主機(jī)發(fā)送的數(shù)據(jù)決定,沒有中央主機(jī),總線也沒有任何定制的優(yōu)先權(quán)。

5.時(shí)鐘信號的同步

在 IIC總線上傳送信息時(shí)的時(shí)鐘同步信號是由掛接在SCL線上的所有器件的邏輯“與”完成的。SCL線上由高電平到低電平的跳變將會(huì)影響到這些器件,一旦某個(gè)器件的時(shí)鐘信號下跳為低電平,將使SCL線一直保持低電平,使SCL線上的所有器件開始低電平期。此時(shí),低電平周期短的器件的時(shí)鐘由低至高的跳變并不能影響SCL線的狀態(tài),于是這些器件將進(jìn)入高電平等待的狀態(tài)。當(dāng)所有器件的時(shí)鐘信號都上跳為高電平時(shí),低電平期結(jié)束,SCL線被釋放返回高電平,即所有的器件都同時(shí)開始它們的高電平期。其后,第一個(gè)結(jié)束高電平期的器件又將SCL線拉成低電平。這樣就在SCL線上產(chǎn)生一個(gè)同步時(shí)鐘??梢姡瑫r(shí)鐘低電平時(shí)間由時(shí)鐘低電平期最長的器件確定,而時(shí)鐘高電平時(shí)間由時(shí)鐘高電平期最短的器件確定。

6.總線功能特點(diǎn)及應(yīng)用

6.1 IIC總線功能特點(diǎn)

IIC總線最主要的優(yōu)點(diǎn)是其簡單性和有效性。由于接口直接在組件之上,因此IIC總線占用的空間非常小,減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本??偩€的長度可高達(dá)25英尺,并且能夠以10Kbps的最大傳輸速率支持40個(gè)組件。

IIC總線的另一個(gè)優(yōu)點(diǎn)是,它支持多主控,其中任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為主總線。一個(gè)主控能夠控制信號的傳輸和時(shí)鐘頻率。當(dāng)然,在任何時(shí)間點(diǎn)上只能有一個(gè)主控。

6.2總線應(yīng)用

目前有很多半導(dǎo)體集成電路上都集成了IIC接口。帶有IIC接口的單片機(jī)有:CYGNAL的 C8051F0XX系列,三星的S3C24XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外圍器件如存儲(chǔ)器、監(jiān)控芯片等也提供I²C接口。

7.利用51單片機(jī)模擬IIC總線協(xié)議

7.1所需器件

AT89C51單片機(jī)、24C02存儲(chǔ)器、6kΩ電阻兩個(gè)、導(dǎo)線若干

7.2接線方式

利用AT89C51的IO口模擬實(shí)現(xiàn)IIC總線協(xié)議進(jìn)行與24C02存儲(chǔ)器的通信,其電路圖如下:

7.3程序代碼

下面是使用AT89C51的IO口模擬實(shí)現(xiàn)IIC總線協(xié)議進(jìn)行通信的程序:

#include

#include

#define uc unsigned char

sbit SDA=P1^0;

sbit SCL=P1^1;

bit NackFlag;

void delay()

{

_nop_();

_nop_();

_nop_();

_nop_();

}

void DelayX1ms(uc count)

{

uc i,j;

for(i=0;i

for(j=0;j<120;j++)

;

}

void start() //啟動(dòng)

{

SDA=1;

delay();

SCL=1;

delay();

SDA=0;

delay();

SCL=0;

}

void stop() //停止

{

SDA=0;

delay();

SCL=1;

delay();

SDA=1;

delay();

SCL=0;

}

void ChkAck() //應(yīng)答

{

SDA=1;

SCL=1;

NackFlag=0;

if(SDA==1)

NackFlag=1;

SCL=0;

}

void send8bit(uc num)

{

uc i=8;

uc temp;

temp=num;

for(i=8;i>0;i--)

{

SDA=temp&0x80;

SCL=1;

delay();

SCL=0;

temp=temp<<1;

}

}

void sendbyte(uc num,uc addr)

{

start();

send8bit(0xa0);

ChkAck();

send8bit(num);

ChkAck();

stop();

DelayX1ms(10);

}

void main(void)

{

uc i;

for (i=0;i<0xff;i++)

{

sendbyte(i,i);

DelayX1ms(5);

}

while(1);

}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉