一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

一篇讀懂:Android手機(jī)如何通過(guò)USB接口與外設(shè)通信(附原理分析及方案選型)

 新用戶0118F7lQ 2021-11-25

目錄


針對(duì)手機(jī)與外部設(shè)備通信,僅有USB與音頻接口可以使用,而由于iOS手機(jī)不支持OTG功能。因此,本文主要對(duì)Android手機(jī)通過(guò)USB接口與外設(shè)通信進(jìn)行介紹。音頻接口部分可參考文檔http://blog.csdn.net/howiexue/article/details/79145048 。


0背景

– 隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,兩大主流智能移動(dòng)設(shè)備iOS 和Android占據(jù)了絕對(duì)的市場(chǎng),除了基本的通話、娛樂(lè)功能之外,這些移動(dòng)設(shè)備已經(jīng)成為新時(shí)代中重要的信息終端設(shè)備節(jié)點(diǎn)。
– 通用串行總線(USB)目前已經(jīng)成為了最標(biāo)準(zhǔn)的接口,用于提供系統(tǒng)一個(gè)可靠且低成本的數(shù)字連接,目前在使用方面已經(jīng)超越了電腦的范疇,并已廣泛應(yīng)用在工業(yè)、醫(yī)療、消費(fèi)電子、通信網(wǎng)絡(luò)等等。
– RS232接口長(zhǎng)期廣泛存在于在各種應(yīng)用領(lǐng)域,隨著安卓手機(jī)平板的大量上市,安卓系統(tǒng)下通過(guò)USB轉(zhuǎn)RS232接口接入外設(shè)的應(yīng)用需求也開(kāi)始變得強(qiáng)烈起來(lái)。

市面上現(xiàn)有的手機(jī)USB接口與外設(shè)通信實(shí)例:
在這里插入圖片描述

圖1 手機(jī)U盤(pán)
在這里插入圖片描述

圖2 手機(jī)USB攝像頭


1.手機(jī)USB接口通信特點(diǎn)

1.1 使用方便

即插即用,可熱插拔,具有自動(dòng)配置能力,用戶只要簡(jiǎn)單地將外設(shè)插人到手機(jī)就能自動(dòng)識(shí)別和配置uSB設(shè)備。

1.2 通用性強(qiáng)

目前安卓手機(jī)、平板都具備USB接口,連 接靈活,易擴(kuò)展。

1.3 速度快

  • USB2.0 :理論速度是每秒480Mbps(約每秒60MB)

  • USB3.0 :理論速度能夠達(dá)到每秒5Gbps(約為每秒625MB)

1.4 可采用總線供電

USB2.0總線提供最大達(dá)5v電壓、500mA電流,USB3.0 可達(dá)1A。大部分USB外設(shè)無(wú)需單獨(dú)的供電系統(tǒng)。

由于 USB 的諸多特點(diǎn),在PC的外圍設(shè)備中,取代了大部分傳統(tǒng)的接口。但在智能儀器儀表中,還大量地使用RS一232C接口。隨著智能儀器儀表控制系統(tǒng)的日益復(fù)雜,數(shù)據(jù)采集量的增大,迫切需要尋求一種更高速、安全、方便的通信形式。USB接口的特點(diǎn),恰好滿足這種應(yīng)用要求,USB產(chǎn)品進(jìn)人智能儀器儀表和工業(yè)控制領(lǐng)域?qū)⑹潜厝坏摹?/p>


2. 手機(jī)USB接口通信原理

USB通訊協(xié)議十分復(fù)雜,這里不贅述,只簡(jiǎn)要介紹基本知識(shí)。

2.1 常見(jiàn)手機(jī)USB接口

在這里插入圖片描述

圖3 常用USB接口圖
如上圖,包括常見(jiàn)的Standard Type-A、Type-B、Micro等接口
其中Micro USB接口是USB 2.0標(biāo)準(zhǔn)的一個(gè)便攜版本,支持OTG,目前除蘋(píng)果公司產(chǎn)品之外,先進(jìn)市面上幾乎所有的移動(dòng)設(shè)備都采用了Micro-USB接口。

圖4 Micro USB接口圖
這里寫(xiě)圖片描述
圖5 各USB 版本傳輸速率與輸出電流對(duì)比

2.2 USB通信過(guò)程

在這里插入圖片描述

圖5 USB通信過(guò)程
一般的USB主機(jī)和設(shè)備之間遵循主從通信的原理,每一次的數(shù)據(jù)傳輸都是又主機(jī)發(fā)起。如果主機(jī)要輸出數(shù)據(jù),則先發(fā)一個(gè)握手包,通知設(shè)備。然后發(fā)送數(shù)據(jù),設(shè)備接收到數(shù)據(jù)后,再發(fā)送一個(gè)確認(rèn)包。如果主機(jī)要輸入數(shù)據(jù),也是先發(fā)一個(gè)握手包,通知設(shè)備。設(shè)備然后將準(zhǔn)備好的數(shù)據(jù)發(fā)送給主機(jī)。主機(jī)再給設(shè)備一個(gè)確認(rèn)包。

2.3 體系架構(gòu)

從物理結(jié)構(gòu)上,USB系統(tǒng)是一個(gè)星形結(jié)構(gòu)。其包含三類(lèi)硬件設(shè)備: USB主機(jī)(USB HOST)、 USB設(shè)備(USB DEVICE)和USB集線器(USB HUB)。
USB總線上的物理連接是一個(gè)分層的星形拓?fù)洌幱诿總€(gè)星形拓?fù)渲醒氲氖荋UB集線器,在主機(jī)與HUB之間,HUB與HUB之間,HUB與設(shè)備之間都是點(diǎn)對(duì)點(diǎn)的連接。

在這里插入圖片描述

圖6 USB整體架構(gòu)

USB HOST對(duì)USB系統(tǒng)進(jìn)行管理、每毫秒產(chǎn)生一幀數(shù)據(jù)、發(fā)送配置請(qǐng)求對(duì)USB設(shè)備進(jìn)行配置、管理和恢復(fù)總線上的錯(cuò)誤。
USB HUB用于設(shè)備擴(kuò)展連接,所有USB DEVICE都連接在USB HUB的端口上。
USB DEVICE接收USB總線上的所有數(shù)據(jù)包,通過(guò)數(shù)據(jù)包的地址域來(lái)判斷是不是發(fā)給自己的數(shù)據(jù)包:若地址不符,則簡(jiǎn)單地丟棄該數(shù)據(jù)包;若地址相符,則通過(guò)響應(yīng)USB HOST的數(shù)據(jù)包與USB HOST進(jìn)行數(shù)據(jù)傳輸。

從邏輯結(jié)構(gòu)上看,每個(gè)USB邏輯設(shè)備都直接與USB HOST進(jìn)行數(shù)據(jù)傳輸。與傳統(tǒng)接口以硬件手段實(shí)現(xiàn)握手的方法不同,USB接口使用“軟握手”方法。

USB的軟握手機(jī)制是透過(guò)三個(gè)層次的驅(qū)動(dòng)程序?qū)崿F(xiàn)的,在這中間起到關(guān)鍵作用的是設(shè)備驅(qū)動(dòng)程序,該程序在主機(jī)與設(shè)備之間建立起至少一個(gè)管道。管道有兩種類(lèi)型:流管道和消息管道。其中有一個(gè)最重要的消息管道是“缺省控制管道”,這個(gè)管道在設(shè)備一加電的時(shí)候就存在了,它提供設(shè)備的配置和狀態(tài)等信息。主機(jī)與設(shè)備之間的聯(lián)絡(luò)就是通過(guò)消息管道實(shí)現(xiàn)的。

2.4軟件層次

這里寫(xiě)圖片描述
圖7 USB軟件結(jié)構(gòu)

USB協(xié)議棧驅(qū)動(dòng)程序的主要作用是將設(shè)備與相應(yīng)的設(shè)備驅(qū)動(dòng)程序連接起來(lái)。因?yàn)閁SB支持的設(shè)備很多,而每個(gè)具體的設(shè)備都有自己對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)程序。對(duì)于某一具體設(shè)備來(lái)說(shuō),使用哪個(gè)驅(qū)動(dòng)來(lái)管理,就要由協(xié)議棧驅(qū)動(dòng)程序通過(guò)讀取設(shè)備描述符進(jìn)行挑選。選擇好驅(qū)動(dòng)程序之后,協(xié)議棧驅(qū)動(dòng)程序還要給USB設(shè)備分配地址。

管道建立起來(lái)之后,數(shù)據(jù)的傳輸控制則由USB接口驅(qū)動(dòng)程序負(fù)責(zé)完成了。在這里,主機(jī)占有絕對(duì)主導(dǎo)權(quán)。設(shè)備發(fā)生事件時(shí)通過(guò)消息管道報(bào)告給主機(jī),主機(jī)伺機(jī)向設(shè)備發(fā)送命令,開(kāi)通流管道,發(fā)送或接收數(shù)據(jù)包。主機(jī)與設(shè)備之間以數(shù)據(jù)數(shù)據(jù)包的形式進(jìn)行傳送,顯然這與網(wǎng)絡(luò)上數(shù)據(jù)傳輸?shù)姆绞较嗤?,是一種異步數(shù)據(jù)傳輸模式。


3. 手機(jī)USB接口與外設(shè)通信方案

3.1 USB(手機(jī))<–>USB(外設(shè))

該方案手機(jī)與外設(shè)均通過(guò)USB口進(jìn)行通訊。
在這里插入圖片描述

圖8 USB-USB方案結(jié)構(gòu)圖
考慮外設(shè)主控模塊為單片機(jī),因此選用的單片機(jī)必須具備驅(qū)動(dòng)USB的能力。之間通訊都是走的標(biāo)準(zhǔn)USB通訊協(xié)議。

3.1.1 USB Host簡(jiǎn)述

USB Host,中文意思是USB主模式,是相對(duì)于USB Accessory(USB副模式)來(lái)說(shuō)的。如果Android工作在USB Host模式下,則連接到Android上的USB設(shè)備把Android類(lèi)似的看作是一臺(tái)主機(jī),例如將鼠標(biāo)、鍵盤(pán)插入則可以使用鍵盤(pán)、鼠標(biāo)來(lái)操作Android系統(tǒng)。

而USB Accessory模式表示將Android設(shè)備類(lèi)似當(dāng)作一個(gè)USB的鍵盤(pán)、鼠標(biāo)、U盤(pán)插入到電腦主機(jī)上一樣使用,這兩種模式在Android API level-12以上才支持,即Android3.1及更高的版本支持這兩種模式。

3.2 USB(手機(jī))<–>UART(外設(shè))

即手機(jī)與外設(shè)之間利用USB-UART轉(zhuǎn)接器,實(shí)現(xiàn)手機(jī)與外設(shè)的串口通信。
USB-UART轉(zhuǎn)換器是實(shí)現(xiàn)USB與RS-232/RS-485/RS-422等串口設(shè)備相互通訊的一種協(xié)議轉(zhuǎn)換裝置(USB協(xié)議-串行通信協(xié)議)。在通信主機(jī)(USB)和RS-232/RS-485/RS-422串口設(shè)備之間可以實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸。

在這里插入圖片描述

圖9 USB-UART方案結(jié)構(gòu)圖
該方案只需外設(shè)單片機(jī)進(jìn)行串口編程,然后利用安卓USB Host編程。串口編程一般單片機(jī)開(kāi)發(fā)都已熟悉,這里主要介紹一下USB Host開(kāi)發(fā)。

需要硬件要求:手機(jī)必須支持OTG功能。OTG(On The Go)是一種新型的USB,能夠在沒(méi)有電腦的情行下,實(shí)現(xiàn)設(shè)備間的數(shù)據(jù)及圖像的傳送,在手機(jī)中加入傳感器,同時(shí)將運(yùn)行程序載入開(kāi)發(fā)板中,通過(guò)OTG接口與手機(jī)相接,能夠讓手機(jī)擁有更強(qiáng)大的功能。

3.2.1 Android手機(jī)通過(guò)USB接口進(jìn)行串口通信

Android手機(jī)通過(guò)USB接口實(shí)現(xiàn)串口通信,主要借助外部USB轉(zhuǎn)串口芯片實(shí)現(xiàn)。在這里外設(shè)是一個(gè)UART串口設(shè)備,轉(zhuǎn)換芯片已經(jīng)轉(zhuǎn)換成USB,幫助安卓上層應(yīng)用屏蔽了串口。但串口參數(shù)還是需要上層應(yīng)用配置。

其步驟一般包括:發(fā)現(xiàn)設(shè)備->連接設(shè)備->數(shù)據(jù)雙向傳輸->關(guān)閉設(shè)備。

其中調(diào)用原理是基于安卓軟件架構(gòu),Android SDK并沒(méi)有在Framework層實(shí)現(xiàn)封裝關(guān)于串口通信的類(lèi)庫(kù),但是Android是基于Linux kernel 2.6上的,所以我們可以像在Linux系統(tǒng)上一樣來(lái)使用串口。因?yàn)镕ramework層中并沒(méi)有封裝關(guān)于串口通信的類(lèi)庫(kù),所以我們需要通過(guò)Android NDK來(lái)實(shí)現(xiàn)打開(kāi)、讀寫(xiě)串口,然后提供接口供Java本地調(diào)用。

4.現(xiàn)有解決方案:

4.1 FTDI方案(免驅(qū)動(dòng))

這里寫(xiě)圖片描述
圖10 FTDI整體方案

4.1.1串口設(shè)備 <–>FT312X主(Host)<–> 安卓從(Slave)

Host 會(huì)向安卓供電,無(wú)需外接電源。這個(gè)方案是利用了谷歌(Google)開(kāi)放的一個(gè)叫Android Open Accessory Mode 的協(xié)議而成的,此方案支持安卓3.1以的手機(jī)平板,但如果不是原生谷歌的系統(tǒng)有可能是不支持的,一般出現(xiàn)問(wèn)題是國(guó)內(nèi)一些山寨品牌。

  1. /com.android.future.usb.accessory.jar

  2. /android.hardware.usb.accessory.xml

如缺少以上其中之一都會(huì)導(dǎo)致安卓設(shè)備不支持安卓串口。

4.1.2串口設(shè)備 <–>FT231X從(Slave)<–> 安卓主(Host)

隨著手持式設(shè)備的普及,平板電腦、手機(jī)和消費(fèi)電子設(shè)備需要搭配可以與USB相連的主端支持變得非常重要。該方案中,F(xiàn)T311D芯片是專為安卓主控端設(shè)計(jì),支持Android3.1以上版本,有32腳的QFN或LQFP封裝可選。

設(shè)備不需要在安卓平臺(tái)加載任何驅(qū)動(dòng),但要使用該方案Android手機(jī)要支持OTG 功能,并且要具備android.hardware.usb.host.xml

另外,相應(yīng)的方案需要配合相應(yīng)軟件,
如方案4.1.1需要配合Passion AOA HyperTerminal apk。
方案4.1.2需要配合Android HyperTerminal apk。這兩個(gè)安卓上的串口調(diào)試小助手, 是Passion technologies Limited 開(kāi)發(fā)的免費(fèi)軟件。

4.2 PL2303/CH34X系列方案:

基本原理同F(xiàn)TDI相同,只不過(guò)芯片不同。
手機(jī)端app是PL2303/Ch34x的生產(chǎn)商公司提供的,有源代碼與SDK:
http://www./US/ShowProduct.aspx?p_id=230&pcid=41
這里寫(xiě)圖片描述
圖11 PL2303整體方案

PL2303 HXD芯片對(duì)Android系統(tǒng)要求Android(平板或手機(jī))的OS版本需要在3.2以上。其優(yōu)點(diǎn)如下:

· 不需要Root權(quán)限即可使用
· 不需要重新編譯Kernel,免驅(qū)動(dòng)方案
· 利用Android上的USB port供電,或者使用USBHub 以及外設(shè)自備電源
##4.3 開(kāi)源項(xiàng)目:usb-serial-for-android
Github: https://github.com/mik3y/usb-serial-for-android (LGPL licence)
提供了Arduino等其他設(shè)備USB串口的安卓端硬件驅(qū)動(dòng)代碼,基于Android Host并且Android版本需在3.1版本之上 。 可供參考
##4.4 其他(待補(bǔ)充,但原理都是基于3.1、3.2)

4.3 開(kāi)源項(xiàng)目:usb-serial-for-android

Github: https://github.com/mik3y/usb-serial-for-android
(LGPL licence)
提供了Arduino等其他設(shè)備USB串口的安卓端硬件驅(qū)動(dòng)代碼,基于Android Host并且Android版本需在3.1版本之上 。 可供參考


5.針對(duì)安卓應(yīng)用USB-UART芯片比較與選型

  • 1、FT311/312芯片不需要安卓手機(jī)和平板支持OTG或USB HOST功能,就能完成USB轉(zhuǎn)RS232的轉(zhuǎn)換功能,兼容性好,必須外接電源,使得在某些應(yīng)用場(chǎng)景非常不方便。但FT311/312依然是目前已知好用的USB HOST 芯片。

  • 2、FT231,PL2303不需要外接電源,但需要安卓手機(jī)和平板支持OTG或USB HOST等限制。由于手機(jī)和平板上的安卓系統(tǒng)的多樣性,沒(méi)有確定的標(biāo)準(zhǔn)知道某款手機(jī)平板是否支持OTG和USB HOST,且即使手機(jī)平板支持OTG功能的情況下,非原生安卓系統(tǒng)仍可能不能完成usb轉(zhuǎn)RS232的功能。所有其兼容性要差一些。

  • 3、在工業(yè)應(yīng)用環(huán)境,可考慮使用工業(yè)級(jí)模塊FSTU2232FT。
    因此,針對(duì)民用設(shè)備,綜合考慮,較優(yōu)越的方案為:使用FT311D和PL2303HXD做轉(zhuǎn)換芯片,優(yōu)點(diǎn)如下:

· FT311D不需要OTG支持,兼容性好,需要外接電源,價(jià)格較貴。
· PL2303HXD需要OTG支持,不需要外接電源,有兼容性問(wèn)題,價(jià)格要便宜些。
· 用PL2303的模塊還有一附加好處是同時(shí)支持安卓和WINDOWS平臺(tái),即可用于手機(jī)平板,也同時(shí)可用于普通的臺(tái)式和筆記本電腦。


6.案例分析(待完善驗(yàn)證)

  • 1、USB轉(zhuǎn)串口驅(qū)動(dòng)
    drivers/usb/serial/pl2303.c
    drivers/usb/serial/pl2303.h
    驅(qū)動(dòng)加載成功則當(dāng)插入外設(shè)時(shí)會(huì)生成/dev/ttyUSB*設(shè)備節(jié)點(diǎn),

  • 2、上層App應(yīng)用,即讀寫(xiě)串口,波特率設(shè)置等
    源碼下載http://www./US/ShowProduct.aspx?p_id=230&pcid=41
    示意圖:
    在這里插入圖片描述
    在這里插入圖片描述

7. 開(kāi)發(fā)需要考慮的幾點(diǎn)

  • 1、OTG支持問(wèn)題:近年新出的絕大部分手機(jī)已支持OTG,一般Android系統(tǒng)版本在4.0以上也都會(huì)支持,但手機(jī)品牌、型號(hào)太多,一些低端手機(jī)和國(guó)產(chǎn)山寨機(jī)可能不支持該功能。

  • 2、不同手機(jī)廠商可能對(duì)USB協(xié)議棧進(jìn)行了裁剪,對(duì)開(kāi)發(fā)人員會(huì)有限制。

  • 3、USB供電問(wèn)題、設(shè)備兼容性等問(wèn)題

  • 4、如使用USB-UART方案,要考慮轉(zhuǎn)換芯片的統(tǒng)一、效率等問(wèn)題,都需驗(yàn)證

  • 5、目前在安卓系統(tǒng)下的串口終端程序,大多是由IC廠家免費(fèi)提供,功能偏簡(jiǎn)單,不能發(fā)送中文,不能保存通信內(nèi)容到文件。

8. 參考資料

[1] 趙春亭, 左小五. 基于Android系統(tǒng)的USB轉(zhuǎn)串口的研究[J]. 工業(yè)控制計(jì)算機(jī), 2014, 27(1):83-84.
參考鏈接:
http://blog.csdn.net/ever_gz/article/details/49669729
https://github.com/mik3y/usb-serial-for-android
http://blog.csdn.net/lindonghai/article/details/50717218
http://download.csdn.net/detail/u011130391/6638743
http://gqdy365./blog/2188906
http://blog.csdn.net/tangcheng_ok/article/details/7021470
http://www.jb51.net/article/110827.htm
http://www./US/ShowProduct.aspx?p_id=230&pcid=41

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多

    樱井知香黑人一区二区| 丝袜美女诱惑在线观看| 国产精品欧美日韩中文字幕| 丰满熟女少妇一区二区三区| 国产毛片av一区二区三区小说| 福利新区一区二区人口| 国产白丝粉嫩av在线免费观看| 亚洲中文字幕高清视频在线观看| 尹人大香蕉一级片免费看| 国产成人亚洲综合色就色| 国产av大片一区二区三区| 国产成人精品一区在线观看 | 亚洲最大福利在线观看| 日韩中文字幕欧美亚洲| 国产又色又爽又黄的精品视频| 色哟哟在线免费一区二区三区| 国产大屁股喷水在线观看视频| 五月天丁香婷婷狠狠爱| 尤物久久91欧美人禽亚洲| 欧美午夜一区二区福利视频| 欧美一区日韩一区日韩一区| 97人妻精品一区二区三区免| 麻豆欧美精品国产综合久久| 亚洲女同一区二区另类| 免费大片黄在线观看日本| 97人妻精品一区二区三区免| 色婷婷国产精品视频一区二区保健| 中国一区二区三区不卡| 亚洲香艳网久久五月婷婷| 日韩一区二区三区在线日| 亚洲中文字幕亲近伦片| 亚洲男人的天堂就去爱| 伊人欧美一区二区三区| 精品久久久一区二区三| 国产精品亚洲欧美一区麻豆| 少妇淫真视频一区二区| 人妻乱近亲奸中文字幕| 日本精品最新字幕视频播放| 日韩特级黄色大片在线观看| 欧美激情一区=区三区| 国产av熟女一区二区三区四区|