到了90年代末,一種新的連接方案旨在為連接計(jì)算設(shè)備創(chuàng)建一個(gè)標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)是通用串行總線(USB)。顧名思義,USB已經(jīng)成為計(jì)算設(shè)備中事實(shí)上的標(biāo)準(zhǔn)。 USB規(guī)范定義了嚴(yán)格的主機(jī)到外設(shè)的安排。它還允許多個(gè)外圍設(shè)備通過(guò)一個(gè)或多個(gè)集線器連接到給定的USB主機(jī)。在所有情況下,主機(jī)PC最終控制所有外圍設(shè)備。外圍設(shè)備采用多種形式,如數(shù)碼相機(jī),生物識(shí)別設(shè)備,傳感器和打印機(jī)。使用所有這些外設(shè),USB的控制權(quán)留給主機(jī)PC。 2007年,谷歌與開放手機(jī)聯(lián)盟一起公開推出了Android操作系統(tǒng),這是一個(gè)基于Linux的操作系統(tǒng)。大約一年后,推出了第一款帶有運(yùn)行操作系統(tǒng)的ARM CPU的商用手機(jī)。該平臺(tái)在過(guò)去幾年中不斷發(fā)展,現(xiàn)已成為移動(dòng)電話,平板電腦和眾多其他嵌入式應(yīng)用程序的一部分,如圖1所示。
圖1:應(yīng)用示例
FTDI提供以下三種不同的選項(xiàng),通過(guò)USB連接到Android平臺(tái)。
在Android平臺(tái)上使用Android開放附件模式
利用Android的USB主機(jī)功能和FTDI的Android Java驅(qū)動(dòng)程序
利用Android的USB主機(jī)功能和FTDI的傳統(tǒng)驅(qū)動(dòng)程序
這些選項(xiàng)中的每一個(gè)都包含優(yōu)點(diǎn)和缺點(diǎn),在決定使用哪個(gè)接口選項(xiàng)時(shí)需要考慮三個(gè)主要因素。 Android平臺(tái)是否支持USB主機(jī)或設(shè)備? Android平臺(tái)或外圍設(shè)備是否會(huì)提供USB電源?該平臺(tái)使用的是哪個(gè)版本的Android?
要考慮的第一個(gè)界面因素是Android平臺(tái)是否支持USB主機(jī)。 Android智能手機(jī)始終提供USB設(shè)備端口,但有些Android平板電腦同時(shí)提供USB主機(jī)和USB設(shè)備端口,如圖2所示.USB設(shè)備端口用于連接PC或嵌入式主機(jī),以實(shí)現(xiàn)數(shù)據(jù)傳輸和電池充電。 USB主機(jī)端口用于連接USB外圍設(shè)備硬件。
圖2:USB主機(jī)和USB設(shè)備
許多Android平臺(tái)如圖3所示,現(xiàn)在提供On-The-Go(OTG)USB端口,允許USB端口為主機(jī)或設(shè)備。其中一些OTG端口僅為USB設(shè)備,有些將提供USB主機(jī)和設(shè)備功能。確定用戶的Android平臺(tái)是否支持USB主機(jī)和/或設(shè)備的一種方法是使用電纜類型。 Micro-AB電纜可能同時(shí)是USB主機(jī)和設(shè)備,而Micro-B電纜僅指示USB設(shè)備。
圖3:USB On-The-Go
確定使用哪個(gè)接口選項(xiàng)的另一個(gè)因素是決定Android平臺(tái)或外圍設(shè)備是否提供USB電源。根據(jù)USB規(guī)范,USB主機(jī)需要為下游外設(shè)提供電源。重要的是要記住,即使Android平臺(tái)可能提供USB主機(jī)支持,大多數(shù)Android設(shè)備都是便攜式的,需要電池供電才能運(yùn)行。利用Android平臺(tái)上的USB客戶端端口,無(wú)需Android平臺(tái)提供電源以及復(fù)雜的USB主機(jī)連接和軟件堆棧。這樣可以減少Android平臺(tái)上的電池尺寸和成本。 Android平臺(tái)操作系統(tǒng)版本也在確定使用哪個(gè)界面選項(xiàng)時(shí)起作用,因?yàn)锳ndroid Open Accessories需要操作系統(tǒng)版本3.1以及Java驅(qū)動(dòng)程序界面選項(xiàng)需要Android操作系統(tǒng)版本3.2以后。
一旦界面因素是確定后,可以使用三種界面選項(xiàng)之一。第一個(gè)界面選項(xiàng)是使用Android開放附件(AOA)模式(圖4)。
圖4:Android開放附件(AOA)模式
谷歌于2011年5月推出AOA,以解決想要使用USB設(shè)備端口從Android平臺(tái)控制更簡(jiǎn)單的外圍設(shè)備的困境。 AOA允許外圍設(shè)備使用USB嵌入式主機(jī)作為Android平臺(tái)的接口。在物理層并通過(guò)建立USB連接(又名Enumeration),可以實(shí)現(xiàn)傳統(tǒng)的主機(jī) - 外設(shè)連接。電力安排也得以維持。外圍平臺(tái)可以為Android設(shè)備提供完整的500 mA電流。可以將兩個(gè)實(shí)體(Android主機(jī)和AOA外設(shè))視為交換邏輯功能。 Android平臺(tái)(USB設(shè)備)現(xiàn)在通過(guò)已安裝的應(yīng)用程序(APK)控制外圍設(shè)備(USB主機(jī))。使用AOA的唯一要求是Android平臺(tái)正在運(yùn)行操作系統(tǒng)版本3.1。
使用AOA連接外圍設(shè)備的一個(gè)關(guān)鍵優(yōu)勢(shì)是許多Android平臺(tái)只能充當(dāng)USB設(shè)備而不是一個(gè)USB主機(jī)。 AOA利用所有Android平臺(tái)擁有的Android的USB設(shè)備端口克服了這一局限。由于Android充當(dāng)USB設(shè)備,因此無(wú)需提供電源即可節(jié)省電池尺寸(圖5)。沒(méi)有必要開發(fā)特殊的驅(qū)動(dòng)程序來(lái)加載Android平臺(tái),也不需要Android平臺(tái)的生根。此外,復(fù)雜的USB主機(jī)連接和軟件堆棧不是Android平臺(tái)的責(zé)任。
圖5:使用AOA的好處
要在開放附件模式下連接到Android平臺(tái),平臺(tái)必須首先支持該模式。從操作系統(tǒng)版本3.1開始也是如此,但如果用戶已將該功能重新移植到此操作系統(tǒng)版本,則可能在早于2.3.4的操作系統(tǒng)版本上也可用。當(dāng)Open Accessory設(shè)備連接到Android時(shí),它必須向Android發(fā)送供應(yīng)商請(qǐng)求以詢問(wèn)設(shè)備是否支持開放附件模式。
下面的圖6顯示了此Get_Protocol命令的示例。如果答復(fù)為否,通訊將在此處停止。如果答復(fù)為是,則外圍設(shè)備發(fā)送其自己的唯一描述符字符串以標(biāo)識(shí)自身。然后有另一個(gè)USB供應(yīng)商請(qǐng)求啟用開放附件模式并在此配置中重新枚舉Android設(shè)備。當(dāng)枚舉為開放附件模式設(shè)備時(shí),將有一個(gè)USB BULK IN端點(diǎn)和一個(gè)USB BULK OUT端點(diǎn)以及控制端點(diǎn)。該接口將是全速(12 Mbit/s)USB,允許數(shù)據(jù)傳入和傳出。
圖6:Get_Protocol命令
為了利用Android Open Accessories,F(xiàn)TDI發(fā)布了FT311D。這是一款硬編碼的USB Android主機(jī)IC,專用于訪問(wèn)Android平臺(tái)上的AOA模式。該IC允許設(shè)計(jì)人員通過(guò)Android USB設(shè)備端口將其外圍硬件上的接口橋接到Android平板電腦或智能手機(jī)平臺(tái)。 FT311D將枚舉Android平臺(tái),并通過(guò)客戶的Android平臺(tái)及其外圍硬件之間的GPIO,UART,PWM,I 2 C Master,SPI Slave或SPI Master提供接口。只需在FT311D模式選擇引腳上選擇帶上拉/下拉電阻的接口模式,然后插入Android(3.1或更高版本)平臺(tái),通過(guò)Androids的開放附件模式通過(guò)USB訪問(wèn)外圍硬件。
FT311D系統(tǒng)允許提供商增強(qiáng)與移動(dòng)生態(tài)系統(tǒng)的連接,能夠創(chuàng)建利用Android平臺(tái)資源的應(yīng)用程序,如高性能處理,加速度計(jì)和觸摸屏界面。
FT311D功能包括:接口通過(guò)三個(gè)模式選擇引腳配置; Rx,Tx,RTS,CTS的基本UART功能,Tx有效;四個(gè)PWM通道;主機(jī)堆棧,類驅(qū)動(dòng)程序,Open Accessory驅(qū)動(dòng)程序和IP橋接功能; 3.3 V單電源,具有5 V容差I(lǐng)/O; 32引腳LQFP或QFN封裝;延伸溫度范圍為-40 o C至+85 o C.此外,還提供廣泛的FT311D開發(fā)支持,包括開發(fā)硬件,應(yīng)用程序,白皮書和數(shù)據(jù)表。
UMFT311EV是FT311D的開發(fā)模塊。該模塊允許選擇每個(gè)FT311D接口:GPIO,UART,PWM,I 2 C主機(jī),SPI從機(jī)或SPI主機(jī)。該模塊提供帶有電源開關(guān)的USB A型連接器,用于控制USB端口的5 V電源。 UMFT311GP是一個(gè)帶八個(gè)按鈕和八個(gè)LED的PCB。它可以插入FT311D開發(fā)板以測(cè)試GPIO操作。該模塊還有一個(gè)可接受5 VDC的電源插座,通過(guò)板載3.3 V穩(wěn)壓器和連接的Android設(shè)備為FT311D供電
另一種使用Android Open Accessory模式的FTDI解決方案是FTDI的Vinculum- II(VNC2)系列IC和模塊。這是一個(gè)單芯片嵌入式主機(jī),可以編程為包含AOA支持。除了FT311D IC提供的接口外,Vinculum-II還包括第二個(gè)USB端口,可配置為USB主機(jī)或USB設(shè)備。通過(guò)為主機(jī)配置的Vinculum-II的第二個(gè)USB端口,可以為傳統(tǒng)的USB外設(shè)添加USB支持,例如已經(jīng)使用FTDI外設(shè)IC或連接為HID外設(shè)的條形碼掃描器。
Vinculum-II是基于FTDI USB體驗(yàn)和客戶要求的第二代產(chǎn)品。它具有定制設(shè)計(jì)的CPU,與FTDI的第一代USB主機(jī)控制器Vinculum-I相比具有更高的處理能力。憑借提供完整解決方案的FTDI競(jìng)爭(zhēng)優(yōu)勢(shì),Vinculum-II通過(guò)降低設(shè)備成本,增強(qiáng)了Vinculum系列的初始成員Vinculum-I。 Vinculum-II支持全速和低速控制,批量,等時(shí)和中斷模式數(shù)據(jù)傳輸。此外,IC支持三種電源模式,一種是掛起模式,有六種不同的封裝。 FTDI的IDE設(shè)計(jì)工具免費(fèi)提供給想要?jiǎng)?chuàng)建自己的固件的開發(fā)人員。
與FTDI的Vinculum-I IC一樣,預(yù)編譯固件可用于快速簡(jiǎn)便的開發(fā)。 IDE和預(yù)編譯固件可從http://www.ftdichip.com/Products/ICs/VNC2.htm獲得。
Vinculum-II也可以使用開發(fā)平臺(tái)和模塊。 V2-Eval板是一個(gè)完整的評(píng)估模塊,可提供原型設(shè)計(jì)區(qū)域。 V2DIP模塊結(jié)構(gòu)緊湊,易于集成,并包含USB連接器。 Vinco開發(fā)平臺(tái)與Arduino屏蔽兼容。
第二個(gè)FTDI接口是FTDI的Java D2xx驅(qū)動(dòng)程序,支持USB主機(jī)類庫(kù)。此界面要求Android平臺(tái)支持USB主機(jī)并運(yùn)行OS 3.2版。 Java驅(qū)動(dòng)程序支持FTDI的全套USB橋接從芯片,包括R芯片(232R/245R),H系列(USB2.0高速)和X芯片系列。當(dāng)其中一個(gè)USB設(shè)備端口配置為FT232仿真時(shí),也支持Vinculum-II。此庫(kù)不需要特殊的root訪問(wèn)權(quán)限來(lái)加載驅(qū)動(dòng)程序,開發(fā)人員可以輕松地將其調(diào)整到應(yīng)用程序中。
API打包在d2xx.jar中,并與在線提供的演示應(yīng)用程序源代碼一起分發(fā),網(wǎng)址為http://www.ftdichip.com/Android.htm。使用此接口選項(xiàng),Android平臺(tái)負(fù)責(zé)提供USB電源。
使用FTDI的JAVA類驅(qū)動(dòng)程序的主要好處是安裝驅(qū)動(dòng)程序不需要在Android平臺(tái)上使用root權(quán)限。因此,可以在Google Play商店中提供應(yīng)用程序和驅(qū)動(dòng)程序。 Android平臺(tái)不是通過(guò)使用FTDI的Java驅(qū)動(dòng)程序來(lái)要求FTDI的基于USB主機(jī)的芯片(FT311D和Vinculum-II),而是可以與FTDI更廣泛的現(xiàn)有“橋接”芯片集成。
使用FTDI Java D2XX for Android驅(qū)動(dòng)程序,開發(fā)機(jī)器需要Eclipse IDE和最新的Android SDK,包括ADB程序和Eclipse的ADT插件。 Android開發(fā)人員網(wǎng)站上概述了這些工具的安裝和配置。請(qǐng)參閱(http://developer.android.com/sdk/index.html)。 Android設(shè)備還應(yīng)啟用USB調(diào)試以允許使用ADB實(shí)用程序進(jìn)行訪問(wèn)。要在Android平臺(tái)上完成此操作,請(qǐng)導(dǎo)航到設(shè)置>應(yīng)用程序>開發(fā),然后選擇USB調(diào)試選項(xiàng)。
圖7:使用FTDI開發(fā)應(yīng)用程序Java D2xx驅(qū)動(dòng)程序
為支持多功能平板電腦使用方案,Google自3.2版開始在Android中添加了USB Host API。在3.2版之前,Android應(yīng)用程序無(wú)法在沒(méi)有root訪問(wèn)權(quán)限的情況下自然訪問(wèn)連接到系統(tǒng)的USB設(shè)備。 Android USB Host API消除了這一限制,允許使用附加到Android主機(jī)或OTG端口的USB小工具。
FTDI提供適應(yīng)應(yīng)用程序的Java類庫(kù),因此開發(fā)人員可以專注于所需的輸入和輸出數(shù)據(jù)。類庫(kù)的設(shè)計(jì)目標(biāo)是提供對(duì)所有D2XX功能的訪問(wèn),包括EEPROM功能。 D2xx庫(kù)可以輕松地包含在Eclipse中的Android應(yīng)用程序項(xiàng)目中。為此,首先將庫(kù)文件(d2xx.jar)復(fù)制到項(xiàng)目的文件夾中,然后轉(zhuǎn)到“項(xiàng)目” - “屬性”添加它。
圖8:添加Java D2xx庫(kù)步驟1
接下來(lái),從左側(cè)列表中選擇“Java Build Path”。然后,選擇“Libraries”選項(xiàng)卡并單擊“Add JARs ...”按鈕(圖9)。
圖9:添加Java D2xx庫(kù)步驟2
選擇庫(kù)文件“d2xx.jarr”。 D2xxManager類允許訪問(wèn)驅(qū)動(dòng)程序范圍的信息(如VID和PID組合)以匹配設(shè)備信息列表,并提供API以打開返回相應(yīng)FT_Device對(duì)象的目標(biāo)設(shè)備。 FT_Device對(duì)象可以執(zhí)行UART,EEPROM和位模式相關(guān)操作,以控制器件狀態(tài)或讀/寫數(shù)據(jù)。當(dāng)不再需要該設(shè)備時(shí),可以使用close()方法關(guān)閉FT_Device對(duì)象。使用Javadoc完整記錄了D2xx Java庫(kù)。有關(guān)D2xx Android庫(kù)方法,常量和子類的信息,請(qǐng)參見示例項(xiàng)目的/doc目錄中相應(yīng)的Javadoc條目。
圖10:添加Java D2xx庫(kù)步驟3
FTDI的Java D2xx驅(qū)動(dòng)程序可與FTDI的USB轉(zhuǎn)串口橋接芯片一起使用,包括X芯片系列。 X芯片器件具有低功耗,低引腳數(shù)和功能集,可實(shí)現(xiàn)從USB端口橋接到UART,I 2 C,增強(qiáng)型SPI或FIFO接口,易于設(shè)計(jì)和實(shí)現(xiàn)。
主要功能包括:
電池充電器檢測(cè)可實(shí)現(xiàn)更高電流和更快速充電
廣泛的時(shí)鐘功能,包括內(nèi)部時(shí)鐘生成和外部時(shí)鐘輸出
內(nèi)部3.3 V穩(wěn)壓器
集成晶體和多時(shí)間可編程(MTP)存儲(chǔ)器,以節(jié)省電路板空間并最大限度地提高靈活性
FTDI Java驅(qū)動(dòng)程序還可以與FTDI的傳統(tǒng)芯片一起使用,例如FTDI的FT2232D和R芯片系列。此外,還可以使用FTDI的USB Hi-Speed單通道,雙通道和四通道芯片。這將為各種行業(yè)標(biāo)準(zhǔn)或并行接口提供USB。列出的所有IC都附帶可用的開發(fā)模塊。
除支持FTDI的IC和模塊外,F(xiàn)TDI的Java D2xx驅(qū)動(dòng)程序還可以與任何FTDI的Instant USB全速到串行電纜連接。這些包括USB轉(zhuǎn)RS232,RS422,RS485和TTL電平UART電纜。所有這些都可用于大量配置,包括電源輸出,電線長(zhǎng)度和串行端接。
FTDI的高速USB轉(zhuǎn)數(shù)字電纜也可用于與Java D2xx驅(qū)動(dòng)程序一起使用。
由于Vinculum-II有兩個(gè)可以為主機(jī)或設(shè)備獨(dú)立配置的USB端口,因此可以將兩個(gè)接口選項(xiàng)1和2通過(guò)單個(gè)芯片。 USB主機(jī)端口提供AOA支持。 Java D2xx可通過(guò)USB設(shè)備端口上的FT232仿真獲得。此解決方案現(xiàn)在支持所有Android設(shè)備,無(wú)論USB端口類型或電源配置如何。 USB設(shè)備端口上的接口可以支持傳統(tǒng)的PC環(huán)境,進(jìn)一步增強(qiáng)了外設(shè)的實(shí)用性。
第三個(gè)集成選項(xiàng)是使用FTDI的傳統(tǒng)驅(qū)動(dòng)程序。 FTDI的VCP驅(qū)動(dòng)程序提供虛擬COM端口,標(biāo)準(zhǔn)D2xx驅(qū)動(dòng)程序通過(guò)DLL提供對(duì)USB設(shè)備的直接訪問(wèn)。這兩個(gè)驅(qū)動(dòng)程序是互斥的,不能同時(shí)使用。與Java D2xx驅(qū)動(dòng)程序選項(xiàng)一樣,Android平臺(tái)必須具有USB主機(jī),提供USB電源,并將與FTDI現(xiàn)有的橋接芯片,模塊和電纜配合使用。與Java D2xx驅(qū)動(dòng)程序選項(xiàng)不同,Android平臺(tái)必須“root”才能安裝VCP和傳統(tǒng)D2xx驅(qū)動(dòng)程序。雖然適用于所有Android版本,但僅在3.2版之前的Android平臺(tái)操作系統(tǒng)中建議使用舊版驅(qū)動(dòng)程序。當(dāng)前的Android平臺(tái)操作系統(tǒng)版本建議使用接口選項(xiàng)1,選項(xiàng)2,AOA和Java驅(qū)動(dòng)程序。
-
智能手機(jī)
+關(guān)注
關(guān)注
66文章
18419瀏覽量
179729 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7438瀏覽量
163529 -
Linux
+關(guān)注
關(guān)注
87文章
11213瀏覽量
208736
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論