集成電路互連總線I2C_第1頁
集成電路互連總線I2C_第2頁
集成電路互連總線I2C_第3頁
集成電路互連總線I2C_第4頁
集成電路互連總線I2C_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、.,集成電路互連總線I2C,主要內(nèi)容,1.1 I2C總線通用知識 1.2 I2C總線的硬件相關(guān)術(shù)語與典型電路 1.3 I2C總線數(shù)據(jù)通信協(xié)議概要 1.4 主機向從機讀/寫1個字節(jié)數(shù)據(jù)的過程 1.5 關(guān)于I2C的進一步討論,1.1 I2C總線通用知識,1.1.1 I2C總線的歷史概況與特點 I2C(Inter-Integrated Circuit)總線標準的歷史概況 1992年P(guān)HILIPS首次發(fā)布I2C總線規(guī)范Version1.0 1998年P(guān)HILIPS發(fā)布I2C總線規(guī)范Version2.0,至此標準模式和快速模式的I2C總線已經(jīng)獲得了廣泛應(yīng)用,標準模式傳輸速率為100kbps,快速模式40

2、0kbps。同時,I2C總線也由7位尋址發(fā)展到10位尋址,滿足了更大尋址空間的需求 2001年P(guān)HILIPS又發(fā)布了I2C總線規(guī)范Version2.1,完善和擴展了I2C總線的功能,并提出了傳輸速率可達3.4Mbps的高速模式,這使得I2C總線能夠支持現(xiàn)有及將來的高速串行傳輸,如EEPROM和Flash存儲器等,I2C總線特點 在硬件上,二線制的I2C串行總線使得各IC只需最簡單的連接,而且總線接口都集成在IC中,不需另加總線接口電路 I2C總線還支持多主控(multi-mastering) 串行的8位雙向數(shù)據(jù)傳輸位速率在標準模式下可達100kbps,快速模式下可達400kbps,高速模式下可

3、達3.4Mbps 連接到相同總線的IC數(shù)量只受到總線最大電容(400pf)的限制。但如果在總線中加上82B715總線遠程驅(qū)動器可以把總線電容限制擴展十倍,傳輸距離可增加到15m,1.2 I2C總線的硬件相關(guān)術(shù)語與典型電路,I2C總線硬件相關(guān)術(shù)語 主機(主控器):在I2C總線中,提供時鐘信號,對總線時序進行控制的器件 從機(被控器):在I2C系統(tǒng)中,除主機外的其它設(shè)備均為從機 地址:每個I2C器件都有自己的地址,以供自身在從機模式下使用 發(fā)送器:發(fā)送數(shù)據(jù)到總線的器件 接收器:從總線接收數(shù)據(jù)的器件 SDA(Serial DAta):串行數(shù)據(jù)線 SCL(Serial CLock):串行時鐘線,I2C

4、總線的典型電路 下圖給出一個由MCU作為主機,通過I2C總線帶3個從機的單主機I2C總線系統(tǒng)。這是最常用、最典型的I2C總線連接方式,I2C總線的典型連接,1.3 I2C總線數(shù)據(jù)通信協(xié)議概要,I2C總線上數(shù)據(jù)的有效性 I2C總線以串行方式傳輸數(shù)據(jù),從數(shù)據(jù)字節(jié)的最高位開始傳送,每個數(shù)位在SCL上都有一個時鐘脈沖相對應(yīng)。在一個時鐘周期內(nèi),當(dāng)時鐘線高電平時,數(shù)據(jù)線上必須保持穩(wěn)定的邏輯電平狀態(tài),高電平為數(shù)據(jù)1,低電平為數(shù)據(jù)0。當(dāng)時鐘信號為低電平時,才允許數(shù)據(jù)線上的電平狀態(tài)變化,I2C總線上數(shù)據(jù)的有效性,I2C總線上的信號類型 開始信號(START):如下(圖1)當(dāng)SCL為高電平時,SDA由高電平向低電

5、平跳變,產(chǎn)生開始信號。當(dāng)總線空閑的時候(例如沒有主動設(shè)備在使用總線,即SDA和SCL都處于高電平),主機通過發(fā)送開始信號(START)建立通信 停止信號(STOP):如下(圖1)當(dāng)SCL為高電平時,SDA由低電平向高電平的跳變,產(chǎn)生停止信號。主機通過發(fā)送停止信號,結(jié)束時鐘信號和數(shù)據(jù)通信。SDA和SCL都將被復(fù)位為高電平狀態(tài) 重新開始信號(Repeated START):在I2C總線上,由主機發(fā)送一個開始信號啟動一次通信后,在首次發(fā)送停止信號之前,主機通過發(fā)送重新開始信號,可以轉(zhuǎn)換與當(dāng)前從機的通信模式,或是切換到與另一個從機通信。如下(圖1)所示,當(dāng)SCL為高電平時,SDA由高電平向低電平跳變,

6、產(chǎn)生重新開始信號,它的本質(zhì)就是一個開始信號,圖1:開始、重新開始和停止信號,應(yīng)答信號(A):接收數(shù)據(jù)的IC在接收到8位數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出的特定的低電平脈沖。每一個數(shù)據(jù)字節(jié)后面都要跟一位應(yīng)答信號,表示已收到數(shù)據(jù),I2C總線的應(yīng)答信號,I2C總線上數(shù)據(jù)傳輸格式 一般情況下,一個標準的I2C通信由四部分組成:開始信號、從機地址傳輸、數(shù)據(jù)傳輸和結(jié)束信號。I2C總線上傳送的每一個字節(jié)均為8位,首先發(fā)送的數(shù)據(jù)位為最高位,每傳送一個字節(jié)后都必須跟隨一個應(yīng)答位,每次通信的數(shù)據(jù)字節(jié)數(shù)是沒有限制的;在全部數(shù)據(jù)傳送結(jié)束后,由主機發(fā)送停止信號,結(jié)束通信,I2C總線的數(shù)據(jù)傳輸格式,I2C總線尋址約定 為了消除

7、I2C總線系統(tǒng)中主控器與被控器的地址選擇線,最大限度地簡化總線連接線,I2C總線采用了獨特的尋址約定,規(guī)定了起始信號后的第一個字節(jié)為尋址字節(jié),用來尋址被控器件,并規(guī)定數(shù)據(jù)傳送方向。 在I2C總線系統(tǒng)中,尋址字節(jié)由被控器的7位地址位(D7D1位)和一位方向位(D0位)組成。方向位為0時,表示主控器將數(shù)據(jù)寫入被控器,為1時表示主控器從被控器讀取數(shù)據(jù)。主控器發(fā)送起始信號后,立即發(fā)送尋址字節(jié),這時總線上的所有器件都將尋址字節(jié)中的7位地址與自己器件地址比較。如果兩者相同,則該器件認為被主控器尋址,并發(fā)送應(yīng)答信號,被控器根據(jù)數(shù)據(jù)方向位(R/W)確定自身是作為發(fā)送器還是接收器。,1.4 主機向從機讀/寫1個

8、字節(jié)數(shù)據(jù)的過程,主機向從機寫1個字節(jié)數(shù)據(jù)的過程 主機要向從機寫1個字節(jié)數(shù)據(jù)時,主機首先產(chǎn)生START信號,然后緊跟著發(fā)送一個從機地址,這個地址共有7位,緊接著的第8位是數(shù)據(jù)方向位(R/W),0表示主機發(fā)送數(shù)據(jù)(寫),1表示主機接收數(shù)據(jù)(讀),這時候主機等待從機的應(yīng)答信號(ACK),當(dāng)主機收到應(yīng)答信號時,發(fā)送要訪問的地址,繼續(xù)等待從機的響應(yīng)信號,當(dāng)主機收到響應(yīng)信號時,發(fā)送1個字節(jié)的數(shù)據(jù),繼續(xù)等待從機的響應(yīng)信號,當(dāng)主機收到響應(yīng)信號時,產(chǎn)生停止信號,結(jié)束傳送過程。,主機向從機寫數(shù)據(jù),主機從從機讀1個字節(jié)數(shù)據(jù)的過程 當(dāng)主機要從從機讀1個字節(jié)數(shù)據(jù)時,主機首先產(chǎn)生START信號,然后緊跟著發(fā)送一個從機地址

9、,注意此時該地址的第8位為0,表明是向從機寫命令,這時候主機等待從機的應(yīng)答信號(ACK),當(dāng)主機收到應(yīng)答信號時,發(fā)送要訪問的地址,繼續(xù)等待從機的應(yīng)答信號,當(dāng)主機收到應(yīng)答信號后,主機要改變通信模式,所以主機發(fā)送重新開始信號,然后緊跟著發(fā)送一個從機地址,注意此時該地址的第8位為1,表明將主機設(shè)置成接收模式開始讀取數(shù)據(jù),這時主機等待從機的應(yīng)答信號,當(dāng)主機收到應(yīng)答信號時,就可以接收1個字節(jié)的數(shù)據(jù),當(dāng)接收完成后,主機發(fā)送非應(yīng)答信號,表示不再接收數(shù)據(jù),主機進而產(chǎn)生停止信號,結(jié)束傳送過程。,主機從從機讀數(shù)據(jù),* AW60的I2C模塊寄存器,AW60的I2C模塊相關(guān)寄存器,I2C地址寄存器 I2C地址寄存器(

10、I2C Address Register,I2C1A) D7D1ADR7ADR1為MCU作為從機時的從機地址。 當(dāng)主機在I2C總線上發(fā)送從機地址尋址從機,MCU作為從機設(shè)備時,將該地址與I2C1A的高7位比較,查看自己是否被主機選中 D0保留位。該位是為了將來的兼容性而設(shè)置的保留位,讀出總是0。寫I2C1A時,D0位不使用,I2C分頻寄存器 I2C分頻寄存器(I2C Frequency Divider Register,I2C1F)用于產(chǎn)生相應(yīng)的分頻因子 I2C分頻寄存器的高2位MULT定義了增頻因子a,a和SCL的分頻因子配合使用,產(chǎn)生I2C波特率。當(dāng)MULT為00、01、10時,a的值分別

11、為1、2、4;MULT=11不使用 I2C的低6位定義了I2C時鐘速率(ICR),這6位用來定義SCL分頻因子b和SDA保持值,分頻因子b乘以增頻因子a的值用于產(chǎn)生I2C總線波特率,公式如下: I2C總線波特率=CPU總線頻率(Hz)/(ab) SDA保持時間是從SCL線上時鐘的下降沿開始到SDA線上數(shù)據(jù)穩(wěn)定這段時間,SDA保持值就是用來計算SDA保持時間的,公式如下: SDA保持時間=CPU總線周期SDA保持值,ICR中不同的內(nèi)容對應(yīng)著不同的SCL分頻因子值和不同的SDA保持值,下 面舉例說明I2C總線波特率和SDA保持時間計算方法 設(shè)CPU總線頻率為8MHz,MULT設(shè)置為01(a=2),

12、要想得到100kbps的I2C總 線波特率,則計算過程如下: 根據(jù)公式:I2C總線波特率=CPU總線頻率(Hz)/(ab),將已知相應(yīng)值帶入得: 100000=8000000/(2b),b=40 根據(jù)SCL分頻因子b的值,在表10-2中查找相應(yīng)的ICR值和SDA保持值,可以看到,當(dāng)b=40時,ICR=$07或$0B,而相應(yīng)的SDA保持值=10或9 根據(jù)公式:SDA保持時間=CPU總線周期SDA保持值,算得:ICR=$07,SDA保持值=10時,SDA保持時間=1/800000010=1.25s ICR=$0B,SDA保持值=9時,SDA保持時間=1/80000009=1.125s 較長的SDA

13、保持時間,會降低通信速率,但同時也增加了穩(wěn)定性,并且能延長設(shè)備間的通信距離。編程時應(yīng)以通信的可靠性為原則,選擇合適的SDA保持時間來確定ICR值。如程序中選用SDA保持值=9,就能得到可靠的通信,那么將ICR設(shè)定為$0B即可;如果當(dāng)SDA保持值=9時通信不穩(wěn),就選擇另一個為10的值進行實驗,若通信仍不穩(wěn)定,在保持I2C總線頻率不變的前提下,可通過改變MULT位來調(diào)整SDA保持時間,I2C控制寄存器 I2C控制寄存器(I2C Control Register,I2C1C) D7I2CEN(I2C Enable)為I2C使能位 D6I2CIE(I2C Interrupt Enable)為I2C中斷

14、請求允許位 D5MST(Master Mode Select)為主模式選擇位 D4TX(Transmit Mode Select)為發(fā)送模式選擇位 D3TXAK(Transmit Acknowledge Enable)為發(fā)送應(yīng)答使能位 D2RSTA(Repeat START)位,當(dāng)MCU在主機模式下,向該位寫1,將產(chǎn)生一個重新開始信號。該位讀出時總是0 D1D0讀I2C1C時,D1、D0位為0;寫I2C1C時,D1、D0位不使用,I2C狀態(tài)寄存器 I2C狀態(tài)寄存器(I2C Status Register,I2C1S) D7TCF(Transfer Complete Flag)為發(fā)送完成標志位

15、D6IAAS(Addressed as a Slave)為地址被選擇標志位 D5BUSY(Bus Busy)為總線忙標志位 D4ARBL(Arbitration Lost)為仲裁丟失標志位 D3讀I2C1S時,D3位為0;寫I2C1S時,D3位不使用 D2SRW(Slave Read/Write)為從機讀寫標志位 D1I2CIF(I2C Interrupt Flag)為I2C中斷標志位。I2CIF位可讀可寫 D0RXAK(Receive Acknowledge)為接收應(yīng)答標志位,I2C I/O數(shù)據(jù)寄存器 I2C I/O數(shù)據(jù)寄存器(I2C Data I/O Register,I2C1D) 在主機

16、發(fā)送模式下,將數(shù)據(jù)寫入I2C1D就初始化了數(shù)據(jù)發(fā)送,先發(fā)送數(shù)據(jù)字節(jié)的最高位。在主機接收模式下,讀該寄存器,準備接收從機發(fā)往總線上的數(shù)據(jù)字節(jié)。該寄存器在MCU為從機模式時仍具有相同功能。值得注意的是,當(dāng)MCU要從主接收模式變?yōu)橹靼l(fā)送模式時,應(yīng)在從I2C1D寄存器讀取數(shù)據(jù)之前,進行模式轉(zhuǎn)換。,1.5 關(guān)于I2C的進一步討論,1.5.1 仲裁程序 I2C總線是多主機總線,允許多個主機連接到該總線上。如果2個或者2個以上主機試圖在同一時刻控制總線,則時鐘同步程序使用在每個主設(shè)備中集成的硬件定時器來確定總線時鐘,時鐘同步,由數(shù)據(jù)仲裁程序決定競爭的主設(shè)備的優(yōu)先級。當(dāng)另一個主設(shè)備發(fā)送邏輯0,而這個總線主設(shè)備

17、發(fā)送1時,該主設(shè)備將仲裁失敗。仲裁失敗的主設(shè)備立即轉(zhuǎn)換為從設(shè)備接收模式,并停止驅(qū)動SDA輸出,如下圖,在這種情況下,由主設(shè)備到從設(shè)備的轉(zhuǎn)變,不產(chǎn)生STOP條件,仲裁程序,1.5.2 數(shù)據(jù)傳輸同步交換 時鐘同步機制可用作數(shù)據(jù)傳輸?shù)耐浇粨Q(Handshake) 1.5.3 SPI與I2C的比較 SPI SPI是一種四線制串行總線接口,分別為時鐘引腳SPSCK、主入從出引腳MISO、主出從入引腳MOSI、從機選擇引腳。其工作在主/從模式。主機是時鐘提供者,可發(fā)起讀從機或?qū)憦臋C操作,控制完成一次主機與從機的對話。當(dāng)總線上存在多個從機時,要發(fā)起一次傳輸,主機將該從機的選擇線拉低,然后分別通過MOSI和MISO啟動數(shù)據(jù)發(fā)送或接收。發(fā)送和接收數(shù)據(jù)的寄存器相互獨立而實現(xiàn)雙緩存操作,可以實現(xiàn)全雙工等等,I2C總線 I2C是一種二線制串行總線接口,分別為開漏SCL串行時鐘和SDA串行數(shù)據(jù),工作在主/從模式。主機為時鐘源。數(shù)據(jù)傳輸是雙向

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論