選擇串行總線
選擇串行總線并非易事。除需要考慮數(shù)據(jù)速率、數(shù)據(jù)位傳輸順序(先傳最高位或最低位)和電壓外,設(shè)計者還應(yīng)該考慮以下幾點:
- 通過何種方式選擇某個外設(shè)(通過硬件片選輸入或軟件協(xié)議)。
- 外設(shè)如何與µC保持同步(借助一條硬件時鐘線,或借助內(nèi)嵌于數(shù)據(jù)流中的時鐘信息)。
- 數(shù)據(jù)是在單根線上傳輸(在“高”和“低”之間轉(zhuǎn)換),還是在一對差分線上傳輸(兩根線按相反的方向同時轉(zhuǎn)換其電壓)。
- 通信線路的兩端均使用匹配電阻實現(xiàn)阻抗匹配(通常用于差分信號傳輸),還是不匹配或僅在一端匹配(通常用于單端總線)。
除這些特性外,具體應(yīng)用還會提出更多要求,如供電方式、隔離、噪聲抑制、µC (主機)與外設(shè)(從機)間的最大傳輸距離、以及電纜連接方式(總線型、星型、可承受線路反接等)。提出類似要求的應(yīng)用包括樓宇自動化、工業(yè)控制和抄表等,并且都已制定了相應(yīng)的標準。1, 2
表1. 串行總線系統(tǒng)概括
電路板到背板的應(yīng)用需求
提供外設(shè)功能的串行總線系統(tǒng)不應(yīng)該給應(yīng)用系統(tǒng)增加任何沉重的負荷。尤其需要注意以下幾點:- 互連布線一定要簡單(信號線越少越好)。
- 必須能夠輕松地通過軟件實現(xiàn)協(xié)議(或所選的µC/µP本身提供這種接口)。
- 需要提供功能廣泛的器件。
- 總線系統(tǒng)必須易于擴展。
表2. 1-Wire、LIN總線和SensorPath總線系統(tǒng)的性能差異
1-Wire3 | LIN Bus4 | SensorPath5 | |
Physical Network Size | Board or backplane, can be expanded up to ~300m | ~40m | Board |
Network Drivers (Hardware) | Drivers are available for RS-232, I²C, USB, and general µP port pins6, 7 | Drivers are available for µP port pins | Super-I/O chips, µP port pins |
Network Drivers (Software) | Available free for various platforms, including µCs8 | Available free for Freescale™ µCs | Not available |
Power Supply | Through the data line (typical case), local VCC (some devices) | Through the data line | Local VCC |
Data Rate | Up to ~15kbps (standard) or ~125kbps (overdrive)9 | Up to ~20kbps | Data dependent, up to ~20kbps |
Network Inventory | Through the "search ROM" network function | Not applicable, message-based addressing | Not supported |
Choice of Device Functions | Large variety of device functions, including serial number, instrumentation, secure memories, etc. | Limited to functions needed in automotive applications | Limited to temperature sensors and voltage ADCs |
物理網(wǎng)絡(luò)尺寸
只有SensorPath局限于電路板尺寸的應(yīng)用。一定條件下,使用恰當?shù)挠布蛙浖W(wǎng)絡(luò)驅(qū)動器,可以極大地擴展1-Wire總線網(wǎng)絡(luò)的距離。網(wǎng)絡(luò)驅(qū)動器
對于基于協(xié)議的網(wǎng)絡(luò),設(shè)計者需要軟件驅(qū)動程序來產(chǎn)生通信波形(鏈路層),識別并尋址網(wǎng)絡(luò)(網(wǎng)絡(luò)層)的單個從器件/節(jié)點,并發(fā)送/接收數(shù)據(jù)(傳輸層)。軟件驅(qū)動程序與特定操作系統(tǒng)和通信端口有關(guān)??商峁┗诟黝惗丝诘?-Wire硬件驅(qū)動芯片(主機)以及適配器,端口類型包括COM、LPT、USB和I²C。在未作匹配的大型網(wǎng)絡(luò)中,電纜末端、連接器和分支的反射會限制網(wǎng)絡(luò)的傳輸性能。電源
必須為網(wǎng)絡(luò)中的每個從器件供電,以實現(xiàn)正常工作。最具成本效益的方法是通過數(shù)據(jù)線遠程供電。該方法也稱為“寄生供電”,這使得讀取系統(tǒng)診斷信息(比如在掉電模式下)成為可能。具體范例請參考應(yīng)用筆記178中的圖3和相關(guān)內(nèi)容:"利用1-Wire產(chǎn)品標識印刷電路板"10。當然由于必須為供電留出時間,寄生供電也降低了可用的數(shù)據(jù)速率。數(shù)據(jù)速率
通常來說,數(shù)據(jù)速率越高,網(wǎng)絡(luò)傳輸距離越短,反之亦然。1-Wire系統(tǒng)具有電源傳輸功能,因此最大數(shù)據(jù)傳輸速率取決于網(wǎng)絡(luò)的從器件數(shù)目以及電纜總長度(電容)。網(wǎng)絡(luò)節(jié)點查找功能
該特性允許主機識別網(wǎng)絡(luò)中從器件的數(shù)目、類型和地址。這一點對于節(jié)點數(shù)動態(tài)(變化)的網(wǎng)絡(luò)來說必不可少。請參考Dallas工程期刊(第2期)11第22頁中的示例。器件功能選擇
范圍如果不能提供應(yīng)用所需要的功能,即使再出色的總線也毫無用處。與LIN總線和SensorPath相比,1-Wire系統(tǒng)目前可以提供最豐富的功能。I²C/SMBus與1-Wire總線
如果實際應(yīng)用可以提供時鐘線,則總線選擇范圍可擴展到I²C12和SMBus13器件。根據(jù)SMBus的規(guī)范,它可以看作是100kbps I²C總線規(guī)范增加了超時特性后的派生總線類型。在某個節(jié)點與總線主機失去同步的情況下,超時特性可避免總線發(fā)生閉鎖,而I²C系統(tǒng)則需要經(jīng)過一次上電復(fù)位過程,才能從這種故障狀態(tài)恢復(fù)至正常工作狀態(tài)。在1-Wire系統(tǒng)中,復(fù)位/在線檢測周期可將通信接口復(fù)位至確定的啟動條件下。除了時鐘線外,I²C/SMBus還為總線上傳輸?shù)拿總€字節(jié)提供一個應(yīng)答位。這使得有效數(shù)據(jù)速率降低了12%。通信過程開始于一個啟動條件,并跟隨從器件地址和一個數(shù)據(jù)方向位(讀/寫),最后結(jié)束于一個停止條件。對于1-Wire系統(tǒng),首先需要滿足網(wǎng)絡(luò)層的要求(即選擇某個特定器件,執(zhí)行search ROM命令或者廣播);接下來發(fā)送與特定器件相關(guān)的命令代碼,該代碼同時會影響數(shù)據(jù)的傳輸方向(讀/寫)。
原有I²C和SMBus總線系統(tǒng)的一個突出問題是其有限的7位地址空間。由于可提供超過127種不同器件類型,我們無法根據(jù)從器件地址推斷器件功能。此外,許多I²C器件還允許用戶隨意設(shè)置1個或多個地址位,以在總線上掛接多個相同器件。這種特性進一步減少了可用的地址空間。解決地址沖突問題的標準做法是將總線系統(tǒng)劃分成若干段,某一時刻可在軟件控制下激活某個網(wǎng)絡(luò)段。該網(wǎng)絡(luò)段需要增加更多硬件,也使應(yīng)用固件更為復(fù)雜。I²C系統(tǒng)不具備網(wǎng)絡(luò)節(jié)點查找或枚舉功能,因此很難處理節(jié)點數(shù)動態(tài)變化的系統(tǒng)。這一問題可借助SMBus Specification Version 2.013中的地址分辨率協(xié)議得以解決。但是,支持該特性的SMBus器件極為稀少。
SPI和MICROWIRE接口
SPI14和MICROWIRE15 (SPI的子集)均需要為每個從器件提供一條額外的片選線。由于具有片選信號,SPI協(xié)議只定義了針對存儲器地址和狀態(tài)寄存器的讀/寫命令。它不提供應(yīng)答功能。通常,SPI器件的數(shù)據(jù)輸入和數(shù)據(jù)輸出采用不同的引腳。鑒于數(shù)據(jù)輸出在除了讀操作外的任何情況下均為三態(tài)(禁止),因此可將兩個數(shù)據(jù)引腳接到一起以構(gòu)成單根雙向數(shù)據(jù)線。當其它總線系統(tǒng)無法提供所需的功能或需要較高的數(shù)據(jù)傳輸速率時,可選用SPI總線,它可以支持2Mbps或更高的速率。SPI和MICROWIRE的不利因素在于產(chǎn)生CS信號的譯碼邏輯,以尋址某個特定器件。但是不會產(chǎn)生地址沖突問題。和I²C總線一樣,不提供節(jié)點查找功能。主機無法根據(jù)從器件的邏輯地址來推斷器件功能,因此很難管理節(jié)點動態(tài)變化的網(wǎng)絡(luò)。RS-485、LVDS、CAN、USB 2.0和FireWire
我們對這些標準進行討論,以舉例說明差分傳輸?shù)奶攸c。這類總線系統(tǒng)中傳輸速率最快的兩種是FireWire16和USB 2.017,它們采用點對點電氣連接。使用先進的節(jié)點或集線器,可以構(gòu)成樹狀拓撲的虛擬總線,數(shù)據(jù)包從源發(fā)送至端點(USB),或采用對等傳輸(FireWire),突發(fā)數(shù)據(jù)速率高達480Mbps (USB 2.0)或1600Mbps (FireWire)。尺寸有限的數(shù)據(jù)包以及接收/緩沖/重發(fā)通信機制增加了傳輸時間,反過來降低了有效的數(shù)據(jù)吞吐能力。USB的拓撲和協(xié)議允許最多連接126個節(jié)點,F(xiàn)ireWire允許最多63個節(jié)點,使用無源電纜時節(jié)點間的最大傳輸距離為4.5m。專為包括PC外設(shè)、多媒體、工業(yè)控制和航空(僅FireWire)應(yīng)用而設(shè)計,USB和FireWire器件可以帶電插入系統(tǒng)(熱插拔)。該特性允許網(wǎng)絡(luò)節(jié)點數(shù)動態(tài)變化。LVDS18、RS-48519和CAN20可實現(xiàn)掛接主機和從機的總線型結(jié)構(gòu),甚至可以連接多個主機。這些標準中低壓差分信號(LVDS)是速率最快的,如果總線長度不超過10m,可工作在100Mbps速率下??捎玫臄?shù)據(jù)速率及吞吐可以更快或更慢,具體取決于網(wǎng)絡(luò)尺寸。LVDS電氣標準專為背板應(yīng)用而設(shè)計,支持熱插拔功能,但不包含任何協(xié)議。
RS-485也僅定義了電氣參數(shù)。RS-485定義了負載和每條總線的最大負載數(shù)目(32),而不是以節(jié)點的形式給出。一個電氣節(jié)點的負載可以小于1。12m網(wǎng)絡(luò)距離下的典型數(shù)據(jù)速率可高達35Mbps,1200m距離下數(shù)據(jù)速率可達100kbps,這些特性足以滿足數(shù)據(jù)采集和控制應(yīng)用。RS-485設(shè)備的協(xié)議通?;谠瓉碓O(shè)計用于RS-232的部分協(xié)議。
與此不同,控制器局域網(wǎng)(CAN)為分布式實時控制定義了通信協(xié)議,安全性非常高,專門面向汽車應(yīng)用和工業(yè)自動化領(lǐng)域。數(shù)據(jù)速率從40m距離下的1Mbps到1000m距離下的50kbps。尋址方式是基于消息的,協(xié)議本身對節(jié)點數(shù)沒有任何限制。CAN節(jié)點支持熱插拔,網(wǎng)絡(luò)節(jié)點數(shù)可以動態(tài)變化。
評論