隨著臺式機和筆記本電腦串口的消失,USB已成為最常見的外圍設備接口。此外,USB的嵌入式應用正在增加。但是,在嵌入式系統(tǒng)中實現(xiàn)USB接口的開發(fā)團隊可以輕松地產(chǎn)生微小的變化,這可能使與其他嵌入式USB設備的互操作性成為不確定的結(jié)果。
我們的團隊處理USB 3.0主機接口開發(fā)的方式之一是檢查我們的主機與許多不同供應商的USB設備的兼容性。我們最終投入了大量時間來調(diào)查和調(diào)試出現(xiàn)的問題。我們發(fā)現(xiàn)了導致大多數(shù)這些問題的兩個重要問題。
第一個問題是系統(tǒng)電源管理工作的結(jié)果。在嵌入式系統(tǒng)中,可能需要讓USB主機動態(tài)關(guān)閉連接的USB設備,作為其電源管理方案的一部分。問題是,當主機VBUS電源關(guān)閉時,USB 2.0/3.x規(guī)范沒有在主機/設備側(cè)提供放電機制。在主流臺式PC和Linux系統(tǒng)中,VBUS電源始終保持開啟狀態(tài)。
在主機電源斷開后,連接設備放電所需的時間差異很大。圖1顯示了USB存儲器件的典型放電事件。這種特定設備需要6-8秒才能放電,但來自不同供應商的設備可能會顯示不同的放電特征。
嵌入式USB系統(tǒng)想要循環(huán)主機的VBUS電源不接受規(guī)范的指導,關(guān)于主機在重新斷電之前關(guān)閉電源以使連接的設備放電多長時間。所以,他們選擇了自己的延遲時間。不幸的是,開發(fā)人員往往只在其軟件中插入10到150毫秒的延遲;他們不愿意延遲幾秒鐘,這可能是實際需要的。
當主機軟件關(guān)閉VBUS電源只有幾百毫秒時,由于連接的設備可以出現(xiàn)問題處于一個未知的狀態(tài)。這種不確定的情況通常會導致在電源恢復后設備連接或連接階段出現(xiàn)故障。如果主機軟件關(guān)閉VBUS電源,則必須將電源線接地并保持足夠長的時間以完全放電并重置連接的設備。
因為規(guī)范沒有說明和供應商通常不提供最小“關(guān)閉”時間的值,開發(fā)人員需要為自己定義一個。通用工程實踐表明,開發(fā)人員測量許多設備的放電時間,以達到“安全”的關(guān)閉時間。該結(jié)果將基于有限數(shù)量的實驗,但可以證明是足夠的。從圖1可以看出,幾乎所有連接的USB設備都可以使用10秒左右的關(guān)閉時間。
作為這種不確定的經(jīng)驗方法的替代方案,可以有硬件解決方案。問題。為主機硬件提供一個有時間限制地正確釋放VBUS電源的措施。這樣,軟件可以使用保證正確的延遲值。增加的放電機制甚至可以根據(jù)其他平臺設計選擇,允許系統(tǒng)控制,在VBUS放電時間內(nèi)選擇性地啟用放電機制,并在VBUS打開時禁用機制。
我們實施了這樣的放電在發(fā)現(xiàn)我們在測試各種USB設備時看到的枚舉錯誤的原因后,我們的主機設計中的機制。一旦機制到位,先前在電源循環(huán)期間失敗的設備就會開始正確枚舉。
在測試以數(shù)據(jù)速率為中心的USB主機兼容性時經(jīng)常出現(xiàn)的第二個問題。 USB規(guī)范要求主機通過發(fā)送命令和數(shù)據(jù)請求來初始化和配置任何連接的設備。不幸的是,我們發(fā)現(xiàn)市場上的某些設備在高速接收協(xié)議兼容的請求時不會表現(xiàn)出來。設備出現(xiàn)故障,最終將不間斷的NAK發(fā)送給主機,導致主機超時。在枚舉期間或稍后在數(shù)據(jù)傳輸期間,設備可能會失敗,具體取決于設備邏輯無法處理主機請求的位置。
Windows和Linux系統(tǒng)似乎通過微調(diào)主機/設備來解決此問題握手。它們將吞吐率降低到大多數(shù)或所有設備可以工作的水平。嵌入式USB開發(fā)人員需要測量他們打算使用的設備可以處理的命令間請求時間。
這種速度的一個例子圖2中顯示了與記憶棒相關(guān)的故障。在枚舉期間,主機的大容量存儲驅(qū)動程序會發(fā)出設備必須確認和處理的設置令牌。該圖顯示,如果設置后的命令間隙大約為9μs,則設備的邏輯無法確認“獲取字符串描述符”命令。設備使用NAK連續(xù)響應命令,導致主機超時。圖3顯示了設置后的命令間隙增加到27μs時的結(jié)果。通過這個時間,設備可以正常工作。
主機需要添加額外的命令間延遲才能適應某些USB設備的惡意功能,甚至雖然9μs的命令間隙是有效的USB請求。但是,只有在枚舉階段或控制轉(zhuǎn)移中才需要這種延遲。在正常數(shù)據(jù)交易(批量輸入/輸出)期間不會出現(xiàn)此計時問題。
我們的研究結(jié)果是,嵌入式USB主機 - 設備互操作性問題可能來自兩個來源:電源循環(huán)和命令/數(shù)據(jù)流量速率。由于這些因素沒有明確的規(guī)范,開發(fā)人員希望不同供應商能夠看到其實施的許多變化。為確保廣泛的互操作性,開發(fā)人員應確保其USB主機設計“慷慨”,以滿足設備的處理能力。此外,這些問題也應作為澄清USB標準的基礎,以便設備供應商在未來針對統(tǒng)一的要求。
Ritika Sharma畢業(yè)于NIT的電子與通信工程專業(yè)賈朗達爾,旁遮普邦,印度。她目前正在與飛思卡爾半導體印度公司合作。有限公司(恩智浦集團公司)作為IP設計和驗證領(lǐng)域最近3年的設計工程師。
Parul具有模擬設計背景和該公司致力于模擬PHY(如1394a,USB2.0和HDMI)的設計和芯片開發(fā),采用0.35um至28nm的各種技術(shù)。 Parul還擁有多項與USB設計有關(guān)的專利。
-
嵌入式
+關(guān)注
關(guān)注
5152文章
19675瀏覽量
317643 -
usb
+關(guān)注
關(guān)注
60文章
8190瀏覽量
272985 -
PCB打樣
+關(guān)注
關(guān)注
17文章
2977瀏覽量
22578 -
華強PCB
+關(guān)注
關(guān)注
8文章
1831瀏覽量
28610 -
華強pcb線路板打樣
+關(guān)注
關(guān)注
5文章
14629瀏覽量
43929
發(fā)布評論請先 登錄
嵌入式系統(tǒng)中的USB總線接口電路圖

基于嵌入式系統(tǒng)USB接口的虛擬示波器的開發(fā)與實現(xiàn)
基于LPC2290嵌入式系統(tǒng)USB接口的設計
嵌入式系統(tǒng)的USB虛擬串口設計

FPGA的嵌入式系統(tǒng)USB接口設計

基于LPC2214的嵌入式系統(tǒng)USB接口模塊設計

嵌入式USB MiniHost系統(tǒng)設計與實現(xiàn)

基于mClinux的嵌入式USB接口設計
嵌入式系統(tǒng)USB接口的虛擬示波器的開發(fā)與實現(xiàn)

基于STM32的嵌入式測控系統(tǒng)設計與實現(xiàn)

嵌入式測控系統(tǒng)中數(shù)字濾波算法的實現(xiàn)

評論