I2C是目前使用較多的一種總線,一般用于連接各種從設(shè)備,比如:EEPROM存儲器、溫濕度傳感器、角速度計等。
掌握I2C算是最基本的技能,初入職場的人有必要系統(tǒng)學(xué)習(xí)一下。
一、I2C簡史
1980年,飛利浦公司為了讓各種低速設(shè)備(飛利浦芯片)連接起來,就開始著手研發(fā)通信的總線。
1982年,原始版本,使用了100KHz通信速率,提供7位地址,將總線上的器件數(shù)量限制為112(有幾個保留地址)。
1992年,發(fā)布第一個規(guī)范,增加了400kHz的快速模式以及擴(kuò)展的10位地址空間。
1998年,隨著技術(shù)的進(jìn)步,通信速率要求越來越高,達(dá)到了高速3.4 MHz,再到后面升級至5MHz,同時使用差分信號以改進(jìn)抗噪聲能力等。
I2C版本歷史:
額外說一下SMBus:
1995年,英特爾在I2C基礎(chǔ)上推出了一種變體稱為“系統(tǒng)管理總線”(SMBus)。SMBus是一種更嚴(yán)格控制的格式,旨在最大限度地提高PC主板上支持IC之間通信的可預(yù)測性。
SMBus之間最顯著的區(qū)別在于它將速度限制在10kHz至100kHz之間,而I2C則可以支持0kHz至5MHz的器件。
二、I2C基礎(chǔ)內(nèi)容
I2C:Inter-Integrated Circuit,字面意思是集成電路之間,是I2C Bus簡稱。
I2C只需要兩根電線,這兩根線最多可支持1008個從設(shè)備,實現(xiàn)同步串行通信。
與SPI不同的是,I2C可以支持多主機(jī),多從機(jī)的總線。
1.I2C兩線信號
每個I2C總線由兩個信號組成:SCL時鐘信號,SDA數(shù)據(jù)信號。時鐘信號總是由當(dāng)前總線主機(jī)產(chǎn)生。
與UART、SPI不同,I 2 C總線驅(qū)動器是開漏(不了解開漏的請自行百度),意思是它們可以將相應(yīng)的信號線拉低,但不能將其驅(qū)動為高電平。
每條信號線上都有一個上拉電阻,當(dāng)沒有器件將其置為低電平時,將信號恢復(fù)為高電平。
2.信號電平
通常,I2C總線信號電平5V、3.3V居多,如果總線上器件兼容這兩種電平,可以直接使用。
如果信號電壓相差很大(比如5V和2.5V),或者電平不兼容,就需要進(jìn)行電平轉(zhuǎn)換才行。
三、I2C協(xié)議
I2C對初學(xué)者來說,難點就在于理解其中協(xié)議,下面從幾個簡單角度說一下。
1.收發(fā)基本原理
I2C的兩個總線:SCL時鐘信號,SDA數(shù)據(jù)信號。SCL由主機(jī)產(chǎn)生,SDA由主機(jī)或者從機(jī)產(chǎn)生。
I2C是同步串行通信,同時它屬于半雙工,也就是說同一時間SDA只能由一個設(shè)備發(fā)送信號。
這樣,你就會發(fā)現(xiàn),SDA上的信號(數(shù)據(jù)),有時候是主機(jī)的,有時候是從機(jī)的。
2.基本協(xié)議:7/10位地址
I2C支持7位地址和10位地址,消息主要分為兩種:地址和數(shù)據(jù)。
7位地址:
10位地址:
除了地址和數(shù)據(jù),還有開始條件、停止條件、讀寫,以及應(yīng)答信息(上圖小字描述)。
3.開始和停止
SDA數(shù)據(jù)線由高 -> 低 為總線開始條件;
SDA數(shù)據(jù)線由低 -> 高 為總線結(jié)束條件;
4.應(yīng)答(ACK)和非應(yīng)答(ACK)
應(yīng)答和非應(yīng)答發(fā)生在每個字節(jié)之后,是由接收方向發(fā)送方發(fā)出確認(rèn)信號,表明“數(shù)據(jù)”已成功接收,并且可以繼續(xù)發(fā)送下一字節(jié)數(shù)據(jù)。
應(yīng)答有很多種情況,初學(xué)者可以參考協(xié)議手冊,里面有詳細(xì)講述。
5.更多協(xié)議內(nèi)容
I2C協(xié)議手冊地址
原文標(biāo)題:I2C很簡單,但很多人都不了解它的通信原理和協(xié)議
文章出處:【微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
通信
+關(guān)注
關(guān)注
18文章
6057瀏覽量
136258 -
總線
+關(guān)注
關(guān)注
10文章
2898瀏覽量
88254 -
I2C
+關(guān)注
關(guān)注
28文章
1495瀏覽量
124187
原文標(biāo)題:I2C很簡單,但很多人都不了解它的通信原理和協(xié)議
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論