轉:《IIC時序》

來源:互聯網
上載者:User

標籤:blog   http   使用   strong   sp   資料   on   log   bs   

I2C(Inter-Integrated Circuit)匯流排是一種由PHILIPS公司開發的兩線式串列匯流排,用於串連微控制器及其外圍裝置。I2C匯流排產生於在80年代,最初為音頻和視頻裝置開發,如今主要在伺服器管理中使用,其中包括單個組件狀態的通訊。例如管理員可對各個組件進行查詢,以管理系統的配置或掌握組件的功能狀態,如電源和系統風扇。可隨時監控記憶體、硬碟、網路、系統溫度等多個參數,增加了系統的安全性,方便了管理。   

 1 I2C匯流排特點

I2C匯流排最主要的優點是其簡單性和有效性。由於介面直接在組件之上,因此I2C匯流排佔用的空間非常小,減少了電路板的空間和晶片管腳的數量,降低了互聯成本。匯流排的長度可高達25英尺,並且能夠以10Kbps的最大傳輸速率支援40個組件。I2C匯流排的另一個優點是,它支援多主控(multimastering), 其中任何能夠進行發送和接收的裝置都可以成為主匯流排。一個主控能夠控制訊號的傳輸和時鐘頻率。當然,在任何時間點上只能有一個主控。    

2 匯流排的構成及訊號類型  

 I2C匯流排是由資料線SDA和時鐘SCL構成的串列匯流排,可發送和接收資料。在CPU與被控IC之間、IC與IC之間進行雙向傳送,最高傳送速率100kbps。各種被控制電路均並聯在這條匯流排上,但就像電話機一樣只有撥通各自的號碼才能工作,所以每個電路和模組都有唯一的地址,在資訊的傳輸過程中,I2C匯流排上並接的每一模組電路既是主控器(或被控器),又是發送器(或接收器),這取決於它所要完成的功能。

CPU發出的控制訊號分為地址碼和控制量兩部分,地址碼用來選址,即接通需要控制的電路,確定控制的種類;控制量決定該調整的類別(如對比、亮度等)及需要調整的量。這樣,各控制電路雖然掛在同一條匯流排上,卻彼此獨立,互不相關。

I2C匯流排在傳送資料過程中共有三種類型訊號, 它們分別是:開始訊號、結束訊號和應答訊號。   

開始訊號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送資料。   

結束訊號:SCL為高電平時,SDA由低電平向高電平跳變,結束傳送資料。   

應答訊號:接收資料的IC在接收到8bit資料後,向發送資料的IC發出特定的低電平脈衝,表示已收到資料。CPU向受控單元發出一個訊號後,等待受控單元發出一個應答訊號,CPU接收到應答訊號後,根據實際情況作出是否繼續傳遞訊號的判斷。若未收到應答訊號,由判斷為受控單元出現故障。  

 目前有很多半導體整合電路上都整合了I2C介面。帶有I2C介面的單片機有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外圍器件如儲存空間、監控晶片等也提供I2C介面。

 

在I2C匯流排通訊的過程中,參與通訊的雙方互相之間所傳輸的資訊種類歸納如下。
  主控器向被控器發送的資訊種類有:啟動訊號、停止訊號、7位地址碼、讀/寫控制位、10位地址碼、資料位元組、重啟動訊號、應答訊號、時鐘脈衝。
  被控器向主控器發送的資訊種類有:應答訊號、資料位元組、時鐘低電平。
  下面對I2C匯流排通訊過程中出現的幾種訊號狀態和時序進行分析。
  ①匯流排空閑狀態。
  I2C匯流排匯流排的SDA和SCL兩條訊號線同時處於高電平時,規定為匯流排的空閑狀態。此時各個器件的輸出級場效應管均處在截止狀態,即釋放匯流排,由兩條訊號線各自的上拉電阻把電平拉高。
  ②啟動訊號。
  在時鐘線SCL保持高電平期間,資料線SDA上的電平被拉低(即負跳變),定義為I2C匯流排匯流排的啟動訊號,它標誌著一次資料轉送的開始。

     啟動訊號是一種電平跳變時序訊號,而不是一個電平訊號。啟動訊號是由主控器主動建立的,在建立該訊號之前I2C匯流排必須處於空閑狀態,1所示


③停止訊號。
  在時鐘線SCL保持高電平期間,資料線SDA被釋放,使得SDA返回高電平(即正跳變),稱為I2C匯流排的停止訊號,它標誌著一次資料轉送的終止。
  停止訊號也是一種電平跳變時序訊號,而不是一個電平訊號,停止訊號也是由主控器主動建立的,建立該訊號之後,I2C匯流排將返回空閑狀態。
  ④資料位元傳送。  
  在I2C匯流排上傳送的每一位元據都有一個時鐘脈衝相對應(或同步控制),即在SCL串列時鐘的配合下,在SDA上逐位地串列傳送每一位元據。
  進行資料傳送時,在SCL呈現高電平期間,SDA上的電平必須保持穩定,低電平為資料0,高電平為資料1。
  只有在SCL為低電平期間,才允許SDA上的電平改變狀態。邏輯0的電平為低電壓,而邏輯1的電平取決於器件本身的正電源電壓VDD(當使用獨立電源時),2所示。


 

⑤應答訊號。
  I2C匯流排上的所有資料都是以8位位元組傳送的,發送器每發送一個位元組,就在時鐘脈衝9期間釋放資料線,由接收器反饋一個應答訊號。
  應答訊號為低電平時,規定為有效應答位(ACK簡稱應答位),表示接收器已經成功地接收了該位元組;應答訊號為高電平時,規定為非應答位(NACK),一般表示接收器接收該位元組沒有成功。
  對於反饋有效應答位ACK的要求是,接收器在第9個時鐘脈衝之前的低電平期間將SDA線拉低,並且確保在該時鐘的高電平期間為穩定的低電平。

  如果接收器是主控器,則在它收到最後一個位元組後,發送一個NACK訊號,以通知被控發送器結束資料發送,並釋放SDA線,以便主控接收器發送一個停止訊號P,3所示。

⑥插入等待時間。
  如果被控器需要延遲下一個資料位元組開始傳送的時間,則可以通過把時鐘線SCL電平拉低並且保持,使主控器進入等待狀態。
  一旦被控器釋放時鐘線,資料轉送就得以繼續下去,這樣就使得被控器得到足夠時間轉移已經收到的資料位元組,或者準備好即將發送的資料位元組。
  帶有CPU的被控器在對收到的地址位元組做出應答之後,需要一定的時間去執行中斷服務子程式,來分析或比較地址碼,其間就把SCL線鉗位在低電平上,直到處理妥當後才釋放SCL線,進而使主控器繼續後續資料位元組的發送,4所示。

⑦重啟動訊號。
  在主控器控制匯流排期間完成了一次資料通訊(發送或接收)之後,如果想繼續佔用匯流排再進行一次資料通訊(發送或接收),而又不釋放匯流排,就需要利用重啟動Sr訊號時序。
  重啟動訊號Sr既作為前一次資料轉送的結束,又作為後一次資料轉送的開始。利用重啟動訊號的優點是,在前後兩次通訊之間主控器不需要釋放匯流排,這樣就不會丟失匯流排的控制權,即不讓其他主器件節點搶佔匯流排。

  ⑧時鐘同步。
  如果在某一I2C匯流排系統中存在兩個主器件節點,分別記為主器件1和主器件2,其時鐘輸出端分別為CLK1和CL【0,它們都有控制匯流排的能力。
  假設在某一期間兩者相繼向SCL線發出了波形不同的時鐘脈衝序列CLK1和CLK2(時鐘脈衝的高、低電平寬度都是依靠各自內部專用計數器定時產生的),在匯流排控制權還沒有裁定之前這種現象是可能出現的。
  鑒於I2C匯流排的“線與”特性,使得時鐘線SCL上得到的時鐘訊號波形,既不像主器件1所期望的CLK1,也不像主器件2所期望的CLK2,而是兩者進行邏輯與的結果。
  CLKI和CLK2的合成波形作為共同的同步時鐘訊號,一旦匯流排控制權裁定給某一主器件,則匯流排時鐘訊號將會只由該主器件產生,5所示。

 

⑨匯流排衝突和匯流排仲裁。
  假如在某I2C匯流排系統中存在兩個主器件節點,分別記為主器件1和主器件2,其資料輸出端分別為DATA1和DATA2,它們都有控制匯流排的能力,這就存在著發生匯流排衝突(即寫衝突)的可能性。
  假設在某一瞬間兩者相繼向匯流排發出了啟動訊號,鑒於:I2C匯流排的“線與”特性,使得在資料線SDA上得到的訊號波形是DATA1和DATA2兩者相與的結果,該結果略微超前送出低電平的主器件1,其DATA1的下降沿被當做SDA的下降沿。
  在匯流排被啟動後,主器件1企圖發送資料“101……”,主器件2企圖發送資料“100101……”。
  兩個主器件在每次發出一個資料位元的同時都要對自己輸出端的訊號電平進行抽檢,只要抽檢的結果與它們自己預期的電平相符,就會繼續佔用匯流排,匯流排控制權也就得不到裁定結果。
  主器件1的第3位期望發送“1”,也就是在第3個刻度內送出高電平。
  在該刻度的高電平期間,主器件1進行例行抽檢時,結果檢測到一個不相匹配的電平“0”,這時主器件1隻好決定放棄匯流排控制杈;因此,主器件2就成了匯流排的惟一主宰者,匯流排控制權也就最終得出了裁定結果,從而實現了匯流排仲裁的功能。
  從以上匯流排仲裁的完成過程可以得出:仲裁過程主器件1和主器件2都不會遺失資料;各個主器件沒有優先順序別之分,匯流排控制權是隨機裁定的,即使是搶先發送啟動訊號的主器件1最終也並沒有得到控制杈。
  系統實際上遵循的是“低電平優先”的仲裁原則,將匯流排判給在資料線上先發送低電平的主器件,而其他發送高電平的主器件將失去匯流排控制權,6所示。

⑩匯流排封鎖狀態。
  在特殊情況下,如果需要禁止所有發生在I2C匯流排上的通訊活動,封鎖或關閉匯流排是一種可行途徑,只要掛接於該匯流排上的任意一個器件將時鐘線SCL鎖定在低電平上即可。

 

轉:《IIC時序》

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.