- IIC總線是PHILIPS公司推出的一種串口總線,是具備多主機(jī)系統(tǒng)所需的包括總線裁決和高低速器件同步功能的高性能串口總線。
- IIC總線只有兩根雙向信號(hào)線。一根是數(shù)據(jù)線SDA,一根是時(shí)鐘線SCL。
- 連接到相同總線的IC數(shù)量,受總線最大電容400pF的限制。
- IIC總線通過上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根線均為高電平。連到總線上的任何一個(gè)器件輸出的低電平,都將使總線的信號(hào)變低,即各器件的SDA和SCL都是線“與”的關(guān)系。
- 每個(gè)連到總線上的器件都有一個(gè)唯一的地址。主機(jī)與其他器件的數(shù)據(jù)傳送可以使主機(jī)發(fā)送數(shù)據(jù)到其他器件,這時(shí)主機(jī)就是發(fā)送器。在總線上接受數(shù)據(jù)的器件則為接收器。
- 在多主機(jī)系統(tǒng)中,可能同時(shí)有幾個(gè)主機(jī)企圖啟動(dòng)總線發(fā)送數(shù)據(jù),為了避免混亂,IIC總線要通過總線仲裁,以決定由哪一臺(tái)主機(jī)控制總線。
- IIC總線的數(shù)據(jù)傳送
IIC總線在進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定;只有在時(shí)鐘線上的信號(hào)是低電平時(shí),數(shù)據(jù)線上的電平才允許變化。
SCL線為高電平期間,SDA線由高到低變化表示起始。
SCL線為高電平期間,SDA線由低到高變化表示終止。
起始和終止都是主機(jī)發(fā)出的,在起始信號(hào)開始后,總線就處于被占用狀態(tài);在終止信號(hào)產(chǎn)生后,總線就處于空閑狀態(tài)。
連接到IIC總線上的設(shè)備,如果具有IIC總線的硬件接口,很容易檢測(cè)到起始和終止信號(hào)。
接收器收到一個(gè)完整的數(shù)據(jù)字節(jié)后,有可能需要完成一些其他工作,可能無法立刻接收下一個(gè)字節(jié),這是接收器可以將SCL線拉低,從而使主機(jī)處于等待狀態(tài)。直到slavedevice準(zhǔn)備好接收下一個(gè)字節(jié)時(shí),再釋放SCL線使之為高電平,從而數(shù)據(jù)傳輸continue.
- 數(shù)據(jù)傳送格式
每個(gè)字節(jié)必須是8bit長(zhǎng)度。數(shù)據(jù)傳送時(shí),先傳最高位MSB,每一個(gè)被傳送字節(jié)后面必須跟一個(gè)應(yīng)答位(即一幀共9個(gè)bit)。

如果slave不對(duì)master做尋址信號(hào)應(yīng)答時(shí),slave必須將數(shù)據(jù)線置于高電平,而由主機(jī)產(chǎn)生一個(gè)STOP信號(hào)以結(jié)束傳送。
如果slave對(duì)master尋址應(yīng)答后,但在數(shù)據(jù)傳送一段時(shí)間后無法繼續(xù)接收更多數(shù)據(jù)時(shí),slave可以對(duì)無法接收的第一個(gè)數(shù)據(jù)字節(jié)“非應(yīng)答”通知主機(jī)。主機(jī)則發(fā)出STOP信號(hào)以結(jié)束數(shù)據(jù)傳送。
當(dāng)主機(jī)接收數(shù)據(jù)時(shí),它受到最后一個(gè)數(shù)據(jù)字節(jié)后,必須向從機(jī)發(fā)出一個(gè)結(jié)束傳送的信號(hào)。這個(gè)信號(hào)是對(duì)從機(jī)的“非應(yīng)答”來實(shí)現(xiàn)的。然后,從機(jī)釋放SDA線,允許主機(jī)產(chǎn)生STOP信號(hào)。
IIC總線上傳送的數(shù)據(jù)信號(hào)是廣義的。既包括地址信號(hào),也包含真正的數(shù)據(jù)信號(hào)。
在起始信號(hào)后必須傳送一個(gè)從機(jī)的地址(7bit),第8位是數(shù)據(jù)的傳送方向位(R/T)?!?”表示主機(jī)發(fā)送數(shù)據(jù)(T/write),“1”表示主機(jī)接收數(shù)據(jù)(R/Read)。每次數(shù)據(jù)傳送總是由主機(jī)產(chǎn)生終止信號(hào)。
但是,如果主機(jī)希望繼續(xù)占用總線進(jìn)行新的數(shù)據(jù)傳送,則可以不產(chǎn)生終止信號(hào),馬上再次發(fā)出起始信號(hào)對(duì)另一個(gè)從機(jī)進(jìn)行尋址。
在總線的一次數(shù)據(jù)傳送中,可以有以下幾種組合方式:
(陰影部分表示數(shù)據(jù)從主機(jī)向從機(jī)傳送,無陰影部分表示數(shù)據(jù)由從機(jī)向主機(jī)傳送。A表示應(yīng)答,A非表示非應(yīng)答(高電平)。S是起始信號(hào),P表示終止信號(hào)。)
- 主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個(gè)傳送過程中不變:
- 主機(jī)在第一個(gè)字節(jié)后,立即從從機(jī)讀數(shù)據(jù)。
- 在傳送過程中,當(dāng)需要改變傳送方向時(shí),起始信號(hào)和從機(jī)地址都被重復(fù)產(chǎn)生一次,但兩次讀寫方向位正好反相。
IIC總線有明確規(guī)定:采用7bit尋址字節(jié)(尋址字節(jié)是起始信號(hào)后的第一個(gè)字節(jié))。
D7~D1位組成從機(jī)的地址。D0位是數(shù)據(jù)傳送方向位。"0"表示主機(jī)向從機(jī)寫數(shù)據(jù),"1"表示主機(jī)向從機(jī)讀數(shù)據(jù)。
主機(jī)發(fā)送地址時(shí),總線上的每個(gè)從機(jī)都將這7位地址碼和自己的地址比較,如果相同,則認(rèn)為自己被主機(jī)尋址,根據(jù)R/T位將自己確認(rèn)為發(fā)送器或者接收器。
從機(jī)的地址由固定部分和可編程部分組成。在一個(gè)系統(tǒng)中,可能希望接入多個(gè)相同的從機(jī),從機(jī)地址中可以編程的部分決定了可接入總線該類器件的最大數(shù)目。
(基本的I2C總線規(guī)范于20年前發(fā)布,其數(shù)據(jù)傳輸速率最高為100Kbits/s,采用7位尋址。但是由于數(shù)據(jù)傳輸速率和應(yīng)用功能的迅速增加,I2C總線也增強(qiáng)為快速模式(400Kbits/s)和10位尋址以滿足更高速度和更大尋址空間的需求。
I2C總線始終和先進(jìn)技術(shù)保持同步,但仍然保持其向下兼容性。并且最近還增加了高速模式,其速度可達(dá)3.4Mbits/s。它使得I2C總線能夠支持現(xiàn)有以及將來的高速串行傳輸應(yīng)用,例如EEPROM和Flash存儲(chǔ)器。)
愛華網(wǎng)


