网站客服:zx81024163 |

一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

2023-11-12 03:01:46发布    浏览1212次    信息编号:83051

友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。

一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

目录

手机与外部设备通信只能使用USB和音频接口,iOS手机不支持OTG功能。 因此,本文主要介绍手机与外围设备通过USB接口进行通信。 音频接口部分请参考文档。

0 背景

——随着移动互联网技术的快速发展,iOS和iOS两大主流智能移动设备已经占据了绝对的市场份额。 除了基本的通话、娱乐功能外,这些移动设备已成为新时代重要的信息终端设备节点。

– 通用串行总线(USB)现已成为最标准的接口,用于为系统提供可靠且低成本的数字连接。 现在它的用途已经超越了计算机,广泛应用于工业、医疗、消费电子、通信网络等领域。

– RS232接口长期以来广泛应用于各个应用领域。 随着市场上手机、平板电脑的大量上市,系统下通过USB转RS232接口连接外设的应用需求也开始变得强烈。

目前市面上手机USB接口与外设通信的例子:

图1 手机U盘

图2 手机USB摄像头

1.手机USB接口通讯特点 1.1使用方便

即插即用、热插拔,并具有自动配置功能。 用户只需将外围设备插入手机即可自动识别和配置 USB 设备。

1.2 通用性强

目前,手机和平板电脑均具有USB接口,连接灵活,易于扩展。

1.3 速度快 1.4 可通过总线供电

USB2.0总线提供最大电压5v、电流500mA,USB3.0可以达到1A。 大多数 USB 外设不需要单独的电源系统。

由于USB的诸多特性,它已经取代了PC外设中的大部分传统接口。 不过,在智能仪器仪表中,RS-232C接口也得到广泛应用。 随着智能仪表控制系统变得越来越复杂,数据采集量不断增加,迫切需要找到一种更快、更安全、更方便的通信方式。 USB接口的特性正好满足了这种应用需求。 USB产品进入智能仪器仪表、工业控制领域将是必然的趋势。

2、手机USB接口的通信原理

USB通信协议非常复杂,这里不再赘述。 我只简单介绍一下基础知识。

2.1 常见手机USB接口

图3 常见USB接口图

如上图,包括常见的Type-A、Type-B、Micro等接口

Micro USB接口是USB 2.0标准的便携式版本,支持OTG。 目前,除了苹果产品外,高端市场上的移动设备几乎都采用Micro-USB接口。

图4 Micro USB接口图

图5 USB各版本传输速率和输出电流对比

2.2 USB通信流程

图5 USB通信流程

一般的USB主机和设备遵循主从通信的原则,每一次数据传输都是由主机发起的。 主机如果要输出数据,首先发送握手包通知设备。 然后发送数据,设备收到数据后发送确认包。 如果主机要输入数据,也会先发送握手包通知设备。 然后设备将准备好的数据发送到主机。 主机向设备发送另一个确认包。

2.3 系统架构

从物理结构上看,USB系统是星型结构。 它包括三类硬件设备:USB主机(USB HOST)、USB设备(USB)和USB集线器(USB HUB)。

USB总线上的物理连接是分层星形拓扑。 每个星形拓扑的中心是HUB集线器。 主机与HUB之间、HUB与HUB之间、HUB与设备之间都存在点对点连接。 。

图6 USB整体架构

USB HOST 管理 USB 系统,每毫秒生成一帧数据,发送配置请求以配置 USB 设备,管理和恢复总线上的错误。

USB HUB用于设备扩展连接,所有USB设备都连接到USB HUB端口。

USB接收USB总线上的所有数据包,并通过数据包的地址字段来判断该数据包是否是发送给自己的:如果地址不匹配,则简单地丢弃该数据包;如果地址不匹配,则直接丢弃该数据包。 如果地址匹配,则响应USB HOST数据包并与USB HOST进行数据传输。

从逻辑结构上看,每个USB逻辑设备都直接与USB HOST传输数据。 与使用硬件实现握手的传统接口不同,USB接口采用“软握手”方式。

USB软握手机制是通过三层驱动程序实现的。 设备驱动程序在此过程中起着关键作用,它在主机和设备之间建立至少一条管道。 管道有两种类型:流管道和消息管道。 最重要的消息管道之一是“默认控制管道”。 设备一开机,该管道就存在。 它提供设备的配置和状态等信息。 主机和设备之间的通信是通过消息管道来实现的。

2.4 软件层面

图7 USB软件结构

USB协议栈驱动程序的主要功能是将设备与相应的设备驱动程序连接起来。 因为USB支持很多设备,而每个具体的设备都有自己对应的设备驱动程序。 对于特定的设备,使用哪个驱动进行管理必须由协议栈驱动通过读取设备描述符来选择。 选择驱动程序后,协议栈驱动程序还为USB设备分配一个地址。

管道建​​立后,USB接口驱动程序负责数据传输控制。 在这里,主人拥有绝对的优势。 当设备发生事件时,通过消息管道报告给主机,主机等待机会向设备发送命令,打开流管道,发送或接收数据包。 数据在主机和设备之间以数据包的形式传输,这显然与数据在网络上传输的方式相同,是一种异步数据传输方式。

3、手机USB接口与外围设备通信解决方案 3.1 USB(手机) USB(外围设备)

在该解决方案中,手机和外围设备通过USB端口进行通信。

图8 USB-USB方案结构图

考虑到外围主控模块是单片机,所以所选的单片机必须具备驱动USB的能力。 它们之间的通信基于标准USB通信协议。

3.1.1 USB Host 简介

USB Host,中文意思是USB主模式,是相对于USB(USB辅模式)来说的。 如果工作在USB Host模式,则连接到它的USB设备将被视为主机。 例如,插上鼠标或键盘,就可以使用键盘和鼠标来操作系统。

USB模式是指设备像USB键盘、鼠标或者U盘一样插入电脑主机使用。 这两种模式仅在 API level-12 以上支持,即 .1 及更高版本支持这两种模式。 一种模式。

3.2 USB(手机) UART(外设)

即在手机与外围设备之间使用USB-UART适配器来实现手机与外围设备之间的串行通信。

USB-UART转换器是实现USB与RS-232/RS-485/RS-422等串口设备相互通信的协议转换设备(USB协议-串口通信协议)。 通信主机(USB)与RS-232/RS-485/RS-422串口设备之间可实现双向数据传输。

图9 USB-UART方案结构图

该方案只需要外围微控制器进行串口编程,然后使用 USB Host进行编程。 串行端口编程通常是微控制器开发所熟悉的。 这里主要介绍USB Host的开发。

硬件要求:手机必须支持OTG功能。 OTG(On The Go)是一种新型USB,无需计算机即可在设备之间传输数据和图像。 可以给手机添加传感器,同时将运行程序加载到开发板中。 通过OTG接口与手机连接,让手机拥有更强大的功能。

3.2.1 手机通过USB接口进行串口通信

手机通过USB接口实现串口通信,主要是借助外接的USB转串口芯片。 这里的外设是UART串口设备,转换芯片已经转换为USB,有助于上层应用屏蔽串口。 但串口参数仍然需要上层应用程序进行配置。

步骤一般包括:发现设备->连接设备->双向传输数据->关闭设备。

调用原理基于软件架构。 该SDK并没有实现层内封装串口通信的类库,但它是基于Linux 2.6的,所以我们可以像在Linux系统上一样使用串口。 由于该层没有封装串口通信的类库,所以我们需要使用NDK来打开、读写串口,然后提供接口供Java本地调用。

4、现有方案: 4.1 FTDI方案(免驱动)

图10 FTDI整体解决方案

4.1.1 串口设备主机(Host) 从机(Slave)

主机将为供电,无需外部电源。 该解决方案基于 开放的名为 Open Mode 的协议。 该解决方案支持 3.1及以上版本的手机和平板电脑。 但如果不是谷歌原生系统,可能不支持。 一般情况下,一些国产设备会出现问题。 山寨品牌。

/com...usb..jar/..usb..xml

如果缺少以上其中一项, 设备将不支持 串口。

4.1.2 串口设备从机(Slave) 主机(Host)

随着手持设备的普及,平板电脑、手机和消费电子设备配备可连接USB的主机支持变得非常重要。 该解决方案中,芯片专为主机设计,支持0.1或以上版本,采用32引脚QFN或LQFP封装。

设备无需加载平台的任何驱动,但使用该方案的手机必须支持OTG功能,并且必须有..usb.host.xml

另外,相应的解决方案还需要配套相应的软件。

例如,解决方案 4.1.1 需要 AOA apk。

解决方案 4.1.2 需要 apk。 这两个上的串口调试助手是免费开发的软件。

4.2 /CH34X系列解决方案:

基本原理与FTDI相同,但芯片不同。

手机App由/Ch34x厂商提供,带有源码和SDK:

图11 总体方案

HXD芯片的系统要求(平板或手机)的OS版本需要为3.2或以上。 其优点如下:

• 不需要Root权限即可使用

• 无需重新编译,免驱动解决方案

• 使用计算机上的USB端口供电,或使用外部设备自带的电源

##4.3 开源项目:usb--for-

:(LGPL)

提供其他设备USB串口硬件驱动代码,基于Host且版本必须在3.1以上版本。可供参考

##4.4 其他(待补充,但原则基于3.1和3.2)

4.3 开源项目:usb--for-

:

(LGPL)

提供其他设备USB串口硬件驱动代码,基于Host且版本必须在3.1以上版本。可供参考

5、应用的USB-UART芯片对比与选择

• 不需要OTG 支持,兼容性好,需要外接电源,价格较贵。

• 需要OTG 支持,不需要外接电源,有兼容性问题,价格便宜。

• 所使用的模块还有一个额外的好处,即支持 和平台,可在手机、平板电脑以及普通台式机和笔记本电脑上使用。

6. 案例分析(待完善和验证) 7. 开发时需要考虑的几点

提醒:请联系我时一定说明是从星空网上看到的!