小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

I2C總線通訊協(xié)議

 新用戶8389DdzY 2021-09-24

1. I2C總線簡介

I2C是Inter-Integrated Circuit的簡稱,讀作:I-squared-C。由飛利浦公司于1980年代提出,為了讓主板、嵌入式系統(tǒng)或手機用以連接低速周邊外部設(shè)備而發(fā)展。

主要用途:

SOC和周邊外設(shè)間的通信(如:EEPROM,電容觸摸芯片,各種Sensor等)。

1.1 物理接口

I2C總線只使用兩條雙向漏極開路的信號線(串行數(shù)據(jù)線:SDA,及串行時鐘線:SCL),并利用電阻上拉。I2C總線僅僅使用SCL、SDA兩根信號線,就實現(xiàn)了設(shè)備間的數(shù)據(jù)交互,極大地簡化了對硬件資源和PCB板布線空間的占用。I2C總線廣泛應(yīng)用在EEPROM、實時時鐘、LCD、及其他芯片的接口。I2C允許相當大的工作電壓范圍,典型的電壓基準為:+3.3V或+5V。

SCL(Serial Clock):串行時鐘線,傳輸CLK信號,一般是主設(shè)備向從設(shè)備提供
SDA(Serial Data):串行數(shù)據(jù)線,傳輸通信數(shù)據(jù)

I2C總線接口內(nèi)部結(jié)構(gòu)如下圖所示:

I2C總線接口內(nèi)部結(jié)構(gòu)

I2C使用一個7bit的設(shè)備地址,一組總線最多和112個節(jié)點通信。最大通信數(shù)量受限于地址空間及400pF的總線電容。

常見的I2C總線以傳輸速率的不同分為不同的模式:標準模式(100Kbit/s)、低速模式(10Kbit/s)、快速模式(400Kbit/s)、高速模式(3.4Mbit/s),時鐘頻率可以被下降到零,即暫停通信。

該總線是一種多主控總線,即可以在總線上放置多個主設(shè)備節(jié)點,在停止位(P)發(fā)出后,即通訊結(jié)束后,主設(shè)備節(jié)點可以成為從設(shè)備節(jié)點。

主設(shè)備節(jié)點:產(chǎn)生時鐘并發(fā)起通信的設(shè)備節(jié)點
從設(shè)備節(jié)點:接收時鐘并響應(yīng)主設(shè)備節(jié)點尋址的設(shè)備節(jié)點

 1)I2C通信雙方地位不對等,通信由主設(shè)備發(fā)起,并主導(dǎo)傳輸過程,從設(shè)備按I2C協(xié)議接收主設(shè)備發(fā)送的數(shù)據(jù),并及時給出響應(yīng)。
 2)主設(shè)備、從設(shè)備由通信雙方?jīng)Q定(I2C協(xié)議本身無規(guī)定),既能當主設(shè)備,也能當從設(shè)備(需要軟件進行配置)。
 3)主設(shè)備負責(zé)調(diào)度總線,決定某一時刻和哪個從設(shè)備通信。同一時刻,I2C總線上只能有一對主設(shè)備、從設(shè)備通信。
 4)每個I2C從設(shè)備在I2C總線通訊中有一個I2C從設(shè)備地址,該地址唯一,是從設(shè)備的固有屬性,通信中主設(shè)備通過從設(shè)備地址來找到從設(shè)備。

I2C總線多主設(shè)備結(jié)構(gòu)如下圖所示:

I2C總線多主設(shè)備結(jié)構(gòu)

1.2 通訊特征

串行、同步、非差分、低速率

1)串行通信,所有的數(shù)據(jù)以位為單位在SDA線上串行傳輸
2)同步通信,即雙方工作在同一個時鐘下,一般是通信的A方通過一根CLK信號線,將A設(shè)備的時鐘傳輸?shù)紹設(shè)備,B設(shè)備在A設(shè)備傳輸?shù)臅r鐘下工作。同步通信的特征是:通信線中有CLK。
3)非差分,I2C通信速率不高,且通信距離近,使用電平信號通信。
4)低速率,I2C一般是同一個板子上的兩個IC芯片間通信,數(shù)據(jù)量不大,速率低。速率:幾百KHz,速率可能不同,不能超過IC的最高速率。

1.3 I2C總線狀態(tài)

I2C總線上有兩種狀態(tài):

空閑態(tài):沒有設(shè)備發(fā)生通信。
忙態(tài):其中一個從設(shè)備和主設(shè)備通信,I2C總線被占用,其他從設(shè)備處于等待狀態(tài)。

2. I2C總線通信協(xié)議

時序:在通信中時序是通信線上按時間順序發(fā)生的電平變化,及這些電平變化對通信的意義。

每個通信周期都由一個起始位開始通信,由一個結(jié)束位結(jié)束通信,中間部分是傳遞的數(shù)據(jù)。

每個通信周期,主設(shè)備會先發(fā)8位的從設(shè)備地址(從設(shè)備地址由高7位的實際從設(shè)備地址和低1位的讀/寫標志位組成),主設(shè)備以廣播的形式發(fā)送從設(shè)備地址,I2C總線上的所有從設(shè)備收到地址后,判斷從設(shè)備地址是否匹配,不匹配的從設(shè)備繼續(xù)等待,匹配的設(shè)備發(fā)出一個應(yīng)答信號。

同一時刻,主設(shè)備、從設(shè)備只能有一個設(shè)備發(fā)送數(shù)據(jù)。

2.1 起始位和結(jié)束位

I2C總線通訊由起始位開始通訊,由結(jié)束位停止通訊,并釋放I2C總線。起始位和結(jié)束位都由主設(shè)備發(fā)出。
起始位(S):在SCL為高電平時,SDA由高電平變?yōu)榈碗娖?br> 結(jié)束位(P):在SCL為高電平時,SDA由低電平變?yōu)楦唠娖?/p>

如下圖所示:

I2C的起始位與停止位

2.2 數(shù)據(jù)格式與應(yīng)答

I2C數(shù)據(jù)以字節(jié)(即8bits)為單位傳輸,每個字節(jié)傳輸完后都會有一個ACK應(yīng)答信號。應(yīng)答信號的時鐘是由主設(shè)備產(chǎn)生的。

應(yīng)答(ACK):拉低SDA線,并在SCL為高電平期間保持SDA線為低電平
非應(yīng)答(NOACK):不要拉低SDA線(此時SDA線為高電平),并在SCL為高電平期間保持SDA線為高電平

在傳輸期間,如果從設(shè)備來不及處理主設(shè)備發(fā)送的數(shù)據(jù),從設(shè)備會保持SCL線為低電平,強迫主設(shè)備等待從設(shè)備釋放SCL線,直到從設(shè)備處理完后,釋放SCL線,接著進行數(shù)據(jù)傳輸。

如下圖所示:

I2C的數(shù)據(jù)格式與應(yīng)答信號

2.3 數(shù)據(jù)傳輸通訊

1)寫數(shù)據(jù)

開始數(shù)據(jù)傳輸后,先發(fā)送一個起始位(S),主設(shè)備發(fā)送一個地址數(shù)據(jù)(由7bit的從設(shè)備地址,和最低位的寫標志位組成的8bit字節(jié)數(shù)據(jù),該讀寫標志位決定數(shù)據(jù)的傳輸方向),然后,主設(shè)備釋放SDA線,并等待從設(shè)備的應(yīng)答信號(ACK)。每一個字節(jié)數(shù)據(jù)的傳輸都要跟一個應(yīng)答信號位。數(shù)據(jù)傳輸以停止位(P)結(jié)束,并且釋放I2C總線。

2)讀數(shù)據(jù)

開始通訊時,主設(shè)備先發(fā)送一個起始信號(S),主設(shè)備發(fā)送一個地址數(shù)據(jù)(由7bit的從設(shè)備地址,和最低位的寫標志位組成的8bit字節(jié)數(shù)據(jù)),然后,主設(shè)備釋放SDA線,并等待從設(shè)備的應(yīng)答信號(ACK),從設(shè)備應(yīng)答主設(shè)備后,主設(shè)備再發(fā)送要讀取的寄存器地址,從設(shè)備應(yīng)答主設(shè)備(ACK),主設(shè)備再次發(fā)送起始信號(Sr),主設(shè)備發(fā)送設(shè)備地址(包含讀標志),從設(shè)備應(yīng)答主設(shè)備,并將該寄存器的值發(fā)送給主設(shè)備;

讀取單字節(jié)數(shù)據(jù)
主設(shè)備要讀取的數(shù)據(jù),如果是只有一個字節(jié)的數(shù)值,就要結(jié)束應(yīng)答,主設(shè)備要先發(fā)送一個非應(yīng)答信號(NOACK),再發(fā)送結(jié)束信號(P);
讀取多字節(jié)數(shù)據(jù)
主設(shè)備要讀取的數(shù)據(jù),如果是大于一個字節(jié)的多個數(shù)據(jù),就發(fā)送ACK應(yīng)答信號(ACK),而不是非應(yīng)答信號(NOACK),然后主設(shè)備再次接收從設(shè)備發(fā)送的數(shù)據(jù),依次類推,直到主設(shè)備讀取的數(shù)值是最后一個字節(jié)數(shù)據(jù)后,需要主設(shè)備給從設(shè)備發(fā)送非應(yīng)答信號(NOACK),再發(fā)送結(jié)束信號(P),結(jié)束I2C通訊,并釋放I2C總線。

I2C的數(shù)據(jù)傳輸

注意:所有的數(shù)據(jù)傳輸過程中,SDA線的電平變化必須在SCL為低電平時進行,SDA線的電平在SCL線為高電平時要保持穩(wěn)定不變。如下圖所示:

I2C數(shù)據(jù)位變化與時鐘線關(guān)系

3. 總結(jié)

本文講述了I2C總線的特征和總線協(xié)議,具體的實現(xiàn)方法有兩種:

一種是:I2C總線協(xié)議的軟件模擬實現(xiàn)方法
另一種是:Linux內(nèi)核中I2C模塊的實現(xiàn)方法。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多