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