本應(yīng)用筆記比較了大多數(shù)模擬IC使用的兩種常見串行數(shù)字接口: SPI?或 3 線,和I2C或 2 線。每個串行接口都為許多設(shè)計提供了優(yōu)點或缺點,具體取決于所需的數(shù)據(jù)速率、空間可用性和噪聲考慮等標準。本應(yīng)用筆記討論了這兩種串行接口之間的差異,并提供了詳細演示每個接口的示例。
介紹
雖然現(xiàn)實世界的信號總是模擬的,但如今越來越多的模擬IC通過數(shù)字接口進行通信。串行接口在提供串行時鐘的主設(shè)備和從/外設(shè)之間進行通信。如今,大多數(shù)微控制器上的SPI(3線)和I2C(2線)端口是發(fā)送和接收數(shù)據(jù)的常用方法。因此,微控制器通過多條總線進行通信,以控制外設(shè),包括模數(shù)轉(zhuǎn)換器(ADC)、數(shù)模轉(zhuǎn)換器(DAC)、智能電池、端口擴展器、EEPROM和溫度傳感器。與通過并行接口發(fā)送的數(shù)據(jù)不同,串行數(shù)據(jù)以多個位連續(xù)傳輸,通常通過兩條、三條或四條數(shù)據(jù)/定時線。雖然并行接口提供速度,但串行接口具有更少的控制和數(shù)據(jù)線的優(yōu)勢。
串行接口基礎(chǔ)知識
串行接口有三種類型:3 線、2 線和單線。本文重點介紹 3 線和 2 線接口。串行外設(shè)接口 (SPI)、排隊串行外設(shè)接口 (QSPI?)和微絲?(或微絲加?) 標準通過 3 線接口進行通信。IC 間 (I2C) 和系統(tǒng)管理總線 (SMBus?) 標準通過 2 線接口進行通信。兩種類型的串行接口都有其優(yōu)點和缺點。
3線接口
三線接口使用片選線(/CS或/SS)、時鐘線(SCLK)和數(shù)據(jù)輸入/主輸出線(稱為DIN或MOSI)。這些接口還可以包括數(shù)據(jù)輸出/主輸入線(稱為DOUT或MISO),有時稱為4線接口。為簡單起見,本文將 3 線和 4 線接口稱為 3 線。
三線接口工作在更高的時鐘頻率下,不需要任何上拉電阻。SPI/QSPI和MICROWIRE接口還具有全雙工操作(數(shù)據(jù)可以同時發(fā)送和接收),并且在嘈雜的環(huán)境中不易出現(xiàn)問題。三線接口是邊沿觸發(fā)的,而不是電平觸發(fā)的。
3線接口的主要缺點是,除非從器件配置為菊花鏈配置,否則總線上的每個從器件都需要一條單獨的/CS線,如圖1所示。(菊花鏈將在下面更詳細地討論。3線接口也不確認數(shù)據(jù)已正確發(fā)送或接收。從軟件角度來看,3線接口比單主/單從應(yīng)用的2線接口更簡單、更高效。
圖1.三線接口利用數(shù)據(jù)輸入、數(shù)據(jù)輸出、時鐘和片選線。
2線接口
雙線接口僅使用數(shù)據(jù)線(SDA或SMBDATA)和時鐘線(SCL或SMBCLK)。這種使用較少的一條或兩條線路對于緊湊型設(shè)計(如手機和光纖應(yīng)用)來說是一個特別有用的優(yōu)勢。雙線接口還允許您在同一總線上連接多個從站,而無需片選信號。這種設(shè)計是可能的,因為每個從站都有自己唯一的地址。雙線接口還會在成功完成讀取后傳輸應(yīng)答位。由于2線接口只有一條數(shù)據(jù)線,因此它們只能在半雙工模式下工作(數(shù)據(jù)只能在給定的周期內(nèi)發(fā)送或接收,但不能同時發(fā)送或接收)。雙線接口是電平觸發(fā)的,如果數(shù)據(jù)位被錯誤識別,這可能會在嘈雜的環(huán)境中產(chǎn)生問題。
接口 | 優(yōu)勢 | 弊 |
3 線:SPI、QSPI 和 MICROWIRE PLUS |
1. 速度 2.無需 上拉電阻 3.全雙工操作 4.抗噪性 |
1. 總線連接 數(shù)量更多 2.一次與多個從站通信所需的單個芯片選擇線路 3.不確認收到的數(shù)據(jù) |
2線:I2C 和 SMBus |
1. 公交線路連接 更少 2.多個設(shè)備共享同一總線 3.確認接收到的數(shù)據(jù) |
1.速度:SMBus限制在100kHz;我2C 限制為 3.4MHz 2。半雙工操作 3.漏極開路總線需要上拉電阻 4.降低抗噪性 |
主機和從機通過串行接口通過多條總線進行通信。在一個寫入周期中,主機使用自己的時鐘和數(shù)據(jù)信號將數(shù)據(jù)傳輸?shù)綇臋C。在一個讀取周期中,從機將數(shù)據(jù)傳輸?shù)街髡尽?/p>
SPI、QSPI、MICROWIRE 設(shè)計
由摩托羅拉建立的SPI接口可用于流行的處理器和微控制器,如MAXQ2000。如上所述,SPI設(shè)計需要兩條控制線(/CS和SCLK)和兩條數(shù)據(jù)線(DIN/SDI和DOUT/SDO)。摩托羅拉 SPI/QSPI 標準將 DIN/SDI 數(shù)據(jù)線稱為 MOSI(主輸出、從入);DOUT/SDO數(shù)據(jù)線是MISO(主輸入、從輸出),/CS線是SS(從選擇)。為簡單明了起起,本文從從機的角度參考了3線數(shù)據(jù)線:DIN是從機的數(shù)據(jù)輸入,DOUT是從機的數(shù)據(jù)輸出。本文還將3線總線稱為/CS、SCLK、DIN和DOUT,因為Maxim外設(shè)使用這些引腳名稱。?
大多數(shù)SPI接口具有兩個配置位,即時鐘極性(CPOL)和時鐘相位(CPHA),用于確定從機何時對數(shù)據(jù)進行采樣。CPOL 確定 SCLK 在未切換時是空閑高 (CPOL = 1) 還是低 (CPOL = 0)。CPHA 確定在哪些 SCLK 邊緣數(shù)據(jù)移入和移出。當(dāng)CPOL = 0時,將CPHA設(shè)置為0會將數(shù)據(jù)轉(zhuǎn)移到SCLK上升沿的從站。將CPHA設(shè)置為1將數(shù)據(jù)轉(zhuǎn)移到SCLK下降沿上的從站。兩種CPOL和CPHA狀態(tài)允許四種不同的時鐘極性和相位組合;每個設(shè)置都與其他三個設(shè)置不兼容。主站和從站必須設(shè)置為相同的 CPOL 和 CPHA 狀態(tài)才能相互通信。
在其最基本的形式中,SPI接口一次傳輸2000位(一個字節(jié))的數(shù)據(jù),盡管有些微控制器一次傳輸兩個或更多字節(jié)。例如,MAXQ8微控制器一次可以傳輸16位或0位。當(dāng)CPOL = 0且CPHA = 8時,從高電平到低電平的/CS轉(zhuǎn)換開始從主站到從機的傳輸。/CS必須保持低電平,而SCLK脈沖高電平和低電平,持續(xù)八個完整的周期。DIN數(shù)據(jù)鎖定在上升的SCLK邊緣。數(shù)據(jù)字節(jié)在/CS從低到高轉(zhuǎn)換后加載到從機中。在相同的2位周期內(nèi),數(shù)據(jù)可從SCLK下降沿上的從機DOUT線獲得。圖3a顯示了CPHA=1時的2線SPI時序。圖3b顯示了CPHA=0時的<>線SPI時序。
圖 2a. 3 線接口時序 (CPHA = 1)。當(dāng)CPHA = 1且CPOL = 1時,3線接口將數(shù)據(jù)時鐘輸入時鐘上升沿的外設(shè),數(shù)據(jù)從時鐘下降沿的外設(shè)輸出。
圖 2b. 3 線接口時序 (CPHA = 0)。當(dāng)CHPA = 0且CPOL = 1時,3線接口將數(shù)據(jù)時鐘輸入時鐘下降沿的外設(shè),數(shù)據(jù)從時鐘上升沿的外設(shè)輸出。
/CS總線用作每個從站的使能信號,因為總線上的每個IC都需要自己的片選線。如果四個從站在同一總線上,則需要四條片選線來選擇合適的從站。如果從機的/CS線路為高電平(非活動),則從機將忽略SCLK轉(zhuǎn)換并將DOUT線路保持在高阻抗狀態(tài)。
一些3線接口外設(shè)可以使用菊花鏈方法進行編程。菊花鏈不是將單獨的/CS線連接到每個外設(shè),而是允許單個/CS和SCLK線控制串聯(lián)的多個外設(shè)。要以這種方式以菊花鏈方式連接外設(shè),3線接口必須包括DOUT線。如圖 1 所示,外圍設(shè)備 #1 的 DOUT 線用作外圍設(shè)備 #2 等的 DIN 線。
SPI標準未指定最大數(shù)據(jù)速率。相反,外設(shè)指定自己的最大數(shù)據(jù)速率,大多數(shù)在MHz范圍內(nèi)。微控制器可以適應(yīng)各種SPI速度。然而,當(dāng)通過SPI總線通信時,從機無法減慢主站的速度或確認正確的數(shù)據(jù)傳輸。
QSPI標準與SPI標準幾乎相同。事實上,外設(shè)無法區(qū)分QSPI總線和SPI總線。然而,與SPI主站不同,QSPI主站允許通過可編程芯片選擇進行數(shù)據(jù)傳輸。此外,這些QSPI主站一次可以在8位到16位之間傳輸,而SPI器件通常僅傳輸8位。您可以將 QSPI 設(shè)備配置為連續(xù)傳輸多達 16 個數(shù)據(jù)字(最多 256 位)。此傳輸完全由 QSPI 接口處理,無需微控制器干預(yù)。與SPI一樣,QSPI標準沒有規(guī)定最大數(shù)據(jù)速率。
由美國國家半導(dǎo)體公司制定的較舊的MICROWIRE標準與SPI非常相似。但是,MICROWIRE具有固定的時鐘極性和固定的時鐘相位(CPOL = 0和CPHA = 0)。DIN的數(shù)據(jù)始終鎖定在SCLK上升沿的從站中。數(shù)據(jù)從從機的DOUT引腳轉(zhuǎn)移到SCLK的下降沿。與SPI一樣,MICROWIRE標準沒有規(guī)定最大數(shù)據(jù)速率。
內(nèi)部集成電路(I2C) 接口
與全雙工、3線串行接口不同,I2飛利浦建立的 C 標準通過一條數(shù)據(jù)線 (SDA) 和一條控制線 (SCL) 以半雙工模式進行通信。我2C 標準定義了一個簡單的主/從雙向接口。在此方案中,微控制器指定它是作為主站(寫入模式)還是作為從站(接收模式)運行。每個從站都有自己唯一的地址,允許主站在同一總線上與許多不同的從站通信,而無需芯片選擇信號。參見圖 3。從機數(shù)量僅受允許的最大總線線路電容(400pF)的限制。我2C 協(xié)議基于 7 位或 10 位地址,但 7 位地址更常見。使用 7 位協(xié)議,您可以將多達 127 個不同的外設(shè)連接到總線。 SCL 和 SDA 是漏極開路線路,必須處于高電平狀態(tài)才能正常運行。使用 1V 電源時,將 3kΩ 或更大的上拉電阻連接到這些線路,使用 1V 電源時,將 6.5kΩ 或更大的上拉電阻連接到這些線路。
圖3.雙線接口提供數(shù)據(jù)輸入/輸出和時鐘線。
I2C通信以啟動命令開頭,當(dāng) SDA 在 SCL 高電平時從高到低轉(zhuǎn)換時,會發(fā)生該命令。參見圖 4a。在每個 SCL 時鐘周期內(nèi)傳輸一個數(shù)據(jù)位;至少需要九位才能將字節(jié)傳入或傳出從機。寫入周期包括八個數(shù)據(jù)位,后跟一個確認 (ACK) 或非確認 (NACK) 信號。參見圖 4b。當(dāng)數(shù)據(jù)通過I2C總線傳輸時,它鎖在 SCL 上升沿的從機中,并從 SCL 下降沿的從機讀出。SDA上的數(shù)據(jù)必須在SCL時鐘脈沖的高周期內(nèi)保持穩(wěn)定。在停止或重復(fù)啟動命令之后,傳輸完成,此時SDA在SCL高電平下從低到高轉(zhuǎn)換。當(dāng)總線不繁忙時,SDA 和 SCL 都保持高電平。
圖 4a.啟動和停止條件。2線接口使用啟動、重復(fù)啟動和停止命令在主站和從機之間傳輸數(shù)據(jù)。
圖 4b.我2C 確認位。2線接口在確認數(shù)據(jù)時將SDA線拉低。
一個I2C寫入周期從啟動命令開始,然后寫入 7 位從地址和發(fā)出寫入或讀取命令信號的第 <> 位。將寫入命令的第八位設(shè)置為低電平,為讀取命令設(shè)置高位。主站在第八個時鐘周期后釋放總線線路。如果從機確認傳輸正確,則從機在第九個時鐘周期將SDA線保持低電平。如果從機不確認正確的寫入命令,則從機釋放SDA線(然后由上拉電阻保持高電平)。
然后,主站寫入一個 8 位命令字節(jié),后跟第二個 ACK/NACK 位。接下來,主站寫入一個8位數(shù)據(jù)字節(jié),后跟第三個ACK/NACK位。數(shù)據(jù)字節(jié)的最終應(yīng)答位完成讀/寫周期,外設(shè)的輸出更新。圖 5a 說明了寫入周期的示例。
一個I2C讀取周期從啟動命令開始,然后寫入從地址,第八位拉高以發(fā)出讀取命令信號。在ACK/NACK位之后,主設(shè)備寫入命令字節(jié)以訪問新的從寄存器。在第二個ACK/NACK位之后,主站重寫從地址。然后在第三個ACK/NACK位之后,從機控制總線并一次寫出5個數(shù)據(jù)位。參見圖 <>b。當(dāng)從與先前讀取相同的從站寄存器讀取時,主站只需寫入從站的地址,然后才能從該從站讀取數(shù)據(jù)。
圖5.2線接口一次傳輸5位數(shù)據(jù)。圖 <>a 是 I2C 寫入周期示例。圖 5b 顯示 I2C 讀取周期示例。
I2C 接口支持慢速(高達 100kHz)、快速(高達 400kHz)和高速(高達 3.4MHz)協(xié)議。I2C 根據(jù) CMOS 電壓電平識別高低信號:低信號小于電源電壓的 0.3 倍;高信號大于 0.7 x 電源電壓。
系統(tǒng)管理總線 (SMBus)
英特爾建立了低速通信的SMBus標準,SMBus接口類似于I?2C. 喜歡我2C,SMBus使用2線接口,包括數(shù)據(jù)線(SMBDATA)和時鐘線(SMBCLK)。SMBCLK 和 SMBDATA 線路也需要上拉電阻。使用8.5kΩ或更大的上拉電阻(采用3V電源)和14kΩ或更大的上拉電阻(采用5V電源)。SMBus 工作在 3V 至 5V 電源電壓,可識別高于 2.1V 的高信號和低于 0.8V 的低信號。
超時和最大/最小時鐘速度是 I 之間最顯著的差異2C 和 SMBus 接口。我2C 總線工作在低至 DC 時,不會因總線不活動而超時。但是,SMBus 接口可能會超時。當(dāng)從設(shè)備在時鐘信號變低超過超時周期(最大 35ms)后重置其接口時,就會發(fā)生超時。SMBus 超時周期規(guī)定時鐘的最低速度為 19kHz。SMBCLK 必須設(shè)置在 10kHz 和 100kHz 之間才能正確通信。連接到 I 的主站或從站2但是,C總線可以在處理數(shù)據(jù)所需的時間內(nèi)保持低時鐘。
外設(shè)示例
微控制器通常通過串行接口與其外設(shè)進行通信。微控制器使用3線或2線接口讀取和寫入外圍設(shè)備的內(nèi)部寄存器。然后,外設(shè)偏置并控制各種模擬和數(shù)字輸出。例如,外圍設(shè)備將:對電池的充電電流和電壓進行編程;使用溫度傳感器控制風(fēng)扇;并設(shè)置DAC的模擬輸出電壓以及各種電路的偏置條件。
圖6所示為微控制器通過8線接口與5115位DAC(MAX2)通信。由于該DAC包括四個地址選擇引腳,可產(chǎn)生16個唯一的從地址,因此您最多可以并行連接16個DAC。相同的兩條總線也可以設(shè)置SMBus溫度傳感器/風(fēng)扇控制器(MAX6641)的偏置條件,因為MAX6641具有不同的從地址。該風(fēng)扇控制器調(diào)節(jié) MOSFET 的柵極電壓,以打開和關(guān)閉風(fēng)扇。
圖6.因為這個微控制器使用I2C接口,只需要兩條總線線就可以與眾多外設(shè)通信,比如這個DAC和一個溫度傳感器,并聯(lián)連接。
3線接口需要單獨的芯片選擇線來連接微控制器和并聯(lián)連接的多個IC之間的通信,而更簡單的2線接口使用相同的時鐘和數(shù)據(jù)線與總線上的每個器件進行通信。您可以通過為每個外設(shè)設(shè)置不同的從地址來并聯(lián)放置多個IC。最I(lǐng)2C外設(shè)包括地址選擇引腳,允許您將每個外設(shè)設(shè)置為不同的從地址。以前,外設(shè)可以標識自身的從地址數(shù)量限制為2的冪。例如,如果外設(shè)有兩個地址選擇引腳,它可以在總線上用四個唯一的從地址來標識自己。
新設(shè)計通過更少的地址選擇引腳提供更多的從地址。例如,MAX7319輸入/輸出端口擴展器只需兩個地址選擇引腳(AD16和AD2)即可編程為0個唯一的從地址。這些引腳可以連接到GND,電源電壓(V抄送)、SDA 或 SCL。表 2 顯示了可用的 16 個從地址。雖然位 A6、A5 和 A4 必須設(shè)置為 110,但位 A3 到 A0 可以通過 AD2 和 AD0 的四種不同設(shè)置進行編程。
引腳連接 | 設(shè)備地址 | |||||||
AD2 | AD0 | 答6 | 答5 | 答4 | 答3 | 答2 | 答1 | 答0 |
標準及校正實驗所 | 接地 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
標準及校正實驗所 | V抄送 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
標準及校正實驗所 | 標準及校正實驗所 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
標準及校正實驗所 | 自主權(quán)評估 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
自主權(quán)評估 | 接地 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
自主權(quán)評估 | V抄送 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
自主權(quán)評估 | 標準及校正實驗所 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
自主權(quán)評估 | 自主權(quán)評估 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
接地 | 接地 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
接地 | V抄送 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
接地 | 標準及校正實驗所 | 1 | 1 | 0 | 1 | 0 | 1 | 0 |
接地 | 自主權(quán)評估 | 1 | 1 | 0 | 1 | 0 | 1 | 1 |
V抄送 | 接地 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
V抄送 | V抄送 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
V抄送 | 標準及校正實驗所 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
V抄送 | 自主權(quán)評估 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
未來進展
當(dāng)今的3線接口滿足與2線接口不同的需求,每種接口都有特定的優(yōu)勢。將來任何一個接口都不太可能完全取代另一個接口。I2C 設(shè)備的發(fā)展速度更快,因為它們開始集成 SMBus 功能,例如超時重置,可以在必要時關(guān)閉這些功能。新我2C 從地址的長度為 10 位,而不是只有 7 位,從而為用戶提供了更大的靈活性。
3線和2線接口將共存,但我2隨著更多的微控制器支持2線接口,C語言可能會獲得市場份額。我2C的易用性和較少的公交線路可能會推動其增長超過SPI的增長。
審核編輯:郭婷
-
adc
+關(guān)注
關(guān)注
99文章
6601瀏覽量
547516 -
SPI
+關(guān)注
關(guān)注
17文章
1742瀏覽量
93800 -
總線
+關(guān)注
關(guān)注
10文章
2934瀏覽量
89045
發(fā)布評論請先 登錄
相關(guān)推薦
i2c總線ppt(I2C總線器件應(yīng)用)
SPI、I2C、UART串行總線協(xié)議
spi與i2c總線有什么區(qū)別

淺談I2C總線,I2C接口和SPI接口的作用相同

I2C總線是如何工作的
I2C總線的工作原理以及優(yōu)缺點解析

評論