設(shè)計(jì)具有通用串行總線(USB)通信功能的應(yīng)用可使系統(tǒng)能夠通過各種USB主機(jī)設(shè)備進(jìn)行通信,,并通過USB連接提供方便的電源選擇方案,。如今的打印機(jī),、手機(jī)、數(shù)碼相機(jī),、媒體播放機(jī),、外部硬盤驅(qū)動(dòng)器和游戲機(jī)都采用USB協(xié)議傳輸數(shù)據(jù)。通過一條數(shù)據(jù)線同時(shí)提供電源和數(shù)據(jù)通信功能可以給應(yīng)用帶來方便和靈活性,。USB通信可以設(shè)計(jì)成新系統(tǒng)或者增加到傳統(tǒng)系統(tǒng)中,,通過增加固定功能USB通信橋接器或者帶定制USB固件的USB微控制器(MCU)來更新傳統(tǒng)系統(tǒng)。
各種USB開發(fā)選擇方案的主要折衷因素在于數(shù)據(jù)吞吐能力與開發(fā)時(shí)間以及是否需要USB專門知識(shí)來實(shí)現(xiàn),。小型USB MCU和固定功能USB通信橋接器可為在設(shè)計(jì)中增加USB通信功能提供一種極具成本效益的解決方案,。USB通信接口包括四個(gè)信號(hào):D+、D-,、接地信號(hào)和VBUS,。D+和D-信號(hào)為差分?jǐn)?shù)據(jù)線路,VBUS信號(hào)是由USB主機(jī)設(shè)備提供的5V線路,。VBUS信號(hào)用于指示USB端口中的USB數(shù)據(jù)線是否存在,,但是它還能通過供電集線器向系統(tǒng)提供高達(dá)500mA的電源或者通過非供電集線器向系統(tǒng)提供100mA的電源。
帶5V至3V片上穩(wěn)壓器的MCU或固定功能USB通信橋接器可通過穩(wěn)壓器輸出來給整個(gè)應(yīng)用供電,。此規(guī)格還支持各種不同尺寸和形狀的USB連接器,,包括標(biāo)準(zhǔn)、迷你和微型連接器,。各種USB連接器尺寸給開發(fā)人員提供了諸多在應(yīng)用中集成USB通信功能的選擇方案,。
此外,此USB規(guī)格還支持單個(gè)總線連接多達(dá)127個(gè)設(shè)備,,并支持各種設(shè)備類別,,包括人機(jī)接口設(shè)備(HID)類,這類設(shè)備本身就受大多數(shù)操作系統(tǒng)支持,,并且不需要安裝驅(qū)動(dòng)程序,。主機(jī)在枚舉過程中確定相連的USB設(shè)備的類型。將USB設(shè)備插入主機(jī)后,,USB設(shè)備將指示設(shè)備類型和要加載的驅(qū)動(dòng)程序的描述符發(fā)送給主機(jī),。
開發(fā)人員可以升級(jí)傳統(tǒng)系統(tǒng)以增加USB連接,也可以從頭開始設(shè)計(jì)包含USB的新系統(tǒng),。USB MCU或固定功能USB橋接器可以同時(shí)滿足這兩種方案,。表1列出了在系統(tǒng)中增加USB通信功能的四種選擇方案以及對(duì)開發(fā)人員和終端用戶的要求。
選擇USB通信選擇方案取決于幾個(gè)因素,,包括開發(fā)人員是升級(jí)現(xiàn)有系統(tǒng)還是創(chuàng)建新系統(tǒng),。這里我們首先闡述如何設(shè)計(jì)具有USB功能的新系統(tǒng),。
開發(fā)人員在創(chuàng)建新系統(tǒng)時(shí)可以靈活選擇增加USB通信功能的最佳方法,。他們可以USB MCU或固定功能USB通信橋接器為中心進(jìn)行系統(tǒng)的設(shè)計(jì),,然后為適合USB解決方案而對(duì)系統(tǒng)的各個(gè)方面進(jìn)行更改。例如,,最初的印制電路板(PCB)設(shè)計(jì)將包含USB設(shè)備和USB連接器等所有必需的元器件,,電路板設(shè)計(jì)人員可以根據(jù)需要對(duì)它們進(jìn)行重新配置。此外,,USB通信與系統(tǒng)的連接方法不受限制,,開發(fā)人員可從上表中的四個(gè)USB通信選擇方案中任意選擇。
要在新系統(tǒng)中增加USB通信功能,,固定功能USB通信橋接器可提供最簡(jiǎn)單的解決方案來,,但是其靈活性最低。它們可作為HID或非HID固定功能USB通信橋接器提供,,如USB轉(zhuǎn)UART虛擬COM端口(VCP)橋接器,。使用這些通信橋接器時(shí),由于不需要開發(fā)USB固件和驅(qū)動(dòng)程序,,因此USB專門知識(shí)不是必需的,。對(duì)于非HID類設(shè)備而言,制造商為不受支持的操作系統(tǒng)提供必需的驅(qū)動(dòng)程序,。此外,,制造商往往還提供動(dòng)態(tài)鏈接庫(DLL),為開發(fā)USB主機(jī)應(yīng)用提供幫助,。無需開發(fā)USB固件,、DLL和驅(qū)動(dòng)程序可以縮短應(yīng)用的面市時(shí)間。借助這種技術(shù),,USB接口不直接與目標(biāo)系統(tǒng)連接,,而是另一種橋接設(shè)備接口比如UART、串行外設(shè)接口(SPI)或內(nèi)置集成電路(I2C),,直接與目標(biāo)應(yīng)用連接,。USB轉(zhuǎn)UART VCP橋接器(圖1)通過UART接口與目標(biāo)系統(tǒng)通信。
開發(fā)人員采用這種選擇方案為系統(tǒng)增加USB通信功能時(shí)必須確保目標(biāo)系統(tǒng)能夠通過UART接口進(jìn)行通信,,同時(shí)考慮橋接設(shè)備的吞吐能力,,該能力往往受UART通信速度限制。此外,,開發(fā)人員需向終端用戶提供驅(qū)動(dòng)程序和驅(qū)動(dòng)程序安裝包,。終端用戶需安裝驅(qū)動(dòng)程序才能使用該設(shè)備。在這個(gè)實(shí)例中,,橋接設(shè)備作為USB主機(jī)系統(tǒng)的COM端口,。需要固定功能USB通信橋接器(無需安裝主機(jī)端驅(qū)動(dòng)程序)的開發(fā)人員應(yīng)考慮HID通信橋接器。
由于HID設(shè)備類具有靈活性和總吞吐能力,且無需安裝驅(qū)動(dòng)程序,,因此這類設(shè)備正作為嵌入式系統(tǒng)的常規(guī)連接選擇方案而獲得業(yè)界認(rèn)可,。由于HID設(shè)備類本身受多數(shù)操作系統(tǒng)支持,因此無需開發(fā)驅(qū)動(dòng)程序,。終端用戶直接將其插入設(shè)備中即可開始使用,,而無需安裝驅(qū)動(dòng)程序。在上述USB轉(zhuǎn)UART VCP實(shí)例中,,橋接設(shè)備可用HID USB轉(zhuǎn)UART設(shè)備替代(圖2),。
HID橋接器的大多數(shù)設(shè)計(jì)考慮因素都與上述VCP橋接器實(shí)例相同,但是HID與VCP USB轉(zhuǎn)UART橋接器實(shí)例在設(shè)計(jì)上略有不同,。通過HID配置,,橋接設(shè)備的吞吐能力限制為最大HID吞吐能力,即64KBps,。此外,,此設(shè)備不作為USB主機(jī)的COM端口,而是作為HID類設(shè)備,。HID固定功能通信橋接器可為希望在向系統(tǒng)增加USB通信功能時(shí)最大程度地縮短總USB開發(fā)時(shí)間的開發(fā)人員提供直接替代方案,。如果對(duì)于一個(gè)應(yīng)用而言,固定功能USB通信橋接器的吞吐能力或常規(guī)功能不夠用,,開發(fā)人員應(yīng)考慮增加USB MCU,。
USB MCU可提供USB通信接口的最大靈活性和控制,但需要大量設(shè)計(jì)工作,。開發(fā)人員必須構(gòu)建所有的USB固件,,如果創(chuàng)建了非HID類設(shè)備,開發(fā)人員必須編寫設(shè)備驅(qū)動(dòng)程序,。這需要一些USB方面的經(jīng)驗(yàn),,因?yàn)榫帉慤SB固件和設(shè)備驅(qū)動(dòng)程序并非小事一樁。由于所有MCU固件都可定制,,因此USB MCU可在需要時(shí)執(zhí)行額外的任務(wù),。這提供了通信橋接器無法實(shí)現(xiàn)的更高靈活性。例如,,如果USB MCU具有模數(shù)轉(zhuǎn)換器(ADC),,開發(fā)人員可增加固件來配置ADC并在需要時(shí)進(jìn)行測(cè)量。USB描述符在固件中也是可以完全定制的,。USB主機(jī)在枚舉過程中通過從設(shè)備接收的描述符來確定設(shè)備是HID設(shè)備還是非HID設(shè)備,。
使用USB MCU時(shí),USB通信可提供與目標(biāo)系統(tǒng)的直接連接,,系統(tǒng)可以基于USB MCU來構(gòu)建(圖3),。除了更長(zhǎng)的開發(fā)時(shí)間之外,,開發(fā)人員還需考慮所需的吞吐能力。HID類設(shè)備的吞吐能力限制是64KBps(即512Kbps),。非HID類設(shè)備的吞吐能力限制為12Mbps(即12,,000Kbps)。與HID設(shè)備相比,,非HID類設(shè)備可以實(shí)現(xiàn)更高的吞吐能力,,但是也需要開發(fā)定制驅(qū)動(dòng)程序,,終端用戶則需要安裝驅(qū)動(dòng)程序,。這就增加了應(yīng)用的總開發(fā)時(shí)間。使用配置HID的USB MCU可以避免開發(fā)和安裝驅(qū)動(dòng)程序,,但是前提是HID的吞吐能力能夠滿足應(yīng)用的要求,。
創(chuàng)建包含USB MCU的系統(tǒng)可以靈活地更改設(shè)計(jì)的各個(gè)方面,從而根據(jù)要求組合最佳的USB解決方案,。例如,,開發(fā)人員在設(shè)計(jì)通過USB通信向主機(jī)發(fā)送測(cè)量數(shù)據(jù)的醫(yī)療設(shè)備時(shí)可以更改USB MCU數(shù)據(jù)傳遞類型,以滿足所需的USB MCU解決方案的吞吐能力限制,,或者實(shí)現(xiàn)多接口設(shè)備,,比如帶同步HID接口的設(shè)備。設(shè)計(jì)新的USB應(yīng)用時(shí),,開發(fā)人員可對(duì)每個(gè)USB選擇方案的要求進(jìn)行分析,,然后選擇最適合的方案。我們接下來探討如何通過USB通信升級(jí)傳統(tǒng)設(shè)計(jì),。
開發(fā)人員通過 USB 通信升級(jí)傳統(tǒng)系統(tǒng)時(shí)可在為新設(shè)計(jì)提供的四個(gè)方案中任選一個(gè),,但是必須選擇適合現(xiàn)有應(yīng)用的USB解決方案,而不是設(shè)計(jì)一個(gè)適合USB解決方案的應(yīng)用,。此時(shí),,開發(fā)人員需考慮當(dāng)前的通信方法、所需的USB數(shù)據(jù)吞吐能力和可供附加元器件使用的PCB空間,。傳統(tǒng)設(shè)計(jì)擁有成熟的與主機(jī)系統(tǒng)的通信方法,。如果橋接設(shè)備中提供用于與主機(jī)通信的接口,那么增加固定功能USB通信橋接器是唯一的選擇方案,。在多數(shù)應(yīng)用中,,這種接口為UART接口。對(duì)于這些應(yīng)用,,可在設(shè)計(jì)中增加USB轉(zhuǎn)UART通信橋接芯片,。圖4顯示了如何使增加的橋接設(shè)備適合傳統(tǒng)設(shè)計(jì)。
從硬件層面看,,現(xiàn)有的PCB需進(jìn)行重新設(shè)計(jì),,以使USB設(shè)備和USB連接器適合現(xiàn)有的電路板,。從軟件層面看,USB轉(zhuǎn)UART設(shè)備的制造商一般會(huì)為開發(fā)人員提供VCP驅(qū)動(dòng)程序,,因此無需開發(fā)驅(qū)動(dòng)程序,。在這個(gè)實(shí)例中,橋接設(shè)備的吞吐能力限制是UART接口的波特率,。只要橋接設(shè)備能夠支持應(yīng)用所需的波特率,,吞吐能力就不存在問題。設(shè)備將仍作為USB主機(jī)的COM端口,,這樣傳統(tǒng)主機(jī)應(yīng)用不需要進(jìn)行修改即可正常工作,。傳統(tǒng)設(shè)計(jì)與升級(jí)的設(shè)計(jì)之間的主要區(qū)別在于通過USB提供與主機(jī)的接口以及需要終端用戶安裝驅(qū)動(dòng)程序。
如果需要無驅(qū)動(dòng)程序的選擇方案,,HID固定功能USB通信橋接器就是一個(gè)可能的解決方案,。選擇此方案時(shí),其設(shè)計(jì)考慮因素與VCP固定功能通信橋接器的考慮因素相同,,但是此橋接器的吞吐能力限定為64KBps,,這是最高HID吞吐能力。在上述傳統(tǒng)設(shè)計(jì)升級(jí)的實(shí)例中,,開發(fā)人員可以使用HID USB轉(zhuǎn)UART橋接器,,但是設(shè)備不作為主機(jī)系統(tǒng)的COM端口,而是作為HID,。這樣,,傳統(tǒng)主機(jī)應(yīng)用如不進(jìn)行修改將無法正常工作。盡管此解決方案無需安裝驅(qū)動(dòng)程序,,但是現(xiàn)有的主機(jī)應(yīng)用需進(jìn)行修改后才能與HID OS 應(yīng)用程序編程接口(API)通信,,而不是與COM端口API通信。固定功能USB通信橋接器是大多數(shù)傳統(tǒng)設(shè)計(jì)升級(jí)的理想選擇,,因?yàn)樗鼈兛梢詾樵谠O(shè)計(jì)中增加USB通信提供最簡(jiǎn)單的解決方案,,且無需USB專門知識(shí)。
對(duì)于需要更高吞吐能力,、額外功能或定制USB固件的傳統(tǒng)設(shè)計(jì),,USB MCU是最佳選擇。新設(shè)計(jì)方案的許多設(shè)計(jì)考慮因素都適用于此方案,。由于開發(fā)人員必須編寫所有的USB固件,,因此該選擇方案需要一定的USB專門知識(shí)。VCP USB設(shè)備還需開發(fā)和安裝驅(qū)動(dòng)程序,。USB MCU必須具有通過GPIO引腳或系統(tǒng)管理總線(SMBus)或SPI等外設(shè)接口與現(xiàn)有傳統(tǒng)應(yīng)用進(jìn)行通信的途徑(圖5),。
此外,需通過增加額外元器件對(duì)現(xiàn)有PCB進(jìn)行重新設(shè)計(jì),。若開發(fā)人員所需的吞吐能力比橋接設(shè)備所能實(shí)現(xiàn)的吞吐能力高或者使用橋接設(shè)備無法實(shí)現(xiàn)的通信方法,,使用USB MCU升級(jí)傳統(tǒng)應(yīng)用是最佳選擇,。
選擇在設(shè)計(jì)中增加固定功能通信橋還是增加USB MCU,取決于目標(biāo)應(yīng)用,、開發(fā)人員的USB經(jīng)驗(yàn)和開發(fā)時(shí)間,。使用USB MCU可提供最高的靈活性,但也需要USB專門知識(shí),,并且可能需要開發(fā)驅(qū)動(dòng)程序,。選擇固定功能USB通信橋接器無需任何USB固件,也不需要開發(fā)驅(qū)動(dòng)程序,,這樣就縮短了總開發(fā)時(shí)間,。這是在系統(tǒng)中增加USB只進(jìn)行極少的重新設(shè)計(jì)的最簡(jiǎn)單方法。
在系統(tǒng)中增加USB功能可以實(shí)現(xiàn)與各種USB主機(jī)設(shè)備的通信,,同時(shí)能以一根數(shù)據(jù)線增加500mA的電源方案,,因此可為應(yīng)用帶來方便和靈活性,。小型USB MCU和固定功能USB通信橋接器可為在新設(shè)計(jì)或傳統(tǒng)系統(tǒng)中增加USB通信功能提供極具成本效益的方案,。
作者:Evan Schulz