飛利浦發(fā)明的I2C 總線(xiàn),是一種簡(jiǎn)單的雙向雙線(xiàn)同步串行總線(xiàn)。在連接到總線(xiàn)的設備之間傳送數據只需要兩根線(xiàn)。
主設備用于打開(kāi)設備進(jìn)行傳輸,并啟動(dòng)總線(xiàn)進(jìn)行數據傳輸。此時(shí),任何尋址設備都被視為從設備??偩€(xiàn)上,主從、發(fā)送和接收數據的關(guān)系并不是恒定不變的,但它確實(shí)依賴(lài)于當時(shí)的數據傳輸方向。如果主機希望向從設備發(fā)送數據,則首先尋址從設備,然后主動(dòng)向從設備傳輸數據,最后結束數據傳輸;如果主機希望從從設備接收數據,則主設備首先尋址從設備。然后,主機在終止接收操作之前接收設備發(fā)送的數據。在這些條件下。時(shí)間時(shí)鐘由主機產(chǎn)生,數據傳輸由主機終止。
在 1980 年,開(kāi)始研發(fā)通訊總線(xiàn),以連接各種低速設備(飛利浦芯片)。
1982年,最初的版本使用100KHz的通信速率,提供7位地址,并將總線(xiàn)上的設備數量限制為112個(gè)(有幾個(gè)保留地址)。
1992年,發(fā)布了第一個(gè)規范,增加了400kHz的快速模式和擴展的10位地址空間。
1998年,隨著(zhù)技術(shù)的進(jìn)步,對通信速率的要求越來(lái)越高,達到了高速的3.4 MHz,后來(lái)又升級到5 MHz,并采用差分信號來(lái)提高抗噪性。
I2C :內部集成電路,字面意思是集成電路之間,是 I2C 總線(xiàn)的縮寫(xiě)。
I2C只需要兩根線(xiàn),可支持多達1008個(gè)從設備進(jìn)行同步串行通信。
I2C
I2C雙線(xiàn)信號
每個(gè)I2C 總線(xiàn)由兩個(gè)信號組成: SCL 時(shí)鐘和 SDA 數據。本總線(xiàn)主控器在任何時(shí)候都產(chǎn)生時(shí)鐘信號。
I2C總線(xiàn)驅動(dòng)程序與和spi不同,是開(kāi)路漏(如果您不知道開(kāi)漏意味著(zhù)什么),這意味著(zhù)他們可以將適當的信號線(xiàn)畫(huà)得低一些,但不能把它開(kāi)高。
當沒(méi)有設備將信號壓低時(shí),每個(gè)信號線(xiàn)上的上拉電阻將信號恢復到高電平。
I2C信號
信號電平
的I2C 總線(xiàn)信號電平通常在5到3.3伏之間??偩€(xiàn)上的設備,如果與這兩個(gè)級別兼容,就可以直接利用。
如果信號電壓相差很大(5V和2.5V),或者電平不兼容,電平轉換是必不可少的。
1. 總線(xiàn)容量和驅動(dòng)能力
由于I2C 總線(xiàn)的外圍擴展器件均為 CMOS 器件,且總線(xiàn)具有足夠的電流驅動(dòng)能力,因此總線(xiàn)上擴展節點(diǎn)的數目由電容負載決定,而不是由電流負載能力決定。
總線(xiàn)上的每個(gè)實(shí)際節點(diǎn)設備在其總線(xiàn)接口處都有一個(gè)等效電容。由于類(lèi)似電容,總線(xiàn)傳輸會(huì )延遲,造成數據傳輸錯誤。
總線(xiàn)負載能力通常為400pF,每個(gè)I2C設備都有自己的電容值,通常不超過(guò)20pF,從中可以估計總線(xiàn)長(cháng)度和節點(diǎn)數量。由于總線(xiàn)上的每一個(gè)外圍設備都有一個(gè)設備地址,設備地址也限制了總線(xiàn)上外圍設備的擴展。
2. I2C總線(xiàn)的電氣結構
內部I2C總線(xiàn)接口是一個(gè)雙向傳輸電路,如圖所示,由于I2C總線(xiàn)是一種雙向同步串行總線(xiàn)。因為總線(xiàn)端口的輸出具有開(kāi)漏結構,上拉電阻必須安裝在總線(xiàn)上。電源電壓、SDA、SCL和總線(xiàn)串聯(lián)電阻都受到上拉電阻,如需選擇,請參閱適用的數據表,其范圍通常為4.7K至10K。
典型應用
3. 每個(gè)節點(diǎn)都有一個(gè)固定的節點(diǎn)地址。
因為I2C總線(xiàn)是一個(gè)雙向同步串行系統,總線(xiàn)上的一個(gè)單片機可以作為主節點(diǎn),其設備地址由軟件給出并保存在總線(xiàn)的地址寄存器中,這被稱(chēng)為主設備的從地址。單片機作為多主總線(xiàn)系統中的從節點(diǎn)時(shí),它的從地址是有意義的,從而使總線(xiàn)上的所有外圍設備都有標準化的設備地址。
4. I2C總線(xiàn)定時(shí)
在I2C接口上傳輸的每一幀數據的長(cháng)度都是一個(gè)字節。然而,一旦總線(xiàn)啟動(dòng),就沒(méi)有對可以通信的字節數量的限制;所需要的只是另一方確認傳輸的每個(gè)字節。最重要的信息塊在發(fā)送時(shí)首先傳輸。每次傳輸在開(kāi)始時(shí)有一個(gè)開(kāi)始信號,在結束時(shí)有一個(gè)停止信號。通過(guò)在總線(xiàn)已經(jīng)傳送了一個(gè)字節之后操縱時(shí)鐘線(xiàn),可以停止傳輸。
1.時(shí)鐘和數據傳輸:
通常使用外部設備將SDA引腳拉高。當SCL為低電平時(shí),SDA引腳上的數據只能修改;當SCL為高電平時(shí),SDA引腳上的數據表示開(kāi)始或停止狀態(tài)。如圖所示
時(shí)鐘和數據傳輸
2.開(kāi)始和結束條件:
啟動(dòng)條件是具有SCL高的高到低SDA,它必須出現在任何其他命令之前。停止條件是低到高的SDA和SCL高。停止指令將在讀序列后,EEPROM進(jìn)入待機模式,如圖所示。
開(kāi)始和結束條件
3.回答:
所有的地址和數據字都以 8 位字的形式連續地發(fā)送到內存芯片。確認收到每個(gè)字,通過(guò)發(fā)送一個(gè)“0.” 如圖所示,確認發(fā)生在第九時(shí)鐘周期。
回答
在A(yíng)T24C256是一個(gè) 256kbit 串行電可編程只讀存儲器從在一個(gè) 8 引腳雙列直插式設備封裝一個(gè)小結構,大量的存儲容量,以及其他功能,可在 2 線(xiàn)總線(xiàn)利用。將其中四個(gè)IC串聯(lián)起來(lái),創(chuàng )建一個(gè)具有大容量數據存儲需求的數據采集系統。
AT24C256
通過(guò)EEPROM存儲器可以接收和傳輸數據。連接到總線(xiàn)的每個(gè)設備都有自己唯一的地址。
當主機訪(fǎng)問(wèn)EEPROM時(shí)它將啟動(dòng)狀態(tài)和控制信號發(fā)送到EEPROM存儲器,以及紅色標志信號來(lái)翻轉數據傳輸和接收的方向。在從EEPROM得到響應信號之后,可以讀出相關(guān)數據,
通過(guò)上面的例子,我們可以知道I2C的優(yōu)勢主要表現在:
1. 硬件電路進(jìn)行了精簡(jiǎn)。串行數據線(xiàn)(SDA)和串行時(shí)鐘線(xiàn)是該總線(xiàn)(SCL)中唯一需要的線(xiàn)。
2. 總線(xiàn)上的每個(gè)I2C設備都有一個(gè)唯一的地址,軟件可以用它來(lái)尋址。
3. 由于總線(xiàn)上可能有許多主 I2C 設備,I2C 總線(xiàn)接口協(xié)議包括沖突監視和仲裁機制,以防止數據丟失或通信故障。
4. 這種串行雙線(xiàn)雙向總線(xiàn)的標準模式為100k bi t/s,快速模式為400k bi t/s,高速模式為3.4 mbit/s。
5. I2C器件采用濾波和抗干擾技術(shù),保證了數據的完整性。
6. 總線(xiàn)的容抗不能超過(guò)400pF,因為連接到它的設備數量是有限的。
電話(huà)
微信