2007年2月7日 星期三

嵌入式系統設計中串列匯流排的選擇策略

嵌入式系統設計中串列匯流排的選擇策略
上網時間: 2003年02月08日

串列通訊是嵌入式系統設計中的一個重要部份,選擇恰當的串列介面時要考慮多方因素。本文描述了RS-232、RS-422、RS485、I2C、SPI、Microwire及1-Wire等七種常用的串列匯流排,並分析了各自的優缺點,以幫助嵌入式系統設計工程師選擇適用於其設計的串列介面匯流排。

在嵌入式設計中,從顯示器、記憶體到周邊的通訊都藉由串列介面進行。目前有多種串列通訊介面可用於嵌入式系統,但在選擇時要考慮到多個因素。以下將講述表1所示七種最為常用的串列介面,以幫助設計工程師進行正確選擇。

串列介面的優點

在多種情況下需要使用串列介面,最為常見的則是在開發或現場使用時必須與PC進行介面。多數PC帶有與周邊相接的串列介面匯流排,只有少數例外。對於必須與通用電腦介面的嵌入式系統而言,使用串列介面常常比ISA或PCI擴展匯流排更為方便。

串列通訊只需一個I/O引腳便可進行通訊,而平行通訊則需要8個或更多。許多通用嵌入式系統周邊(如類比/數位轉換器和數位/類比轉換器、LCD和溫度感測器)均支援串列介面。圖1:PC通訊的典型格式包括數據位元、校驗位元和停止位元。

串列匯流排還可用於內部處理器通訊(例如網路),從而可用若干價格低廉的小處理器來完成通常需要大處理器完成的任務。藉由串列介面,處理器通訊無需共享記憶體和旗語,進一步避免了可能引起的問題。

不過,對於讀取匯流排、地址匯流排和數據匯流排以及其它微程式控制而言,平行匯流排永遠是首選。‘記憶體映射’外部設備已成為一種專門技術,用於帶地址和數據匯流排的系統中。藉由這一技術可平行存取片外設備。不過,由於許多8位元微控制器(更不用說8引腳的了)不帶外部地址/數據匯流排,因此通常不使用記憶體映射。

基本術語

在詳細講述每種介面方式之前,我們先定義以下幾個術語:

(1) 在非同步匯流排中數據發送無需時脈信號;而在同步匯流排中則需要。


(2) 在全雙工方式中,數據的發送和接收可同時進行。而在半雙工方式中,可分別進行數據發送和接收,但不能同時收發。


(3)

主/從關係指的匯流排連接一個主設備和若干從設備。主/從匯流排通常是同步的,在雙向數據發送中,均由主設備提供時脈信號。


(4) 多主匯流排也是主/從匯流排,不過它的主設備不止一個。這種匯流排必須具有仲裁方案,以便在多個主設備企圖同時控制匯流排時避免衝突。
(5) 點對點或對等(peer)介面指的是兩個設備間具有一種對應關係;但無主從關係。對等介面通常是非同步的。


(6) 當一個介面具有多個接收器和一個發送器時,我們用‘點對多點(multi-drop)’來進行描述。(7) 當一條匯流排中的對等收發器多於兩個時,用‘多點(multi-point)’來描述。這與‘點對多點’介面並不一樣,它可在同一組連線中進行雙向通訊。

RS-232介面

幾乎所有的電腦都採用TIA/EIA-232-F(通常稱為RS-232)介面方式。RS-232是一種完整的標準,除了電氣特性外,還規範了物理及機械特性,如連接硬體、輸出引腳及信號名稱。RS-232是一種點對點介面,適用於中等長度的通訊,速率可高達20Kbps。儘管在規範手冊中並未標出,但在連接距離較短且正確接地的情況下,其速率可超過115.2Kbps。通常RS-232傳輸距離為30英尺,採用低電容電纜時,可達200英尺。

RS-232是一種非平衡式匯流排,可在兩對接收/發送器(稱為數據終端設備(DTE)及數據電路終端設備(DCE))間進行全雙工通訊。每一端的傳輸信號均與另一端的接收信號相連。因此,兩端的引腳有所不同。

每個發送器都藉由改變線路的電壓來發送數據。高於3V的電壓用二進制數‘0’表示,而低於-3V的電壓則用二進制數‘1’表示。這兩個閥值間的電壓未定義。可採用RS-232轉換IC,如1488、1489或十分常見的MAX232,來進行邏輯電平(0V和5V)與這些電壓的轉換。

通常RS-232通訊包含有起始位元、數據位元、奇偶校驗位元(如果有的話)和停止位元(有時多位元)。與PC通訊的典型格式為八個數據位元、無奇偶校驗位元、一個停止位元。此外,七個數據位元、一個偶校驗位元和一個停止位元這種模式也很常用。通常起始位元為0、停止位元為1,如圖1所示。在正式的規範中沒有描述RS-232的通訊協議,包括起始位元和停止位元的使用。

許多嵌入式系統藉由RS-232與PC或PC周邊(如數據機)進行介面。而其它系統則使用RS-232,再配合較為便宜的協議分析儀或帶有兩個串列口的PC來監控匯流排通訊量。圖2:當SCL為高電平時, SDA線從高電平變成低電平,產生開始信號,開始數據傳送。當SCL為高電平時,SDA線從低電平變成高電平,產生結束信號,結束數據傳送。

幾乎所有的微控制器廠商都有支援RS-232的硬體產品,稱為通用非同步收發器(UART)。通常UART都是中斷驅動,速度可高達115.2Kbps,軟體附加費用較少。但不同架構的UART會稍有不同。

RS-422和RS-485

TIA/EIA-422-B(通常稱為RS-422)及TIA/EIA-485-A(通常稱為RS-485)是平衡式、雙絞線介面,速度可高達10Mbps,傳輸距離長達4,000英尺。RS-422和RS-485均為差分匯流排,採用±1.5V到±6V的信號來進行數據傳輸。與RS-232等單端非平衡式匯流排相比,差分平衡式匯流排中的抗噪音能力有所提高。

RS-422是一種點對多點介面,在一對雙絞線上進行單向通訊,從一個發射器將信號發送到多個接收器,最高可有10個單元負載(UL)。如果接收元件需要與發射器進行通訊,則必須在每個接收器和發射器間連接一條獨立的專有匯流排(採用這種回路匯流排可進行全雙工通訊)。正是因為這一點,RS-422通常很少用於兩個節點以上。

RS-485介面則藉由一對雙絞線在多個收發器間進行雙向通訊。規範顯示,該匯流排可包括多達32個等同於收發器的單元負載(UL)。一些製造商生產分支式(fractional)UL收發器,從而將可連接的元件數目增加到100個以上。

RS-422和RS-485使用的起始位元、數據位元和停止位元格式通常與RS-232一樣。實際上,現有的多種轉換器都可在RS-232和RS-485之間進行數據轉換。不過切記,RS-232是全雙工介面,而RS-485則是半雙工。

多數微控制器製造商提供嵌入式UART,並聲稱具有特殊的RS-485性能。

I2C匯流排

內部積體電路匯流排(I2C)是由飛利浦半導體公司開發的一種專用介面。它是一種半雙工同步多主設備匯流排,只需要兩條信號線:串列數據線(SDA)及串列時脈線(SCL)。在一個‘與’連線介面中,這些信號線的電壓藉由升壓電阻拉高,並藉由開漏驅動器由硬體進行控制。

I2C採用可尋址通訊協議,主設備可與採用7位元或10位元地址的從設備進行通訊。每一元件均有一個地址,此地址由飛利浦半導體公司向元件生產商分配。此外還有多個特殊地址,包括‘總呼叫’地址(它可對匯流排內的每一地址進行尋址)及高速起始地址。

在與從設備進行通訊時,所有與從設備通訊的時脈信號(包括去和回)均由從設備產生。每次通訊開始時,主設備均會產生一個開始信號、一個8位元數據字、一個應答位元,然後是一個停止信號或重覆的開始信號。除開始信號和停止信號外,每個數據位元的傳送都在SCL為低電平時進行。當SCL為高電平時,SDA線從高電平變成低電平,產生開始信號,開始數據傳送。當SCL為高電平時,SDA線從低電平變成高電平,產生結束信號,結束數據傳送(見圖2)。資訊接收設備藉由將SDA線的電平拉低來產生應答位元,此時主設備釋放該線路,使之保持高電平。如果主設備讀到的應答位元為高電平時,它認為最後的通訊數據尚未收到,並採取相應的行動─如果可能則重發該數據。

I2C有個十分有趣的特徵稱為時脈伸展(clock stretching),產生在從設備無法處理數據位元並要求更多時間時。這種情況下,從設備將SCL線的電平拉低。由於信號表現為‘與’連線,因此當主設備釋放SCL線而從設備正在‘伸展’時脈時,主設備會注意到該線路仍處於低電平。此時,主設備等待,直到從設備處理完數據位元並釋放該線路。一旦從設備釋放線路後,SCL線恢復高電平,指示主設備可發送下一個數據位元。

I2C有慢(小於100Kbps)、快(400Kbps)及高速(3.4Mbps)三種速率,每一種均可向下相容。如果需要將信號發送出電路板外可參照飛利浦公司規範的建議連線方法。

儘管傳聞有人曾使用I2C匯流排在大於50英尺的距離內成功通訊,不過它的通訊距離通常僅限於同一電路板內。限制I2C通訊距離的是匯流排的比特率和傳輸量。因此,對於板外通訊,I2C實際常限制在10英尺內,屬於中等速率。

SPI匯流排

串列周邊介面(SPI)是由摩托羅拉開發的一種同步串列匯流排,用於該公司的多種微控制器中。

SPI匯流排由四路信號組成,分別是主出從入(MOSI)、主入從出(MISO)、串列時脈(SCK)及主動低電平從設備選擇(/SS)。SPI是一種多主/從設備通訊協議,主設備與選定的從設備間使用單向MISO和MOSI線進行通訊,速率超過1Mbps,為全雙工模式。主設備產生一個SCK脈衝,數據被同步到主設備和從設備間中。SIP協議有四種不同的時脈類型,視SCK信號的極性和相位而定。必須確保這些信號在主設備和從設備間相互相容。

除了1Mbps的速率外,SIP還有另一優點:當僅使用一個從設備時,/SS線路電平會被拉低,/SS信號可以不藉由主設備產生。不過,這一性能要依賴於SCK的相位選擇。

SPI的一個缺點是每個從設備都需要獨立的/SS線路。如果具有外部I/O引腳,或者外部電路板有足夠的位置配置多路選擇輸出器IC,這並不成問題。但對於體積小、管腳數少的微控制器來說,具有多個從設備的SPI介面並非理想之選。

Microwire匯流排

Microwire是由美國國家半導體公司開發的一種三線同步介面,用於該公司的COP8處理器系列產品。

與SPI相似,Microwire是一種主/從匯流排,包括主設備發出的串列數據(SO)、主設備接收的串列數據(SI)及信號時脈(SK)等三路信號,分別對應於SPI的MOSI、MISO及SCK。此外還有一個片選信號,其功能與SPI的/SS相似。Microwire是一種全雙工匯流排,速度可達到或超過625Kbps(由其電容決定)。

針對不同的數據需求,Microwire元件遵循不同的協議。與基於8位元組的SPI不同,Microwire的數據長度可變,同時還規定了一種‘連續’位元流模式。表1:七種最為常用的串列介面。

由於Microwire也具有多個從設備,需要多條片選線,因此它像SPI一樣同時兼具優缺點。有時候,SPI元件可工作於Microwire匯流排,同樣,Microwire元件也可以工作於SPI匯流排,儘管只能在單元件情況下。

儘管在電容配置得當且速率較低時SPI和microwire通訊距離可長達10英尺,但它們通常都局限於板內通訊,距離不超過六英寸。

1-Wire匯流排

Dallas Semiconductor的1-Wire是一種非同步主/從式匯流排,沒有用於多個主設備的協議。與I2C相似,1-Wire採用半雙工通訊,在單一連線上採用一種開漏拓樸結構進行雙向數據傳輸。不過,1-Wire匯流排的數據線也可以向從設備傳輸功率,儘管比較有限。1-Wire的最高速率僅達16Kbps,但在升壓電阻配置得當時,傳輸距離可達1,000英尺。

位元碼監測

如果沒有支援以上匯流排的硬體,可以使用通用的I/O引腳。用軟體控制串列通訊通常稱作‘位元碼監測(bit banging)’,因為軟體的確在‘串列口’上實施‘監測’作用。

位元碼監測要求軟體可識別每個位元碼的正確時序,因為它必須監測每個輸出位元碼的變化(在全雙工介面中還要監測接收數據的情況。)不過,令嵌入式開發者慶幸的是,不少位元碼監測程式都可從網際網路上找到,用於以上述串列匯流排以及幾乎所有的微控制器結構。實際上,一些微控制器廠商已開發並公佈了它們自己的程式。

本文小結

如上所述,面對大量串列通訊匯流排標準。在選擇一種串列匯流排時,不應只考慮到滿足產品的當前需要,而且還應考慮到是否能用於產品的整個生命周期。希望這些有助於工程師選擇最適合其當前嵌入式設計的串列介面。

作者:


John Patrick


L-3 Communications/Electrodynamics, Inc.


Email: j.s.patrick@ieee.org


此文章源自《電子工程專輯》網站:
http://www.eettaiwan.com/ART_8800300535_617717,676964.HTM.6e8b9920 http://www.eettaiwan.com/ART_8800300535_617717,676964.HTM.6e8b9920

返回文章頁 | 返回主頁

沒有留言:

張貼留言