一、前言
I2C總線(xiàn)是由Philips公司開(kāi)發(fā)的一種簡(jiǎn)單、雙向二線(xiàn)制同步串行總線(xiàn)。它只需要兩根線(xiàn)即可在連接于總線(xiàn)上的器件之間傳送信息。
二、I2C總線(xiàn)開(kāi)發(fā)設(shè)計(jì)需要注意點(diǎn)
1、總線(xiàn)容量及驅(qū)動(dòng)能力
I2C總線(xiàn)的外圍擴(kuò)展器件都是CMOS器件,總線(xiàn)有足夠的電流驅(qū)動(dòng)能力,因此總線(xiàn)上擴(kuò)展的節(jié)點(diǎn)數(shù)不由電流負(fù)載能力決定,而由電容負(fù)載確定。
總線(xiàn)上每個(gè)實(shí)際節(jié)點(diǎn)器件的總線(xiàn)接口都有一定的等效電容,等效電容的存在會(huì)造成總線(xiàn)傳輸?shù)难舆t,導(dǎo)致數(shù)據(jù)傳輸出錯(cuò)。
通常總線(xiàn)負(fù)載能力為400pF,通常各個(gè)I2C器件都會(huì)有它自己的電容值,一般為不大于20pF,據(jù)此可計(jì)算出總線(xiàn)長(zhǎng)度及節(jié)點(diǎn)數(shù)目的限制數(shù)量。總線(xiàn)上的每個(gè)外圍器件都有一個(gè)器件地址,因此總線(xiàn)上擴(kuò)展外圍器件時(shí)也要受器件地址限制。
2、I2C總線(xiàn)的電氣結(jié)構(gòu)
I2C總線(xiàn)為雙向同步串行總線(xiàn),因此I2C總線(xiàn)接口內(nèi)部為雙向傳輸電路,如圖。所示。總線(xiàn)端口輸出為開(kāi)漏結(jié)構(gòu),故總線(xiàn)上必須有上拉電阻,上拉電阻與電源電壓、SDA、SCL以及總線(xiàn)串接電阻有關(guān),可參考有關(guān)數(shù)據(jù)手冊(cè)進(jìn)行選擇,通常可選4.7K到10K。
3、每個(gè)節(jié)點(diǎn)都有一個(gè)固定的節(jié)點(diǎn)地址。
I2C總線(xiàn)為雙向同步串行總線(xiàn),因此總線(xiàn)上的單片機(jī)都可以成為主節(jié)點(diǎn),其器件地址由軟件給定,存放在總線(xiàn)的地址寄存器件中,稱(chēng)為主器件的從地址。在總線(xiàn)的多主系統(tǒng)中,單片機(jī)作為從節(jié)點(diǎn)時(shí),其從地址才有意義,所以總線(xiàn)上所有的外圍器件都有規(guī)范的器件地址。
4、I2C總線(xiàn)時(shí)序
I2C總線(xiàn)上數(shù)據(jù)傳遞時(shí),總線(xiàn)上傳送的每一幀數(shù)據(jù)均為一個(gè)字節(jié)。但啟動(dòng)總線(xiàn)后,傳送的字節(jié)數(shù)沒(méi)有限制,只要求每傳送一個(gè)字節(jié)后,對(duì)方回應(yīng)一個(gè)應(yīng)答位。在發(fā)送時(shí),首先發(fā)送的是數(shù)據(jù)的最高位。每次傳送開(kāi)始有起始信號(hào),結(jié)束時(shí)有停止信號(hào)。在總線(xiàn)傳送完一個(gè)字節(jié)后,可以通過(guò)對(duì)時(shí)鐘線(xiàn)的控制使傳送暫停。
①時(shí)鐘和數(shù)據(jù)發(fā)送:
SDA引腳通常使用外部設(shè)備拉高。SDA引腳上的數(shù)據(jù)只能在SCL為低電平時(shí)進(jìn)行更改,SCL為高電平時(shí)數(shù)據(jù)更改將指示開(kāi)始或停止條件。如圖所示。
②起止條件:
SDA由高到低且SCL為高是啟動(dòng)條件,必須先于任何其他命令。SDA由低到高且SCL為高是停止條件,在一個(gè)讀序列后,停止命令會(huì)使EEPROM進(jìn)入待機(jī)模式。如圖所示。
③應(yīng)答:
所有地址和數(shù)據(jù)字均以8bit字連續(xù)傳輸?shù)紼EPROM,EEPROM發(fā)送一個(gè)“0”來(lái)應(yīng)答,以確認(rèn)它已收到每個(gè)字。應(yīng)答發(fā)生在第九個(gè)時(shí)鐘周期如圖所示。
三、設(shè)計(jì)實(shí)例
我們對(duì)于AT24C256肯定不會(huì)陌生,這是ATMEL公司256kbit串行電可擦的可編程只讀存儲(chǔ)器,8引腳雙排直插式封裝,具有結(jié)構(gòu)緊湊、存儲(chǔ)容量大等特點(diǎn),可以在2線(xiàn)總線(xiàn)上并接4片該IC,特別適用于具有高容量數(shù)據(jù)儲(chǔ)存要求的數(shù)據(jù)采集系統(tǒng)。
EEPROM存儲(chǔ)器設(shè)備既可以接收又可以發(fā)送數(shù)據(jù)。每個(gè)掛接在總線(xiàn)上的器件都有唯一一個(gè)地址識(shí)別。
主機(jī)訪(fǎng)問(wèn)EEPROM時(shí),主機(jī)在向EEPROM發(fā)送完控制字節(jié)和地址信息后,緊接著向EEPROM存儲(chǔ)器發(fā)送起始條件和控制信號(hào)并發(fā)送讀標(biāo)志位信號(hào),切換數(shù)據(jù)的收發(fā)方向。接著在收到EEPROM的響應(yīng)信號(hào)后便可以讀出需要的數(shù)據(jù)了。
四、總結(jié)
通過(guò)以上實(shí)例,我們可以知道I2C優(yōu)點(diǎn)主要表現(xiàn)在:
1、簡(jiǎn)化了硬件電路。在這種總線(xiàn)中只需要兩根線(xiàn),即串行數(shù)據(jù)線(xiàn)(SDA)和串行的時(shí)鐘線(xiàn)(SCL)。
2、每個(gè)掛在總線(xiàn)上的I2C器件都有一個(gè)唯一的地址,并可以通過(guò)軟件尋址。
3、因?yàn)樵诳偩€(xiàn)上可能有多個(gè)主I2C器件,因此I2C總線(xiàn)接口協(xié)議中有沖突監(jiān)測(cè)和仲裁機(jī)制,以防止通信中的數(shù)據(jù)丟失或發(fā)生錯(cuò)誤。
4、這種串行的兩線(xiàn)雙向的總線(xiàn)在標(biāo)準(zhǔn)模式下的速率為100kbit/s,在快速模式下的速率為400kbit/s,在高速模式下為3.4Mbit/s。
5、I2C器件中有濾波抗擾措施來(lái)保證數(shù)據(jù)的完整性。
6、在總線(xiàn)上掛接的器件數(shù)目是有限的,即總線(xiàn)上的容抗不能超過(guò)400pF。
編輯:jq
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7598瀏覽量
165690 -
傳輸電路
+關(guān)注
關(guān)注
0文章
10瀏覽量
10778 -
I2C總線(xiàn)
+關(guān)注
關(guān)注
8文章
408瀏覽量
61677 -
SDA
+關(guān)注
關(guān)注
0文章
124瀏覽量
28613
原文標(biāo)題:什么是I2C總線(xiàn),它有著哪些特點(diǎn),設(shè)計(jì)時(shí)需要哪些細(xì)節(jié)呢?
文章出處:【微信號(hào):eda365wx,微信公眾號(hào):EDA365電子論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
I2C總線(xiàn)通信原理 如何設(shè)計(jì)I2C總線(xiàn)電路
I2C總線(xiàn)的優(yōu)缺點(diǎn)分析
如何選擇I2C總線(xiàn)拉電阻
I2C總線(xiàn)與Arduino的接口示例
I2C總線(xiàn)的工作模式介紹
I2C總線(xiàn)協(xié)議詳細(xì)解析
I2C總線(xiàn)故障排除技巧
I2C總線(xiàn)與單片機(jī)的連接
I2C總線(xiàn)應(yīng)用實(shí)例分析
I2C總線(xiàn)與SPI總線(xiàn)的比較
I2C總線(xiàn)上拉電阻阻值如何確定?


評(píng)論