新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > I2C 總線(xiàn)協(xié)議的簡(jiǎn)單總結(jié)

I2C 總線(xiàn)協(xié)議的簡(jiǎn)單總結(jié)

作者: 時(shí)間:2016-12-14 來(lái)源:網(wǎng)絡(luò) 收藏
一. 技術(shù)性能:

工作速率有100K和400K兩種;

本文引用地址:http://www.butianyuan.cn/article/201612/329919.htm

支持多機(jī)通訊;

支持多主控模塊,但同一時(shí)刻只允許有一個(gè)主控;

由數(shù)據(jù)線(xiàn)SDA和時(shí)鐘SCL構(gòu)成的串行總線(xiàn);

每個(gè)電路和模塊都有唯一的地址;

每個(gè)器件可以使用獨(dú)立電源

二. 基本工作原理:

以啟動(dòng)信號(hào)START來(lái)掌管總線(xiàn),以停止信號(hào)STOP來(lái)釋放總線(xiàn);

每次通訊以START開(kāi)始,以STOP結(jié)束;

啟動(dòng)信號(hào)START后緊接著發(fā)送一個(gè)地址字節(jié),其中7位為被控器件的地址碼,一位為讀/寫(xiě)控制位R/W,R. /W位為0表示由主控向被控器件寫(xiě)數(shù)據(jù),R/W為1表示由主控向被控器件讀數(shù)據(jù);

當(dāng)被控器件檢測(cè)到收到的地址與自己的地址相同時(shí),在第9個(gè)時(shí)鐘期間反饋應(yīng)答信號(hào);

每個(gè)數(shù)據(jù)字節(jié)在傳送時(shí)都是高位(MSB)在前;

寫(xiě)通訊過(guò)程:

1. 主控在檢測(cè)到總線(xiàn)空閑的狀況下,首先發(fā)送一個(gè)START信號(hào)掌管總線(xiàn);

2. 發(fā)送一個(gè)地址字節(jié)(包括7位地址碼和一位R/W);

3. 當(dāng)被控器件檢測(cè)到主控發(fā)送的地址與自己的地址相同時(shí)發(fā)送一個(gè)應(yīng)答信號(hào)(ACK);

4. 主控收到ACK后開(kāi)始發(fā)送第一個(gè)數(shù)據(jù)字節(jié);

5. 被控器收到數(shù)據(jù)字節(jié)后發(fā)送一個(gè)ACK表示繼續(xù)傳送數(shù)據(jù),發(fā)送NACK表示傳送數(shù)據(jù)結(jié)束;

6. 主控發(fā)送完全部數(shù)據(jù)后,發(fā)送一個(gè)停止位STOP,結(jié)束整個(gè)通訊并且釋放總線(xiàn);

讀通訊過(guò)程:

1. 主控在檢測(cè)到總線(xiàn)空閑的狀況下,首先發(fā)送一個(gè)START信號(hào)掌管總線(xiàn);

2. 發(fā)送一個(gè)地址字節(jié)(包括7位地址碼和一位R/W);

3. 當(dāng)被控器件檢測(cè)到主控發(fā)送的地址與自己的地址相同時(shí)發(fā)送一個(gè)應(yīng)答信號(hào)(ACK);

4. 主控收到ACK后釋放數(shù)據(jù)總線(xiàn),開(kāi)始接收第一個(gè)數(shù)據(jù)字節(jié);

5. 主控收到數(shù)據(jù)后發(fā)送ACK表示繼續(xù)傳送數(shù)據(jù),發(fā)送NACK表示傳送數(shù)據(jù)結(jié)束;

6. 主控發(fā)送完全部數(shù)據(jù)后,發(fā)送一個(gè)停止位STOP,結(jié)束整個(gè)通訊并且釋放總線(xiàn);

四. 總線(xiàn)信號(hào)時(shí)序分析

1. 總線(xiàn)空閑狀態(tài)

SDA和SCL兩條信號(hào)線(xiàn)都處于高電平,即總線(xiàn)上所有的器件都釋放總線(xiàn),兩條信號(hào)線(xiàn)各自的上拉電阻把電平拉高;

2. 啟動(dòng)信號(hào)START

時(shí)鐘信號(hào)SCL保持高電平,數(shù)據(jù)信號(hào)SDA的電平被拉低(即負(fù)跳變)。啟動(dòng)信號(hào)必須是跳變信號(hào),而且在建立該信號(hào)前必修保證總線(xiàn)處于空閑狀態(tài);

3. 停止信號(hào)STOP

時(shí)鐘信號(hào)SCL保持高電平,數(shù)據(jù)線(xiàn)被釋放,使得SDA返回高電平(即正跳變),停止信號(hào)也必須是跳變信號(hào)。

4. 數(shù)據(jù)傳送

SCL線(xiàn)呈現(xiàn)高電平期間,SDA線(xiàn)上的電平必須保持穩(wěn)定,低電平表示0(此時(shí)的線(xiàn)電壓為地電壓),高電平表示1(此時(shí)的電壓由元器件的VDD決定)。只有在SCL線(xiàn)為低電平期間,SDA上的電平允許變化。

5. 應(yīng)答信號(hào)ACK

I2C總線(xiàn)的數(shù)據(jù)都是以字節(jié)(8位)的方式傳送的,發(fā)送器件每發(fā)送一個(gè)字節(jié)之后,在時(shí)鐘的第9個(gè)脈沖期間釋放數(shù)據(jù)總線(xiàn),由接收器發(fā)送一個(gè)ACK(把數(shù)據(jù)總線(xiàn)的電平拉低)來(lái)表示數(shù)據(jù)成功接收。

6. 無(wú)應(yīng)答信號(hào)NACK

在時(shí)鐘的第9個(gè)脈沖期間發(fā)送器釋放數(shù)據(jù)總線(xiàn),接收器不拉低數(shù)據(jù)總線(xiàn)表示一個(gè)NACK,NACK有兩種用途:

a. 一般表示接收器未成功接收數(shù)據(jù)字節(jié);

b. 當(dāng)接收器是主控器時(shí),它收到最后一個(gè)字節(jié)后,應(yīng)發(fā)送一個(gè)NACK信號(hào),以通知被控發(fā)送器結(jié)束數(shù)據(jù)發(fā)送,并釋放總線(xiàn),以便主控接收器發(fā)送一個(gè)停止信號(hào)STOP。

五. 尋址約定

地址的分配方法有兩種:

1. 含CPU的智能器件,地址由軟件初始化時(shí)定義,但不能與其它的器件有沖突;

2. 不含CPU的非智能器件,由廠(chǎng)家在器件內(nèi)部固化,不可改變。

高7位為地址碼,其分為兩部分:

1. 高4位屬于固定地址不可改變,由廠(chǎng)家固化的統(tǒng)一地址;

2. 低三位為引腳設(shè)定地址,可以由外部引腳來(lái)設(shè)定(并非所有器件都可以設(shè)定);



評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉