天天看點

談談I2C(Inter-Integrated Circuit,內建電路總線)

今天我們來一起聊聊I2C(Inter-Integrated Circuit,內建電路總線) ;

首先抛出一個問題吧!

我們已經有了及其友善的UART(Universal Asynchronous Receiver and Transmitter)資料通信協定了,為什麼還要有I2C、SPI這些協定呢?

本文對I2C進行一個簡單的知識普及;

I2C(Inter-Integrated Circuit,內建電路總線):I2C總線是由Philips公司開發的一種簡單、雙向二線制同步串行總線。它隻需要兩根線即可在連接配接于總線上的器件之間傳送資訊。

他擁有2根線:SDA(串行資料線)和SCL(串行時鐘線);

談談I2C(Inter-Integrated Circuit,內建電路總線)

SDA(串行資料線)和SCL(串行時鐘線)都是雙向I/O線,接口電路為開漏輸出.需通過上拉電阻接電源VCC.當總線空閑時.兩根線都是高電平,連接配接總線的外同器件都是CMOS器件,輸出級也是開漏電路.在總線上消耗的電流很小,是以,總線上擴充的器件數量主要由電容負載來決定,因為每個器件的總線接口都有一定的等效電容.而線路中電容會影響總線傳輸速度.當電容過大時,有可能造成傳輸錯誤.是以,其負載能力為400pF,是以可以估算出總線允許長度和所接器件數量。

一般CPU都是自帶I2C總線功能,是以在硬體角度使用起來是非常簡單的;

I2C總線隻需要一根資料線和一根時鐘線兩根線,總線接口已經內建在晶片内部,不需要特殊的接口電路,而且片上接口電路的濾波器可以濾去總線資料上的毛刺.是以I2C總線簡化了硬體電路PCB布線,降低了系統成本,提高了系統可靠性。因為12C晶片除了這兩根線和少量中斷線,與系統再沒有連接配接的線,使用者常用IC可以很容易形成标準化和子產品化,便于重複利用。

下圖為335X,一個CORTEX-A8的ARM;帶有3路的I2C,總線接口已經內建在晶片内部,不需要特殊的接口電路;

談談I2C(Inter-Integrated Circuit,內建電路總線)

使用指南

談談I2C(Inter-Integrated Circuit,內建電路總線)
談談I2C(Inter-Integrated Circuit,內建電路總線)

直接從CPU中引出的I2C的兩條線(SDA和SCL)分别經過一個上拉電阻後直接用在一個256K*8的EEPROM中去;

I2C相對于其他的協定來說,還有一個優點就是:

I2C總線是雙向、兩線(SCL、SDA)、串行、多主要(multi-master)接口标準,具有總線仲裁機制,非常适合在器件之間進行近距離、非經常性的資料通信。在它的協定體系中,傳輸資料時都會帶上目的裝置的裝置位址,是以可以實作裝置組網。

它支援多主要(multimastering),其中任何能夠進行發送和接收的裝置都可以成為主總線。一個主要能夠控制信号的傳輸和時鐘頻率。當然,在任何時間點上隻能有一個主要。

談談I2C(Inter-Integrated Circuit,內建電路總線)

另附一個I2C時序圖

談談I2C(Inter-Integrated Circuit,內建電路總線)

1、總線空閑狀态 :

因為I2C總線的兩條信号線,均有一個上拉電阻把電平拉高;預設狀态下是一個高電平,是以I2C總線總線的SDA和SCL兩條信号線同時處于高電平時,規定為總線的空閑狀态。此時各個器件的輸出級場效應管均處在截止狀态,即釋放總線。

2、啟動信号

  在時鐘線SCL保持高電平期間,資料線SDA上的電平被拉低(即負跳變),定義為I2C總線總線的啟動信号,它标志着一次資料傳輸的開始。啟動信号是一種電平跳變時序信号,而不是一個電平信号。啟動信号是由主要器主動建立的,在建立該信号之前I2C總線必須處于空閑狀态。

3、重新開機動信号

  在主要器控制總線期間完成了一次資料通信(發送或接收)之後,如果想繼續占用總線再進行一次資料通信(發送或接收),而又不釋放總線,就需要利用重新開機動Sr信号時序。重新開機動信号Sr既作為前一次資料傳輸的結束,又作為後一次資料傳輸的開始。利用重新開機動信号的優點是,在前後兩次通信之間主要器不需要釋放總線,這樣就不會丢失總線的控制權,即不讓其他主器件節點搶占總線。

4、停止信号

  在時鐘線SCL保持高電平期間,資料線SDA被釋放,使得SDA傳回高電平(即正跳變),稱為I2C總線的停止信号,它标志着一次資料傳輸的終止。停止信号也是一種電平跳變時序信号,而不是一個電平信号,停止信号也是由主要器主動建立的,建立該信号之後,I2C總線将傳回空閑狀态。

5、資料傳輸狀态

在出現啟動狀态後,時鐘線是規律的周期。在SCL為高電平的時候,SDA的資料為傳輸的資料,每個資料占用一個時鐘脈沖,如果資料需要變化,則需要在SCL的低電平器件完成變化。

附:總線競争的仲裁

總線上可能挂接有多個器件,有時會發生兩個或多個主器件同時想占用總線的情況,這種情況叫做總線競争。I2C總線具有多主要能力,可以對發生在SDA線上的總線競争進行仲裁,其仲裁原則是這樣的:當多個主器件同時想占用總線時,如果某個主器件發送高電平,而另一個主器件發送低電平,則發送電平與此時SDA總線電平不符的那個器件将自動關閉其輸出級。總線競争的仲裁是在兩個層次上進行的。首先是位址位的比較,如果主器件尋址同一個從器件,則進入資料位的比較,進而確定了競争仲裁的可靠性。由于是利用I2C總線上的資訊進行仲裁,是以不會造成資訊的丢失。

歡迎關注本人公衆号:

談談I2C(Inter-Integrated Circuit,內建電路總線)

AM335x硬體開發使用指南(三)

https://mp.weixin.qq.com/s/LHOcr66ktBisaYdORG-2cQ

https://blog.csdn.net/weixin_42124889/article/details/80571506

AMR335x硬體開發使用指南(二)

https://mp.weixin.qq.com/s/krjhaz7LvXxiT2a9pvnAFw

AM335x硬體開發使用指南(一)

https://blog.csdn.net/weixin_42124889/article/details/80514842

聊聊無線充電——華為Mate RS保時捷版無線充電器詳解(上篇)

https://blog.csdn.net/weixin_42124889/article/details/80290757

聊聊無線充電——華為Mate RS保時捷版無線充電器詳解(下篇)

https://mp.weixin.qq.com/s/9o8-7YANXCiydjQ8u-EDsg

手機快充技術——快充技術&硬體詳解

https://blog.csdn.net/weixin_42124889/article/details/80255434

一文知曉高通曉龍845

https://mp.weixin.qq.com/s?__biz=MzU2NjYwMzQ1Ng==&mid=2247483678&idx=1&sn=c396ca9582a7f5124e0b00cb94d6a482&chksm=fca8bab1cbdf33a79189346c9ed964bca08f446427f67a509b3577bec2fd533fe6aeb39d5eaf#rd

A12 chip即将來臨,是IPhone XI?

https://mp.weixin.qq.com/s/j3IJdhY1CKS7aW120zgs8Q

繼續閱讀