概述
通用串行總線(USB)已經(jīng)成為外圍設(shè)備與個(gè)人計(jì)算機(jī)連接的標(biāo)準(zhǔn)方式。如果一個(gè)與PC連接的設(shè)備需要電氣隔離,USB將是一個(gè)很自然的選擇接口。USB的兩個(gè)著名的隔離應(yīng)用是基于PC平臺(tái)的醫(yī)療設(shè)備和具有很大地電位差的工業(yè)應(yīng)用。USB基礎(chǔ)信號(hào)
USB具有以下三種工作速率:- 低速,1.5Mbps
- 全速,12Mbps
- 高速,480Mbps
USB連接器包含四條線:2條用于電源供電(VBUS和GND),2條用于USB數(shù)據(jù)傳輸(D+和D-)。VBUS提供5V電源,電流可達(dá)500mA。D+和D-為雙向信號(hào)線,信號(hào)傳輸速率為12Mbps (每位83ns)。D+和D-信號(hào)電平為3.3V。
USB隔離的設(shè)計(jì)挑戰(zhàn)
圖1. 一個(gè)USB外設(shè)可以在三個(gè)位置隔離:位置1,USB總線;位置2,收發(fā)器接口;位置3,應(yīng)用接口?,F(xiàn)在絕大部分設(shè)計(jì)中,SIE和收發(fā)器集成在一起,無法在位置2實(shí)現(xiàn)隔離。
USB外設(shè)結(jié)構(gòu)框圖如圖1所示。從右至左來看該圖,USB收發(fā)器連接至D+和D-,發(fā)送或接收數(shù)據(jù)都由OE (輸出使能)控制。中間單元是USB串行接口引擎(SIE),其作用是將總線信號(hào)(由收發(fā)器發(fā)送和接收)轉(zhuǎn)換成字節(jié)數(shù)據(jù)或USB信號(hào),以供USB外設(shè)使用。最左邊的單元是應(yīng)用電路,可能是微處理器、專用集成電路或數(shù)字信號(hào)處理器(DSP)。
標(biāo)記1、2和3的灰色的長(zhǎng)方形,顯示了放置光耦、隔離USB設(shè)備與主計(jì)算機(jī)的三種可能位置。
圖2. 示波器顯示USB D+和D-信號(hào)(圖1中的位置1),83ns的位時(shí)間和嚴(yán)格匹配的上升/下降時(shí)間,使光耦隔離很難保持信號(hào)的保真度。D+和D-是雙向信號(hào),使得隔離更加復(fù)雜。
位置1
下列理由說明在USB總線上進(jìn)行光耦隔離是不切實(shí)際的,見圖2:- 信號(hào)速率為12MHz,對(duì)于性價(jià)比較高的隔離器來說成本過高。
- D+和D-信號(hào)的傳輸延遲、偏差必須完全一致,使用光耦隔離器很難滿足一致性要求。
- 總線為雙向,而隔離器為單向,使光耦隔離更加復(fù)雜。而且對(duì)于一個(gè)使用集成收發(fā)器的外圍設(shè)備,無法得到OE信號(hào)(指示傳輸方向)。
位置2
使用外置收發(fā)器的USB外設(shè)其收發(fā)器接口暴露在外部,對(duì)于這些單向信號(hào)可以考慮使用光耦隔離。盡管如此,這個(gè)位置和位置1有著相同問題:數(shù)據(jù)速率過高,而且有多路12MHz速率的信號(hào)需要隔離。VPO、VMO、RCV、VPI和VMI信號(hào)都運(yùn)行在12MHz速率,必須嚴(yán)格保持這些信號(hào)傳輸延遲、偏差的一致性。此外,現(xiàn)代USB設(shè)計(jì)中將SIE和收發(fā)器集成在同一芯片,也很難獲得這個(gè)接口。位置3
這是最有希望實(shí)現(xiàn)隔離的位置,這個(gè)接口工作速率低于USB數(shù)據(jù)速率和線速率,且該接口可以完全由單向信號(hào)構(gòu)成。事實(shí)上,一個(gè)理想的接口應(yīng)該只使用少量單向信號(hào),且這些信號(hào)的數(shù)據(jù)速率遠(yuǎn)低于USB的12MHz信號(hào)速率。符合這些要求的理想接口是SPI (串行外圍設(shè)備接口),該接口由Motorola定義,現(xiàn)已用于許多半導(dǎo)體器件。由于其簡(jiǎn)單、高效,SPI成為非常流行的接口。
SPI基礎(chǔ)信號(hào)
表1. SPI信號(hào)SPI Signal | Description | Comments |
SS# | Slave Select | Selects the chip for data transmission, supplied by the master |
MOSI | Master Out Slave In | Unidirectional data pin |
MISO | Master In Slave Out | Unidirectional data pin |
SCLK | Serial Clock | Serial clock, supplied by the master |
表1給出了SPI接口的4個(gè)信號(hào)。SPI為主從式接口,主接口啟動(dòng)并控制與一個(gè)從接口的通信。主機(jī)提供從機(jī)選擇信號(hào)(SS#)和串行時(shí)鐘(SCLK),用于同步數(shù)據(jù)傳輸。SPI接口具有四種時(shí)鐘模式,具體由2個(gè)模式信號(hào)CPOL (時(shí)鐘極性)和CPHA (時(shí)鐘相位)決定,這些信號(hào)表示為(CPOL, CPHA)。
圖3描述了微處理器與SPI從設(shè)備間的SPI數(shù)據(jù)傳輸,圖3采用最常見的SPI模式(0,0)。在(0,0)模式中,時(shí)鐘在無效狀態(tài)下為低電平。SPI主機(jī)在第一個(gè)SCLK上升沿之前將MOSI數(shù)據(jù)準(zhǔn)備好。SPI數(shù)據(jù)在SCLK下降沿變化,主從設(shè)備均在上升沿對(duì)數(shù)據(jù)進(jìn)行采樣。
圖3. 工作在模式(0,0)的SPI接口,如果SCLK信號(hào)為低有效(靜止?fàn)顟B(tài)為高),同樣的接口也可工作在模式(1,1)。這些低頻信號(hào)易于進(jìn)行光隔離。
很容易在微處理器上實(shí)現(xiàn)SPI接口,即使是沒有包含硬件SPI單元的微處理器。SPI接口只需要微處理器通過4個(gè)通用IO引腳(GPIO)構(gòu)建圖3信號(hào),子程序可通過直接觸發(fā)IO引腳的讀寫操作實(shí)現(xiàn)。
圖4顯示了USB外設(shè)控制器使用SPI接口時(shí),SPI與USB的數(shù)據(jù)速率差異。圖中,主控制器實(shí)現(xiàn)USB鍵盤功能,并周期性地點(diǎn)亮一個(gè)LED燈。圖5所示SPI數(shù)據(jù)傳輸可由LED閃爍指示(觸發(fā)一個(gè)輸出位);USB通信為USB主機(jī)請(qǐng)求鍵盤數(shù)據(jù)。
兩種總線之間數(shù)據(jù)速率的差異很顯著。頻率較低的單向SPI信號(hào)比12MHz的雙向USB總線信號(hào)更易于隔離。SPI信號(hào)使隔離方法變得非常簡(jiǎn)單,能在任何頻率下運(yùn)行,適用于各種光隔離器。
圖4. SPI數(shù)據(jù)速率和USB信號(hào)速率的比較。SPI信號(hào)更易于通過光耦傳輸。
系統(tǒng)如何按照?qǐng)D4使得存在巨大差異的USB控制器的SPI總線速率與USB信號(hào)速率協(xié)調(diào)工作呢?USB的優(yōu)點(diǎn)之一是通過內(nèi)部流量控制實(shí)現(xiàn)“自節(jié)流”。通過使用“NAK" (非應(yīng)答)握手信號(hào)完成信號(hào)流量控制。由此,外圍設(shè)備告知主機(jī)請(qǐng)求的數(shù)據(jù)還沒準(zhǔn)備好,主機(jī)應(yīng)稍后再試。
SPI數(shù)據(jù)速率和USB NAK
圖5. USB總線的低速外圍設(shè)備對(duì)主機(jī)IN數(shù)據(jù)請(qǐng)求的響應(yīng)。主機(jī)在信息包362-364中發(fā)出數(shù)據(jù)請(qǐng)求。外圍設(shè)備發(fā)出信息包420表示數(shù)據(jù)準(zhǔn)備就緒。插入的IN-NAK信息包為USB流量控制,外圍設(shè)備在數(shù)據(jù)準(zhǔn)備就緒之前始終響應(yīng)NAK。
圖5顯示了USB數(shù)據(jù)傳輸?shù)牧髁靠刂茩C(jī)制。從信息包362開始,主機(jī)發(fā)出Get_Descriptor-Configuration請(qǐng)求。信息包363從第二個(gè)字節(jié)到最后一個(gè)字節(jié)的09表示主機(jī)請(qǐng)求外設(shè)發(fā)送9個(gè)字節(jié)的數(shù)據(jù)。外設(shè)在信息包364中對(duì)請(qǐng)求應(yīng)答,然后對(duì)請(qǐng)求進(jìn)行譯碼,并將請(qǐng)求數(shù)據(jù)裝入數(shù)據(jù)FIFO的末端0處。低速外圍設(shè)備需要一定時(shí)間才會(huì)應(yīng)答這個(gè)請(qǐng)求,低速SPI總線會(huì)進(jìn)一步延長(zhǎng)響應(yīng)時(shí)間。
988.667微秒后(信息包364后),主機(jī)在信息包366中開始請(qǐng)求發(fā)送數(shù)據(jù)。外設(shè)沒有數(shù)據(jù),USB硬件自動(dòng)產(chǎn)生NAK握手響應(yīng),表明“忙碌中,稍后再試”。主機(jī)在信息包368中重試,并從外設(shè)獲得同樣的NAK應(yīng)答。這個(gè)IN-NAK過程一直持續(xù)到信息包419,外設(shè)最終完成請(qǐng)求數(shù)據(jù)的裝載,并在數(shù)據(jù)末端0處準(zhǔn)備數(shù)據(jù)發(fā)送。此時(shí),外設(shè)在信息包420中將以9字節(jié)的數(shù)據(jù)包響應(yīng)取代NAK,主機(jī)在信息包421中應(yīng)答。
IN-NAK響應(yīng)(圖5中用虛線矩形標(biāo)出)可能發(fā)生多次,這意味著SPI接口的工作速率沒有最低限制。允許設(shè)計(jì)者調(diào)整SPI數(shù)據(jù)速率,以適應(yīng)高性價(jià)比設(shè)計(jì)中的光耦選擇。
隔離USB設(shè)計(jì)實(shí)例
詳細(xì)電路圖(PDF, 204kB)
圖6. 隔離USB設(shè)計(jì)原理圖,左邊部分由USB總線自身供電,右邊部分使用隔離電源供電。在SPI接口處進(jìn)行隔離,使得設(shè)計(jì)簡(jiǎn)單,并且不受USB總線時(shí)序的影響。
圖6是利用Atmel?的低成本微處理器AtTiny13 (U6)、光耦HCPL-2531 (U3-5)和MAX3420E (U1)構(gòu)建,MAX3420E是帶有SPI接口的USB外設(shè)控制器。雖然U6不包含硬件SPI單元,通過對(duì)GPIO引腳進(jìn)行“逐位控制”可以很容易地實(shí)現(xiàn)SPI接口。U1提供四個(gè)通用輸入、四個(gè)通用輸出引腳取代(加至) U6實(shí)現(xiàn)SPI接口的引腳。這個(gè)設(shè)計(jì)使用兩個(gè)輸出引腳驅(qū)動(dòng)LED指示器D1和D2,一個(gè)輸入引腳連接至按鈕PB1。因?yàn)閁1本身包含由SPI接口控制的IO引腳,這些IO與U6本質(zhì)上是隔離的,因此不需要額外隔離。
圖7. 在隔離接口兩側(cè)的SPI SCLK信號(hào),上部:ISOVCC = 8.3V,ISOGND = 5V。下部:由USB供電:VCC = 3.3V,GND = 0V。
圖7顯示了隔離接口兩側(cè)的SCLK信號(hào),兩條曲線的基線都在屏幕底部。上部曲線顯示由U6產(chǎn)生的SCLK信號(hào),但有5V的偏移。
圖8. 隔離的SCK信號(hào)(上部)和處于MAX3420E側(cè)的SCK信號(hào)(下部),擴(kuò)大比例顯示。
圖8是圖7放大比例后的圖形,用于說明光耦的性能。這個(gè)設(shè)計(jì)中選擇的電阻使光耦在起始位置有0.5μs的延遲。SCLK中間部分的短脈沖由U6驅(qū)動(dòng)SCLK IO引腳的程序產(chǎn)生。U6的這部分程序如圖9所示。
圖9. AtTiny13對(duì)MAX3420E寄存器進(jìn)行讀操作的匯編程序。在此可以調(diào)整SPI接口的時(shí)序以提高光耦的性價(jià)比。
在r4標(biāo)號(hào)前,SCK信號(hào)驅(qū)動(dòng)為低電平,然后再次驅(qū)動(dòng)為高電平(SCLK_LO和SCLK_HI是匯編宏,不需要改變代碼就可以很容易對(duì)實(shí)際電路的IO引腳賦值)。
這兩個(gè)語(yǔ)句之間插入少量NOP指令,圖8中的窄脈沖可以變寬,由此,使用低速光耦(這意味著更低的成本)成為可能。這個(gè)方法證明在光隔離應(yīng)用中使用SPI接口的靈活性。
評(píng)論
查看更多