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

Zytronic 簡化了 Android? 的觸摸用戶界面設計
FTDI Android界面解決方案
Linux操作系統的Android手機的即時通信系統客戶端的解決方案介紹

Linux上運行Android應用程序的方案

評論