可控製多外設的SPI/I²C總線
發布時間:2017-05-12 責任編輯:wenwei
【導讀】本應用筆記對兩種模擬IC中常用的串行、數字接口(SPI™或3線、I²C或2線)進行了比較,每種接口在不同的設計中都表現出其優點和缺點,具體取決於數據速率、可提供的設計空間以及噪聲環境等。本應用筆記給出了兩種接口的區別,並舉例詳細說明了這些觀點。
引言
雖然現實世界中的信號都是模擬信號,但是現在越來越多的模擬IC采用數字接口進行通信。串行接口的數據通信介於主機(提供串行時鍾)和從機/外設之間。目前,大多數微控製器提供SPI (3線)和I²C (2線)接口,用於發送、接收數據。微處理器通過幾條總線控製周邊的設備,比如:模/數轉換器(ADC)、數/模轉換器(DAC)、智能電池、端口擴展、EEPROM以及溫度傳感器。與通過並口傳輸數據不同的是:串行接口通過2條、3條或4條數據/時鍾總線連續傳輸數據。雖然並行接口具有傳輸速度快的特點,但是串行接口占用較少的控製和數據線。
串行接口的基礎知識
串行接口有三種:3線、2線和單線。本文主要討論3線和2線串行接口。串行外設接口(SPI)、隊列串行外設接口(QSPI™)和MICROWIRE™ (或MICROWIRE PLUS™)接口標準均采用3線接口。芯片間總線(I²C)和係統管理總線(SMBus™)均為2線接口。這些串行接口擁有各自的優點和缺點,如表1所示。
3線接口
3線接口使用片選線(低電平有效CS或SS)、時鍾線(SCLK)和數據輸入/主機輸出線(DIN或MOSI)。3線接口有時也包括一條數據輸出/主機輸入線(DOUT或MISO),這時也叫做4線接口。為了敘述的簡便,本文將3線接口和4線接口統稱為3線接口。
3線接口可以以更高的時鍾頻率工作,並且不需要上拉電阻。SPI/QSPI和MICROWIRE接口都可以工作在全雙工模式(數據可以在同一時間發送和接收),一般在嘈雜環境下工作不成問題。3線接口是邊沿觸發,不是電平觸發,因此具有更強的抗幹擾能力。
3線接口的主要缺點是它要為每一個從機提供一條低電平有效的CS線,除非將從機用菊鏈形式連接,如圖1所示(後續章節將詳細討論菊鏈方式)。另外一個缺點是3線接口沒有應答機製去判斷數據的收發是否正確。從軟件設計看,在單主機/單從機應用中,3線接口比2線接口簡單,效率更高。

圖1. 利用數據輸入、數據輸出、時鍾和片選信號進行通信的3線接口。
2線接口
2線接口包括一條數據線(SDA或SMBDATA)和一條時鍾線(SCL或SMBCLK)。2線接口的優點是使用更少的連線,這一點對於結構緊湊的設計尤為重要,比如:手機、光纖的應用。因為2線接口為每個從機分配唯一的地址,所以可以在一條總線連接多個從機而不需要片選信號。2線接口在成功完成一次讀操作後會傳輸一個應答位。因為2線接口隻有一條數據線,所以它隻能工作在半雙工模式(數據的讀寫不可以同時進行)。因為2線接口是電平觸發,所以在嘈雜環境中如果發生數據位錯誤,可能造成問題。

表1. 3/2線接口優缺點的對比
主zhu機ji和he從cong機ji經jing由you多duo條tiao總zong線xian通tong過guo串chuan行xing接jie口kou進jin行xing通tong訊xun。在zai寫xie周zhou期qi,主zhu機ji使shi用yong自zi己ji產chan生sheng的de時shi鍾zhong和he數shu據ju將jiang數shu據ju傳chuan至zhi從cong機ji。在zai讀du周zhou期qi,從cong機ji傳chuan輸shu數shu據ju至zhi主zhu機ji。
SPI、QSPI和MICROWIRE設計
由Motorola®製定的SPI接口已被很多流行的處理器和微控製器采用,比如MAXQ2000。SPI接口需要兩條控製線(低電平有效CS和SCLK)和兩條數據線(DIN/SDI和DOUT/SDO)。Motorola的SPI/QSPI標準稱DIN/SDI數據線為MOSI (主機出,從機入),DOUT/SDO數據線為MISO (主機入,從機出),CS線為SS (從機選擇)。為了敘述的清晰,我們基於從機說明3線接口的數據線。DIN是從機的數據輸入線,DOUT是從機的數據讀出線。本文采用低電平有效CS、SCLK、DIN和DOUT來定義3線接口中的各條線,Maxim外設使用了這些引腳名稱。
大多數的SPI接口有兩位配置位,時鍾極性(CPOL)和時鍾相位(CPHA)用於設定從機何時采集數據。CPOL決定SCLK為高時總線空閑(CPOL = 1)還是SCLK為低時總線空閑(CPOL = 0)。CPHA決定在SCLK的哪一個邊沿將數據移入、移出。當CPOL = 0時,將CPHA設為0,表示在SCLK的上升沿將數據移入從機;將CPHA設為1,表示在SCLK的下降沿將數據移入從機。CPOL和CPHA的兩個狀態允許四種時鍾極性和相位的不同組合。每一種都與其它三種不兼容。為了實現主、從機間的通訊,主、從機的CPOL和CPHA必須有相同的設置。
在SPI接口的大多數應用中,SPI接口一次傳送8位數據(一個字節),有一些微處理器一次傳送兩個或多個字節。例如,MAXQ2000微處理器可一次傳送8位或16位數據。當CPOL = 0、CPHA = 0,低電平有效CS由高跳變為低,開始一個主機到從機的傳輸過程。在SCLK信號高低變化的八個周期內,低電平有效CS信號必須保持為低。DIN數據鎖定在SCLK信號的上升沿。在同樣的8位周期內,DOUT線上的從機輸出數據在SCLK的每個下降沿有效。圖2a給出了CPHA = 1時的詳細時序;圖2b給出了CPHA = 0時的詳細時序。

圖2a. 3線接口時序(CPHA = 1),CPHA = 1、CPOL = 1時,3線接口在時鍾的上升沿將數據移入外設,在時鍾的下降沿將數據移出外設。

圖2b. 3線接口時序(CPHA = 0),CHPA = 0、CPOL = 1時,3線接口在時鍾的下降沿將數據移入外設,在時鍾的上升沿將數據移出外設。
因為總線上的每一個IC需要專屬的片選線,所以低電平有效CS被用做每個從機的使能信號。如果一條總線上有四個從機,則需要四條片選線。如果從機的低電平有效CS為高電平(禁止),該從機就忽略SCLK線上的數據,將DOUT置為高阻。
部分3線接口設備可以鏈接成菊鏈的方式,而不需要為每個從機提供低電平有效的CS線,菊鏈方式能夠用一條低電平有效的CS線和一條數據線控製多個串聯從機。在菊鏈結構中3線接口必須包含DOUT線,如圖1所示,從機#1的DOUT連接到從機#2的DIN,如此反複。
SPI標準中沒有定義最大數據速率。外部設備定義了自己的最大數據速率,通常為MHz量級。微處理器可以適應很寬範圍的SPI數據速率。在利用SPI接口進行通訊時,從機無法降低主機的數據速率或確定一個適當的速率。
QSPI標準和SPI標準非常相似。事實上,外設無法區分QSPI總線和SPI總線。與SPI標準中的主機不同,QSPI中的主機允許數據通過可編程的片選線傳輸數據。QSPI的主機甚至可以傳送長度在8位和16位之間的數據,而SPI的主機隻可以傳送8位的數據。可以配置QSPI的設備去連續傳送長度超過16字節的數據(最大為256位)。這種傳輸完全由QSPI設備的配置來實現,不需要MCU的操作。與SPI接口相似,QSPI接口也沒有規定最大數據速率。
由National Semiconductor公司製定的老的MICROWIRE標準和SPI標準非常相似。不同的是MICROWIRE標準的時鍾極性和時鍾相位是固定的(CPOL = 0和CPHA = 0)。DIN的數據讀取總是鎖定在SCLK的上升沿。DOUT的數據輸出總是在SCLK的下降沿。MICROWIRE標準沒有規定最大數據速率。
芯片間電路接口(I²C)
不同於全雙工的3線製接口,由Philips製定的I²C接口通過一條數據線(SDA)和一條時鍾線(SCL)實現半雙工通信。I²C接口定義了一個簡單的主/從雙向通信接口。在這個體係中,MCU決定自己為主機(寫模式)或為從機(接收模式)。每個從機具備專有、唯一的地址,使主機可以和多個從機通過一條總線進行通信,而不需要為每一個從機提供單獨的片選線。如圖3所示,從機的數目隻受限於最大線上電容(400pF),I²C接口的機製基於7位或10位地址,7位的地址更為常見。在7位地址的機製中,總線上可以接127個不同的外設。SCL和SDA線為漏極開路結構,所以閑置時必須為高。當電源電壓為3V時,連接一個1kΩ或更大阻值的上拉電阻;當電源電壓為5V時,連接一個1.6kΩ或更大阻值的上拉電阻。

圖3. 利用數據輸入/輸出和時鍾信號進行通信的2線接口。
當SCL為高,SDA從高變為低,即發出了一個開始命令,啟動I²C通信。圖4a所示,每個SCL時鍾傳輸一個數據位,傳輸一個字節至少需要9個數據位。一個寫周期包括8個數據位和一個應答位(ACK)或者非應答位(NACK)。如圖4b所示,當數據在I²C總線上傳輸時,在SLK的上升沿寫入從機,在SLK的下降沿從機輸出。在SCL時鍾周期為高電平的時間內,SDA線的數據不可以改變。一次傳輸的完成必須跟隨著一個中止或重新開始的命令,既SCL為高時,SDA由低變為高。當總線空閑時,SDA和SCL都為高。

圖4a. 開始條件和停止條件,2線接口采用開始、重複開始和停止命令在主機和從機之間傳輸數據。

圖4b. I²C應答位,應答數據時,2線接口將SDA拉低。
I²C的寫周期起始於開始命令,隨後是7位從機地址和第8位用於標識讀、寫操作。將第8位置低,表示寫操作;將第8位置高,表示讀操作。主機在第8個時鍾周期後釋放總線。如果從機應答數據傳輸,則在第9個時鍾周期將SDA拉低。如果從機不應答寫命令,則釋放SDA (該數據線通過上拉電阻置於高電平)。
隨後,主機寫入8位命令字節,然後是第二個ACK/NACK位。接下來,主機寫入8位數據字節並跟隨第三個ACK/NACK位。數據字節和最後的應答位完成一個讀/寫周期,更新外設輸出,圖5a是一個寫周期的詳細例子。
I²C讀周期起始於開始命令,隨後是需要寫入數據的從機地址、第8位置高,表示讀操作。在ACK/NACK之後,主機寫入命令字節訪問從機寄存器。在第二個ACK/NACK位後,主機重新寫入從機地址。在第三個ACK/NACK位後,從機控製總線,一次輸出8位數據到總線上。如圖5b所示,當從與上次讀操作相同的從機寄存器讀取數據時,主機隻需要在讀取從機數據之前寫入從機地址。

圖5. 2線接口一次傳輸8位數據,圖5a是I²C寫周期的一個例子;圖5b是I²C讀周期的一個例子。
I²C接口支持低速(大於100kHz)、快速(大於400kHz)和高速(大於3.4MHz)三種數據速率。I²C接口的高低電平為CMOS邏輯電平(低電平為0.3x電源電壓以下,高電平為0.7x電源電壓以上)。
係統管理總線(SMBus)
Intel®製定了SMBus標準用於低速通信,SMBus 2線接口與I²C接口非常相似。SMBus也使用一條數據線(SMBDATA)和一條時鍾線(SMBCLK)進行通信。SMBCLK和SMBDATA也需要上拉電阻,3V供電時上拉電阻大於8.5kΩ,5V供電時上拉電阻大於14kΩ。SMBus工作電壓範圍在3V和5V之間,大於2.1V為高電平,低於0.8V為低電平。
I²C接口和SMBus接口的最主要區別是最高/最低時鍾速率,因為I²C總線為被動傳輸總線,不存在總線超時問題,速率可低至“靜止”。SMBus接口則存在總線超時問題。如果時鍾信號拉低之後的時間大於超時周期(最長為35ms)時,從機複位接口,認為發生總線超時。SMBus的超時周期限製了時鍾的最小速率為19kHz。為了保證正常通信,SMBCLK的速率必須介於10kHz至100kHz之間,而I²C接口的主機或從機則可根據傳輸數據的需要將時鍾保持在低電平。
外設舉例
微處理器經常通過串行接口與外設通信,當微處理器通過2線或3線接口訪問外設後,外設相應地改變其模擬或數字輸出。例如,指使外設設置電池的充電的電流和電壓、用溫度傳感器控製風扇、設置數模轉換器的模擬輸出等。
如圖6所示,通過2線接口連接微處理器和8位數/模轉換器(MAX5115)。因為這個DAC有四個地址選擇引腳,可以產生16個唯一的從機地址,因此可以在總線上並聯16個DAC,因為MAX6641有不同的從機地址,同樣的2線接口也可以設置SMBus溫度傳感器/風扇控製器(MAX6641),風扇控製器控製MOSFET的柵極,使其打開或關閉風扇。

圖6. 由於微控製器采用的是I²C接口,與外設通信時,如DAC、溫度傳感器,總線隻需要兩條連線。
3線接口需要單獨的片選線實現微處理器與多個並行從機之間的通信,更簡單的2線接口用一條時鍾線和一條數據線與總線上的每個設備通信。可以通過設定不同的從機地址在總線上掛接多個IC。大多數I²C接jie口kou外wai設she具ju備bei地di址zhi選xuan擇ze引yin腳jiao,以yi實shi現xian從cong機ji地di址zhi的de配pei置zhi。外wai設she可ke以yi使shi用yong的de從cong地di址zhi數shu等deng於yu地di址zhi選xuan擇ze引yin腳jiao數shu的de平ping方fang。例li如ru,若ruo外wai有you兩liang個ge地di址zhi選xuan擇ze引yin腳jiao,它ta就jiu可ke以yi配pei置zhi四si個ge不bu同tong的de地di址zhi。
新一代設計以更少的地址選擇引腳提供更多的從地址。MAX7319是輸入/輸出擴展芯片,可以從兩個地址選擇引腳(AD2和AD0)擴展出16個從地址。這些引腳可以接GND、電源(VCC)、SDA或SCL。表2列出了這16個從地址的詳細信息,A6、A5、A4固定為110,A3至A0可以通過AD2、AD0設置。

表2. MAX7319僅利用2個地址線(AD2和AD0)即可編譯出16個不同地址
進一步改進
3線接口和2線接口有幾點不同的要求,每種接口都有其特殊優勢。近期內不可能用一種接口標準完全取代另一接口標準。具備I²C接口的器件發展較快,並開始融合一些SMBus接口的特點,支持諸如超時複位等功能,使接口可以根據需要關斷。新的I²C從機地址長達10位,而不僅僅是7位,這給用戶帶來更多的靈活性。
3線接口和2線接口將並存,但I²C接口似乎占有更大的市場份額,大部分微處理器支持2線接口。I²C接口的易用性及更少的連線使其增長量超過了SPI接口。
本文來源於Maxim。
推薦閱讀:
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 2026藍牙亞洲大會暨展覽在深啟幕
- 新市場與新場景推動嵌入式係統研發走向統一開發平台
- 維智捷發布中國願景
- 2秒啟動係統 • 資源受限下HMI最優解,米爾RK3506開發板× LVGL Demo演示
- H橋降壓-升壓電路中的交替控製與帶寬優化
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
接口IC
介質電容
介質諧振器
金屬膜電阻
晶體濾波器
晶體諧振器
晶體振蕩器
晶閘管
精密電阻
精密工具
景佑能源
聚合物電容
君耀電子
開發工具
開關
開關電源
開關電源電路
開關二極管
開關三極管
科通
可變電容
可調電感
可控矽
空心線圈
控製變壓器
控製模塊
藍牙
藍牙4.0
藍牙模塊
浪湧保護器



