輕松駕馭嵌入式USB設(shè)計--USB完全解決方案全新登場
USB接口在生活中隨處可見,其主要優(yōu)點有通信速度快、可靠性高、支持熱插撥以及低成本。
此外由于易于使用,并可以取代電腦上的RS232接口,微軟和英特爾電腦系統(tǒng)設(shè)計要求所有PC上必須有兩個以上可以直接使用的USB接口,可見USB的使用越來越廣泛。
USB協(xié)議
USB全稱為通用串行總線,HOST為主機,是通過總線發(fā)起所有傳輸?shù)南到y(tǒng);Device是與主機進行通信并且接收來自主機信息的外設(shè)設(shè)備;Hub是集線器,用來擴展USB主機接口,提供連接點和電源的設(shè)計;Pipe是管道,是邏輯上的抽象概念,指的是設(shè)備端上的端點和主機軟件之間建立的虛擬的連接通道;ENDPOINT指的是設(shè)備端用作USB的數(shù)據(jù)和發(fā)送的存儲器緩沖,包括IN端點和OUT端點。IN是USB主機讀入讀取數(shù)據(jù)的端點,OUT是USB主機寫入數(shù)據(jù)的端點。Silicon Labs單片機上端點是用片上XRAM的FIFO實現(xiàn)的。在USB的網(wǎng)絡(luò)協(xié)議中,每個USB的系統(tǒng)有且只有一個HOST,負責(zé)管理整個USB系統(tǒng),HOST端有一個ROOT HUB,可以提供一個或多個USB下行端口,每個端口都可以通過USB Hub進行擴展,從而連接多個USB設(shè)備,最多可以擴展到127個,其拓撲結(jié)構(gòu)如圖1所示:
USB的傳輸指的是完成通信請求的過程;會話是到一個端點的發(fā)求過程;包即信息塊;幀是建立在低速和全速總線上的1ms的時間單位。傳輸被劃分為多個會話,而會話由包組成,USB主機通過將會話分配到幀進行傳輸,一個傳輸可以有多個幀。枚舉是一個識別和指派一個獨一無二的地址的行為,枚舉過程使USB設(shè)備具有被熱插拔的能力,USB主機一直檢查總線上是否有新的設(shè)備接入,直到有一個USB設(shè)備被完全枚舉完成,USB主機才開始與USB設(shè)備進行通信。因此USB主機可以枚舉USB設(shè)備并與USB外圍設(shè)備進行數(shù)據(jù)傳輸,管理USB總線,為USB設(shè)備提供電源,如一個全功耗主機給每個USB外設(shè)提供最大到500mA的電流,一些低功耗的USB主機只能給低功耗的USB外設(shè)提供最大到100mA的電流,除此之外USB外設(shè)也可以自己供電。而USB設(shè)備的作用是與USB主機傳輸數(shù)據(jù),響應(yīng)USB主機的標(biāo)準(zhǔn)請求,管理電源。
USB協(xié)議定義了四種傳輸類型:控制傳輸,塊傳輸,中斷傳輸和同步傳輸??刂苽鬏斒请p向傳輸,通常數(shù)據(jù)量較小,其用途是傳送命令請求,讓USB主機識別和枚舉外設(shè),以及傳送用戶定義的請求。控制傳輸?shù)膫鬏斔俣仁歉咚倌J綖?5.8MB/s,全速模式832KB/s,低速模式24KB/s,任何USB外設(shè)都必須支持控制傳輸;塊傳輸適用于大量數(shù)據(jù)傳輸應(yīng)用,但不保證數(shù)據(jù)速率和延遲,只支持高速和全速USB外設(shè),其傳輸速度為高速模式53.2MB/s,全速模式1.2MB/s,通常應(yīng)用于打印機、掃描儀、磁盤驅(qū)動器等等會有大塊數(shù)據(jù)進行傳輸?shù)脑O(shè)備;中斷傳輸主要用于定時查詢設(shè)備是否有中斷數(shù)據(jù)傳輸,從而保證數(shù)據(jù)傳輸間隔的時間,高速模式為24.6MB/s,全速模式為64MB/s,低速模式為0.8KB/s,通常應(yīng)用在鍵盤、鼠標(biāo)、游戲手柄等傳輸要求數(shù)據(jù)量小但要定時傳輸?shù)膱龊?;同步傳輸是一種數(shù)據(jù)流實時傳輸?shù)哪J剑捎谶@種模式中沒有糾錯環(huán)節(jié),因此它可以保證傳輸速率和間隔時間但不保證數(shù)據(jù)的完整性,同步傳輸?shù)淖罡咚俣葹?4.6MB/s,全速模式為1MB/s。
USB主機通過獨特的標(biāo)識符識別USB外設(shè),VID(Vendor ID)是USB聯(lián)盟給USB設(shè)備提供商分配的ID號,PID是USB設(shè)備提供商給自己產(chǎn)品分配的ID號,串行序列號是開發(fā)商或制造商給每個USB產(chǎn)品分配的號碼,每個USB設(shè)備都有自己唯一的序列號。Silicon Labs公司唯一的VID是0x10C4,所有出廠產(chǎn)品都分配了一個PID,客戶可以根據(jù)自己的需求聯(lián)系Silicon Labs公司的相關(guān)人員為Silicon Labs的USB產(chǎn)品申請一個特別的PID。
USB定義了一套標(biāo)準(zhǔn)的設(shè)備類別從而實現(xiàn)不同系統(tǒng)平臺間的互操作性。HID主要應(yīng)用于鍵盤、鼠標(biāo)、熱量表、電壓表等;大量存儲主要用于可移動或不可移動的設(shè)備,如磁盤、硬盤、光盤以及U盤等;Audio主要應(yīng)用在揚聲器、麥克風(fēng)、語音處理等;Communication Device Class主要是調(diào)制解調(diào)器、模擬或數(shù)字電話和以太網(wǎng)卡;Imaging的應(yīng)用有數(shù)碼相機、攝像機、網(wǎng)絡(luò)攝像頭;此外如IrDA、電源、打印機、SD卡等都有相應(yīng)的類別。
Silicon Labs公司的USB解決方案
目前Silicon Labs公司的USB產(chǎn)品已經(jīng)擴充到十五款,并且可以為客戶提供相應(yīng)的五種開發(fā)板,軟件支持包括虛擬串行通訊接口驅(qū)動,USBXpress從傳輸類型的驅(qū)動層到源代碼,常用類型的參考設(shè)計,以及第三方提供的工具等。圖2所示的為Silicon Labs公司的所有USB解決方案。圖中可以看到虛擬COM口很容易使用,不需要開發(fā)固件和驅(qū)動。同時Silicon Labs公司提供的驅(qū)動支持Windows,蘋果和Linux等多個操作系統(tǒng),并且通過了WHQL認(rèn)證。USBXpress可以為用戶提供簡單靈活的開發(fā)途徑,固件庫文件以及Windows動態(tài)鏈接庫,還可以處理所有USB復(fù)雜協(xié)議,簡化了設(shè)備端的固件和主機側(cè)的驅(qū)動開發(fā)。
CP210X系列包括CP2101、CP2102、CP2103,都是固定功能的USB到UART轉(zhuǎn)接橋芯片,能為用戶提供最快最簡單的從RS232升級到USB的方法。其它混合信號帶USB功能的MCU都是高速8051內(nèi)核,最快可達48M的指令運行速度,全部都內(nèi)置高精度的振蕩器,不需要外加晶振,最高64K Flash的程序空間和5376Byte的RAM,17通道10位200Ksps的ADC,C86F340系列帶有外部數(shù)據(jù)總線接口,支持在系統(tǒng)仿真編程,芯片內(nèi)集成5V-3.3V的電壓解調(diào)器,因此芯片的有效供電電壓范圍為2.7-5.25V。
USBXpress簡化了USB的設(shè)計,為USB設(shè)備端的固件和主機側(cè)的應(yīng)用軟件提供更高層的API,用戶無需掌握USB協(xié)議的主機端的驅(qū)動專門技術(shù)即可實現(xiàn)USB的應(yīng)用,而且該應(yīng)用軟件完全免費,并已取得Windows的設(shè)備驅(qū)動認(rèn)證,支持Silicon Labs公司的所有產(chǎn)品。支持的操作系統(tǒng)有Windows98、Windows2000、WindowsXP,也支持其他操作系統(tǒng)。
Silicon Labs公司的十五款USB MCU產(chǎn)品適合全部的嵌入式應(yīng)用,高性能的混合信號USB2.0使這些MCU可以很好的滿足市場需求,而且全面的軟件和硬件開發(fā)資源及參考設(shè)計加速了產(chǎn)品的開發(fā)周期。
ToolStick開發(fā)平臺
ToolStick開發(fā)平臺是Silicon Labs公司提供的一個低價位的MCU評估開發(fā)平臺,它可以使MCU所有的引腳都可以引出,不同的MCU做在不同的子卡上,子卡即Daughter卡,開發(fā)不同的MCU即選擇不同的子卡。圖5所示的是一個完整的ToolStick工具,左邊的Base Adapter可以與任何Silicon Labs的MCU進行通信,通過USB Debug接口和PC相連;右邊的是Daughter卡,是MCU產(chǎn)品開發(fā)板,不同的MCU所用Daughter卡不同。Toolstick軟件和安裝方法可以在Silicon Labs公司的網(wǎng)站上找到,包括Silicon Labs的IDE,Keil公司2KB代碼的評估板,C語言編譯器,參考代碼以及應(yīng)用終端軟件等等。
Toolstick開發(fā)平臺將一個完成的開發(fā)系統(tǒng)包括在USBStick里,可以幫助工程師在現(xiàn)場演示如何使用Silicon Labs公司MCU,如何編程仿真和下載程序,Toolstick平臺整個應(yīng)用方法如圖5所示,PC側(cè)IDE通過Base Adapter仿真調(diào)試功能對子卡上的單片機進行在線調(diào)試,同時安裝在PC側(cè)的ToolStick終端軟件可以通過Base Adapter上單片機的UART口、GPIO口跟子卡上的單片機的UART口、GPIO口進行通訊,數(shù)據(jù)的收發(fā)在這個軟件上都可以顯示出來。ToolStick插上PC以后,電源LED點亮,C8051F326執(zhí)行的是USB調(diào)試器和跟USB通信的功能,調(diào)試的時候程序的運行和停止都會在Run,Stop LED顯示出來,SocketConnector是和子卡相連的接口。
圖6是C8051F330子卡的硬件圖。其中包括兩個LED,一個指示MCU的3.3V供電是否正常,另一個接在P1.39上給客戶作實驗用;IDIC輸出側(cè)接電阻,將電流信號轉(zhuǎn)換成電壓,通過轉(zhuǎn)動電位器可以給ADC輸入0-3.3V之間的電壓。C8051F330所有的I/O口都可以引出的,更方便客戶的測試和實驗。
更多詳細內(nèi)容,敬請登錄中電網(wǎng)在線座談網(wǎng)址:
http://seminar.eccn.com/071206/tindex.asp
問答選編
問:為任何一個微控制器添加USB口,有沒有最簡單的通 用方案?
答:最簡單的方案就是,使用Silicon Labs公司的CP210x系 列產(chǎn)品,不需要做USB的軟件開發(fā),直接將UART口轉(zhuǎn) 變成USB接口。
問:以往的USB實現(xiàn),往往都是通過加一個芯片,一般都是 支持usb1.1,兼容usb2.0,請問本產(chǎn)品的特點在哪里?
答:Silicon Labs公司的單片機將USB2.0的功能集成到單 片機上,使系統(tǒng)方案更加簡潔、可靠。在手持設(shè)備上使用 的話,單芯片的優(yōu)勢更加明顯。
問:我們設(shè)計的智能設(shè)備用于電力系統(tǒng),原設(shè)計是每相用一 個F310的UART接口,三相的三個接口通過串行總線 接口一個匯總的UART接口(第4個UART),通過第4 個接口對外部通信,請問如果用F340等芯片的USB接 口可以嗎?有沒有更好的方案?
答:通過F340的USB接口可以完成跟外部通信的任務(wù),另 外F340的2個UART口也可以完成2相的通信,還需 要軟件模擬一個UART口。
問: C8051F34x MCU進行A/D轉(zhuǎn)換時,可以實時把轉(zhuǎn)換后 的數(shù)據(jù)傳輸?shù)絇C嗎? 有多長的延遲時間呢?
答:可以。使用中斷,可以快很多。關(guān)于這個問題,還得看你 F34X里的任務(wù)和軟件代碼,還有PC機側(cè)的響應(yīng)時間(中 斷、定時、輪詢、任務(wù)多少)。
問:在應(yīng)用方面,協(xié)議中是不是要同時用到幾種傳輸模式? 控制傳輸是不是必需用到的?
答:對,每種USB的傳輸模式中,都會有控制傳輸。其他的 傳輸類別,可以根據(jù)你的應(yīng)用來選擇。
問:把傳統(tǒng)的USB主控移植到嵌入式裝置中,需要理清的 問題是不是比較多?
答:不會,使用SILICON LABS的USB可以省掉很多麻煩。 在MCU或PC機側(cè),我們都有USBEXPRESS、VCP等等 驅(qū)動程序來支持。實際上與USB接口有關(guān)的東西,你們 的應(yīng)用程序基本上是不會涉及的。
問:采用USB方案實現(xiàn)實時數(shù)據(jù)采集的最高采集信號頻率 能到多少?應(yīng)該如何考慮系統(tǒng)的優(yōu)化和抗干擾問題?
答:這個取決于需要通過USB傳輸有關(guān)信號的信息的頻 率。當(dāng)帶有USB中斷管道時,僅僅1ms發(fā)送一次請求, 這種情況需要考慮到MCU在多個周期內(nèi)取樣一次外部 信號。
我們的USB案例是基于降低端點1USB路徑花費的時 間量而優(yōu)化的,對于其他MCU任務(wù)將會考慮最大時間量。
問:兩個問題,首先是調(diào)試時,有時需要將JTAG或兩線接口 和目標(biāo)板電氣隔離,能否用光電隔離的辦法(如6N137), 能否提供解決方案?第二,不用KEIL時,不能進行軟仿 真,能否增添此方面的功能?
答:第一個問題,只要隔離是雙向的并且支持高達幾百KHz 的速度,使用隔離器就是安全的。
第二個問題,Keil是為Silicon Labs的MCU提供仿真器 的唯一廠商。我們的MCU具有實時硬件調(diào)試的性能,因 此典型應(yīng)用我們推薦使用在實際硬件上調(diào)試。這樣可以 提供更高精度的仿真,目前沒有計劃增加仿真器支持Sili - con Labs IDE。
問:在使用USB/UART橋接方案的時候,經(jīng)常會出現(xiàn)UART 找不到的問題,請問一般是由哪些原因造成的?
答:如果一個器件操作已經(jīng)打開,則PC無法找到CP210x。 如果一個PC應(yīng)用已經(jīng)打開一個操作,并且器件沒有連 接到PC,但是這個操作也不會被關(guān)閉,器件也不能被檢 測到。PC應(yīng)用時,必須在器件重新連接之前關(guān)閉操作。
問:塊傳輸中的HIGH SPEED能達到53.2Mbyte/sec,這已 經(jīng)接近USB2.0理論上的極限值了,能否實現(xiàn)這個速度的 傳輸?與哪些因素有關(guān)?
答:Silicon Labs的MCU不支持高速,僅僅可以支持USB 全 速(48 MHz時鐘速度)和USB 低速(6 MHz時鐘)。保持 固件路徑小是達到高吞吐率的一個要求,除非是在必要 情況下,數(shù)據(jù)不可以在不同的存儲空間移動。
問:C8051F340芯片功耗怎樣,能用于低功耗手持式便攜儀 器嗎?
答:C8051F340 MCU的功耗量示于數(shù)據(jù)手冊的表3.1(33 頁)。如果器件僅僅用于USB傳輸,可以將其設(shè)置在低 功耗模式,這樣當(dāng)不用USB傳輸時幾乎不需要電流。當(dāng) 與PC相連接時,可以從USB主機獲取電源,如果MCU 用于采集數(shù)據(jù)或其他功能,振蕩器可以配置成低速運行 從而降低功耗。此外為了實現(xiàn)低功耗,還有一個片上低 頻率振蕩器。
問:不同速率的USB設(shè)備互聯(lián),會出現(xiàn)什么問題?常常遇 到USB設(shè)備能檢測到,但是不能識別,是信號完整性的 問題嗎?有沒有很好的解決辦法?
答:首先是USB集線器和USB主機支持連接不同速率的 USB設(shè)備(全速USB或高速USB),而一些USB集線器 僅僅可以在USB全速模式下工作。其次,如果PC可以 檢測到一個設(shè)備,但是不能識別,可能USB描述符或者 信號集成存在問題。推薦先使用USB分析器檢查USB 枚舉結(jié)果,如果枚舉正確,再檢查信號集成。