一、操作
1.1、系統(tǒng)的概述
I2C系統(tǒng)使用串行數(shù)據(jù)線(SDA)和串行時(shí)鐘線(SCL)進(jìn)行數(shù)據(jù)傳輸。連接到這兩個(gè)信號的所有設(shè)備必須具有漏極開路或集電極開路輸出。這兩條線上的邏輯“與”功能都通過外部上拉電阻器來實(shí)現(xiàn)。
數(shù)據(jù)在主機(jī)和從機(jī)之間以字節(jié)為單位同步傳輸?shù)絊DA線上。每個(gè)數(shù)據(jù)字節(jié)為8位長。每個(gè)數(shù)據(jù)位都有一個(gè)SCL時(shí)鐘脈沖,并且首先發(fā)送MSB。每個(gè)傳送的字節(jié)后都有一個(gè)應(yīng)答位。在SCL的高電平期間對每個(gè)位進(jìn)行采樣;因此,只能在SCL的低電平期間更改SDA線路電平,并且必須在SCL的高電平期間保持穩(wěn)定。若SCL為高電平時(shí),SDA線上存在跳變則被解釋為命令(請參見START和STOP信號)。
1.2、IIC協(xié)議
從宏觀的角度講,IIC協(xié)議可以包含以下四個(gè)部分:
1、開始信號的產(chǎn)生(START)
2、從機(jī)地址傳輸
3、數(shù)據(jù)傳輸
4、停止信號產(chǎn)生(STOP)
1.2.1 開始信號(START)
當(dāng)總線空閑/就緒時(shí),這意味著沒有主機(jī)設(shè)備正在使用總線(SCL和SDA線均為高電平),主機(jī)可以通過發(fā)送START信號來啟動(dòng)傳輸。START信號(通常稱為STA-bit)定義為:SCL為高電平時(shí),SDA從高到低的跳變。START信號表示新數(shù)據(jù)傳輸?shù)拈_始。Repeated START是一種啟動(dòng)信號,但沒有先產(chǎn)生一個(gè)停止信號。主機(jī)使用這種方法在不釋放總線的情況下,以不同的傳輸方式(例如,從寫入設(shè)備到從設(shè)備讀取)與另一個(gè)從機(jī)或同一從機(jī)通信。
當(dāng)命令寄存器中的STA-bit置1且RD或WR位置1時(shí),內(nèi)核產(chǎn)生一個(gè)START信號。根據(jù)SCL線的當(dāng)前狀態(tài),將生成START或Repeated START。
1.2.2 地址線傳輸
在START信號之后,主機(jī)立即傳送的數(shù)據(jù)的第一個(gè)字節(jié)是從機(jī)地址。這是一個(gè)7位的調(diào)用地址,后跟RW位(7address+1RW)。RW位向從機(jī)發(fā)送數(shù)據(jù)傳輸方向信號。一個(gè)系統(tǒng)中的兩個(gè)從機(jī)不能具有相同的地址。只有地址與主機(jī)發(fā)送的地址匹配的從機(jī)會通過在第9個(gè)SCL時(shí)鐘周期將SDA拉為低電平來返回一個(gè)應(yīng)答位來做出響應(yīng)。(從機(jī)拉低SDA作為ACK)
內(nèi)核將從地址傳輸視為寫操作。將從設(shè)備的地址存儲在發(fā)送寄存器中,并將WR位置1。然后,內(nèi)核將在總線上傳輸從機(jī)地址。
1.2.3 數(shù)據(jù)傳輸
一旦成功完成從機(jī)尋址,就可以按照主機(jī)發(fā)送的RW位指定的方向逐字節(jié)進(jìn)行數(shù)據(jù)傳輸。在第9個(gè)SCL時(shí)鐘周期中,每個(gè)傳輸?shù)淖止?jié)后都有一個(gè)應(yīng)答位。如果從機(jī)發(fā)出“無應(yīng)答”信號,則主機(jī)可以產(chǎn)生一個(gè)STOP信號來中止數(shù)據(jù)傳輸,或者產(chǎn)生一個(gè)Repeated START信號并開始一個(gè)新的傳輸周期。
如果作為接收設(shè)備的主機(jī)未應(yīng)答從機(jī),則從機(jī)釋放SDA線供主機(jī)產(chǎn)生STOP或Repeated START信號。
要將數(shù)據(jù)寫入從機(jī),將要發(fā)送的數(shù)據(jù)存儲在發(fā)送寄存器中,并將WR位置1。要從從機(jī)讀取數(shù)據(jù),請將RD位置1。在傳輸過程中,核心設(shè)置了TIP標(biāo)志(Transfer in progress),指示正在進(jìn)行傳輸。傳輸完成后,將重置TIP標(biāo)志,設(shè)置IF標(biāo)志(Interrupt Flag),并在使能時(shí)產(chǎn)生中斷。設(shè)置IF標(biāo)志后,接收寄存器包含有效數(shù)據(jù)。當(dāng)TIP標(biāo)志復(fù)位時(shí),用戶可以發(fā)出新的寫或讀命令。
1.2.4 停止信號
主機(jī)可以通過產(chǎn)生一個(gè)STOP信號來終止通信。STOP信號(通常稱為P位)定義為SCL為邏輯1時(shí)SDA從低到高的跳變。
1.3、仲裁過程
1.3.1 時(shí)鐘同步化
I2C總線是真正的多主機(jī)總線,可以在其上連接多個(gè)主機(jī)。如果兩個(gè)或多個(gè)主機(jī)同時(shí)嘗試控制總線,則時(shí)鐘同步過程將確定總線時(shí)鐘。由于I2C信號采用“線與”連接,從高到低的跳變會影響連接到總線的所有設(shè)備。因此,SCL線上從高電平到低電平的轉(zhuǎn)換會導(dǎo)致所有相關(guān)設(shè)備都將其低電平周期計(jì)算在內(nèi)。一旦設(shè)備時(shí)鐘變低,它將使SCL線保持在該狀態(tài),直到達(dá)到時(shí)鐘高狀態(tài)為止。由于采用“線與”連接,因此SCL線將由具有最短低電平周期的設(shè)備保持低電平,并由具有最短高電平周期的設(shè)備保持高電平。
1.3.2 時(shí)鐘伸展
從設(shè)備可以使用時(shí)鐘同步機(jī)制來降低傳輸比特率。主機(jī)將SCL拉低后,從機(jī)可以拉低SCL為所需的時(shí)間,然后釋放它。如果從機(jī)的SCL低電平周期大于主機(jī)的SCL低電平周期,則將延長所得到的SCL總線信號低電平周期,從而插入等待狀態(tài)。
編輯;jq
-
IIC
+關(guān)注
關(guān)注
11文章
302瀏覽量
38371 -
SDA
+關(guān)注
關(guān)注
0文章
124瀏覽量
28170 -
SCL
+關(guān)注
關(guān)注
1文章
239瀏覽量
17111 -
MSB
+關(guān)注
關(guān)注
0文章
13瀏覽量
8266
原文標(biāo)題:IIC專題原理及應(yīng)用篇(一)
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論