usb_host
USB做Host的OTG原理
USB做Host的OTG原理在介绍USBOTG的基础上,着重介绍Maxim公司的MAX3301E型USBOTG电路的特点、内部结构和工作原理。
1 引言随着USB2.0版本的发布,USB越来越流行,已经成为一种标准接口。
现在,USB 支持三种传输速率:低速(1.5Mb/s)、全速(12Mb/s)和高速(480Mb/s),四种传输类型:块传输、同步传输、中断传输和控制传输。
USB应用灵活方便,能满足多种外设的需要。
随着个人便携式电子产品的增长和嵌入式技术的飞速发展,USB主机已不再局限于单纯的PC,可以是含有USB主控器的任何设备,如PDA、MP3播放器等。
在USB2.O规范中也增加了USB嵌入式设备的标准——On-The-Go(OTG),它使外设可以在主机和设备之间相互切换,即当其连接至PC时,它是1个USB设备,而与其他USB设备相连接时,它便作为USB主机。
2 USB OTG2.1 USB OTG简介DSBOTG是USB2.O版本的补充,并不是独立的标准,它保留了USB2.0的所有特点。
OTG使2个USB外设在脱离PC的情况下可以直接通信。
为了实现这种功能,在OTG中有一个新的概念——双功能设备(DRD:Dual-RoleDevice)。
1个DRD能满足下列特征:●具有一定的USB主机能力和提供1个外设列表;●作为外设时能够实现全速操作(或高速操作);●作为主控机时能支持全速操作(低速或高速)●支持主机协商协议(HNP)和会话请求协议(SRP);●仅有1个微型AB连接端口;●能够向电源总线提供不小于8mA的电流。
要实现主机功能,主机必须存储大量的设备驱动程序,并且向电源总线提供一定的电流。
对于嵌入式USB主机来说,提供大量的设备驱动程序是不现实的也没有必要,1个嵌入式USB主机只需支持部分特定设备,这些设备就是它的外设列表。
2.2 主机协商协议(HNP)在USB标准中,主机采用A型接口,称为A类设备(A-Device);外设采用B型接口,称为B类设备(B-Device)。
沁恒USB芯片CH37系列汇总
沁恒USB芯片CH37系列汇总1、CH370(SSOP20) USB-HOST主机接口芯片简介:1)、支持1.5Mbps低速和12Mbps全速USB通讯,兼容USB2.0.2)、支持常用的低速和全速设备的控制传输、批量传输及中断传输。
3)、自动检测USB设备的连接和断开,提供设备连接和断开的中断通知。
4)、提供5MB速度的8位被动并行接口和3MB/24MHz速度的SPI串行接口(3线或4线)。
5)、工作电压3.3V和5V。
2、CH372(SSOP20) USB-DEVICE/SLAVE设备接口芯片简介:1)、全速USB设备(DEVICE)接口,兼容USB2.0,支持控制传输、批量传输、中断传输。
2)、是CH375芯片的功能简化版,CH375芯片的设备方式完全与CH372兼容。
3)、通过2MB速度的并行接口与单片机进行通讯。
4)、在本地端,CH372可方便的挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。
5)、在计算机系统中,CH372的配套软件提供了简洁易用的操作接口,与本地端的单片机通讯简单方便。
6)、通用Windows驱动程序提供设备级接口,通过DLL提供API应用层接口。
7)、内置了USB通讯中的底层协议,具有省事的内置固件模式和灵活的外置固件模式。
8)、内置固件模式下屏蔽了相关的USB协议,自动完成标准的USB枚举配置过程,不需本地端控制器做处理,简化了单片机的固件编程。
9)、外置固件模式下,由外部单片机自行处理各种USB请求,从而实现符合各种USB 类规范的设备。
10)、工作电压3.3V和5V。
3、CH374(SOP28、SSOP20、SSOP24、SOP16) USB总线通用接口芯片简介:1)、USB-HOST主机方式和USB-DEVICE/SLAVE设备方式,支持动态切换。
2)、支持1.5Mbps低速和12Mbps全速USB通讯,支持常用的低速和全速USB设备的控制传输、批量传输、中断传输、同步/等时传输。
USB设备分类:HOST,OTG,DEVICE
USB 设备分为三种:HOST,OTG,DEVICE。其中 ID 脚在 OTG 功能中 才使用。 A,如果你的系统自己仅仅是用做 Slave,那幺就使用 B 接口。任何时候 都悬空,都做 Slave。 如果是 OTG 设备,它的系统控制器会判断外部设备的 ID 脚的电平,决 定是什幺样的设备插入: B,如果是高电平,则是 B 接头插入,此时 OTG 设备就做主模式 (master mode); C,如果 ID 为低,则是 A 接口插入,然后 OTG 设备就会使用 HNP 对话 协议来决定它跟外设哪个做 Master,哪个做 Slave。 D,还有种主动 OTG 设置,就是接入外设后,在 OTG 设备中点击 HOST
ቤተ መጻሕፍቲ ባይዱ
在微型 A 插头中,ID 引脚接地,在微型 B 插头中,ID 引脚悬空。在 OTG 中,如果设备的 ID 引脚接地(如图 l 右侧的设备),则此设备默认为主 机,否则为外设。同时,在设备连接使用过程中,通过主机协商协议,允许 主机和外设功能互换。例如,假设图 1 左边的 B-Device 为 1 个手持 PDA,右 边的 A-Device 为 1 个打印机。由于连接线的关系,打印机初始化为主机。但 是打印机的驱动程序存在 PDA 中,这时需要 PDA 作为主机,打印机作为外 设。通过 HNP 可以方便实现此功能,而不必拔下连接线调换插头方向,重新 连接打印机和 PDA。
使能,会强制 ID 拉低。此时的 Master 和 Slave 关系确定。 我们手机上一般用的都是 B 型 Mini-USB 口 (1)USB (2)Mini USB (3)总结 从左往右依次为:miniUSB 公口(A 型插头)、miniUSB 公口(B 型插 头)、USB 公口(B 型)、USB 母口(A 型插座)、USB 公口(A 型插头) 。 (4)OTG 特性:既能充当 HOST 又能用做 Device,即 DRD(Dual-role-devices); OTG 设备依然可以连接到 PC 上用做普通的外设,即 POD(Peripheral-Only Device)。协议简述:USB OTG 中引入了两个新的协议, SRP(Session Request Protocol)和 HNP(Host NegoTIaTIon Protocol),即会话请求协议和 主机交流协议。
USB做Host的OTG原理分析
USB做Host的OTG原理在介绍USBOTG的基础上,着重介绍Maxim公司的MAX3301E型USBOTG 电路的特点、内部结构和工作原理。
1 引言随着USB2.0版本的发布,USB越来越流行,已经成为一种标准接口。
现在,USB支持三种传输速率:低速(1.5Mb/s)、全速(12Mb/s)和高速(480Mb/s),四种传输类型:块传输、同步传输、中断传输和控制传输。
USB应用灵活方便,能满足多种外设的需要。
随着个人便携式电子产品的增长和嵌入式技术的飞速发展,USB主机已不再局限于单纯的PC,可以是含有USB主控器的任何设备,如PDA、MP3播放器等。
在USB2.O规范中也增加了USB嵌入式设备的标准——On-The-Go(OTG),它使外设可以在主机和设备之间相互切换,即当其连接至PC时,它是1个USB设备,而与其他USB设备相连接时,它便作为USB主机。
2 USB OTG2.1 USB OTG简介DSBOTG是USB2.O版本的补充,并不是独立的标准,它保留了USB2.0的所有特点。
OTG使2个USB外设在脱离PC的情况下可以直接通信。
为了实现这种功能,在OTG中有一个新的概念——双功能设备(DRD:Dual-RoleDevice)。
1个DRD能满足下列特征:●具有一定的USB主机能力和提供1个外设列表;●作为外设时能够实现全速操作(或高速操作);●作为主控机时能支持全速操作(低速或高速)●支持主机协商协议(HNP)和会话请求协议(SRP);●仅有1个微型AB连接端口;●能够向电源总线提供不小于8mA的电流。
要实现主机功能,主机必须存储大量的设备驱动程序,并且向电源总线提供一定的电流。
对于嵌入式USB主机来说,提供大量的设备驱动程序是不现实的也没有必要,1个嵌入式USB主机只需支持部分特定设备,这些设备就是它的外设列表。
2.2 主机协商协议(HNP)在USB标准中,主机采用A型接口,称为A类设备(A-Device);外设采用B型接口,称为B类设备(B-Device)。
usb host转device电路
usb host转device电路
将 USB Host(主机)转换为 USB Device(设备)需要一个电路来实现。
这个电路的主要功能是在 USB 总线上模拟一个 USB 设备的行为。
以下是一个简单的 USB Host 转 Device 电路的概述:
1. USB 连接:该电路需要包含一个 USB 连接器,用于连接到主机的 USB 端口。
2. USB 收发器:收发器是电路的核心部分,用于处理 USB 总线上的数据传输。
它将 USB 信号转换为数字信号,并将数字信号转换回 USB 信号。
3. 微控制器或 USB 控制器:这个部分负责处理 USB 通信协议和设备行为。
它可以是一个微控制器,如 STM32 等,或者是一个专门的 USB 控制器芯片。
4. 固件:微控制器或 USB 控制器需要运行适当的固件,以实现 USB 设备的功能。
固件负责处理 USB 标准请求、设备描述符、端点配置等。
5. 外部存储器:如果需要存储设备的配置信息或其他数据,可能需要外部存储器,如EEPROM 或 Flash。
6. 其他外设:根据具体的设备需求,可能还需要其他外设,如 LED、按钮、传感器等。
需要注意的是,实现一个完整的 USB Host 转 Device 电路需要深入了解 USB 协议和相关的硬件设计。
这可能涉及到复杂的电路设计、固件开发和 USB 标准的合规性。
如果你没有相关的经验,建议参考现有的开源项目、开发板或寻求专业的帮助。
USBHOST与USBOTG的区别是什么功能上有什么差异
这个解释起来好麻烦,l z慢慢看简单地说,OTG就是On T he Go,正在进行中的意思,也就是可以直接传输,就是可以从一个机器直接传到另一个机器中,举个例子未来的一天,我拿着M EIZU最新产品“E X”来到学校,听着“EX”里面装着的我最新下载的一首新歌,我的一个好朋友夺下我的耳塞想听听这首歌,她一边听一边陶醉地说:“我找这首歌已经很久了,可是一直都没有能downl oad到,你是在哪儿找到的???”我笑着要她拿出她的Mp3,同时我从钥匙扣上取下一条便携的数据线,数据线的一头插在“EX”上,另一头插在她的Mp3上,我打开“E X”的菜单,选中了基于OTG技术的传输模式,直接将这首好听但是难找的歌“拷”到了她Mp3上,她非常惊讶,直到她在自己的M p3上听到了这首歌才相信这一切都是是真的……,呵呵呵usb h ost USB设备分为H OST(主设备)和S LAVE(从设备),只有当一台HOST与一台SLA VE连接时才能实现数据的传输。
简单的说,如果一个数码设备支持USB HOST,那么它就可以从另外一个USB设备中取得数据。
U SB HO ST线可以使得很多智能手机支持连接鼠标、键盘、硬盘、U盘、M P3、US B游戏手柄、USBHUB、U SB网卡、USB打印机、手机、USB S IM手机卡读卡器等一堆设备,好处多多所以一句话来说:一般情况下OTG和H OST的区别就是ho st支持的东西多一点,otg传输方便点,不需要别的机器上有从设备的接口就能传输,就说真么多了什么是usbhost?USB是英文Un ivers al Se rialBus的缩写,中文含义是“通用串行总线”。
USB Host介绍与使用
USB Host介绍与使用一几个名词的含义USB device:从硬件角度看就是一个带有usb client控制器的设备;从软件角度看,就是一个挂在usb总线上的一个普通意义上的设备,只不过它们的驱动是基于host驱动之上的。
USB host:USB主设备,可以从另外一个USB device中取得数据,包括USB host控制器和USB host协议。
与USB device或USB slave相对应。
USB client:从硬件角度看就是指USB client 控制器,从软件角度看,就是指USB client协议,与USB host协议相对应。
USB OTG:On The Go,正在进行中的意思,也就是可以直接传输,就是可以从一个机器直接传到另一个机器中。
USB HUB:USB扩展/集线器,一种可以将一个USB接口扩展为多个(通常为4个),并可以使这些接口同时使用的装置。
二 USB HOST技术简介USB的通信可以用下图表示。
下图中,左半部分为USB主机端,可以看出,USB主机端由两部分构成,即软件体和硬件体。
实际上是三个软件组件组成了USB HOST解决方案,即USB 客户驱动程序、USB驱动程序和USB主机控制器驱动程序。
应用程序的事务处理是由USB客户驱动程序(设备驱动程序)启动时,客户驱动程序把USB设备当作一个可以被访问的端点集合,它可以被控制并与它的功能单元进行通信。
USB系统软件包括USB驱动程序和USB主控制器驱动程序,USB驱动程序负责配置管理、用户管理、总线管理和数据传输管理;以及数据的位编码、封包、循环校验、发送、错误处理等。
三 USB host实现简单实现:MCU+USB控制器(若MCU中已经包含USB OTG则无需控制器,比如LPC2478,内部包含USB OTG)。
例如下图是由微控制器MSP430F149和USB控制器ISP1161实现USB HOST的电路。
ISP1161是Philips设计的USB主机/设备控制器。
USBHost总线解决设计方案
USB Host总线解决方案ARM读写U盘/移动硬盘模块说明书目录1. 概述 (2)2. 应用 (2)3. USB简介 (3)4. 硬件介绍 (3)4.1 CPU结构 (3)4.2 管脚定义 (3)4.3 接口使用 (6)5. 工作指示灯说明 (7)6. 软件开发 (7)6.1 概述 (7)6.2 功能实现 (8)6.2.1 数据结构 (8)6.2.2 代码的实现 (12)6.2.2.1 系统命令/响应消息 (12)6.2.2.2 系统命令/响应及其数据部分 (13)6.2.2.3 用户系统创建文件及其实现过程 (13)6.2.2.4 用户系统写文件的过程实现 (15)6.2.2.5 INTR触发用户系统外部中断服务程序 (18)7. 说明 (19)1. 概述ARM读写U盘/移动硬盘模块——USB Host总线解决方案(也即Master)作为一个模块嵌入到应用方的系统中,通过总线方式实现与应用方系统的通信。
该解决方案实现了将应用方基于文件系统级操作,将命令通过总线写入Master模块的双口RAM的指定地址,在完成相应的操作后,再从双RAM的指定地址读出相应的响应,以此实现通过Master模块对USB接口磁盘进行访问。
用户对USB磁盘的访问总体上分为三大类:磁盘操作(如打开/关闭磁盘、读取磁盘信息等)、目录操作(创建/删除目录、Dir 等)和文件操作(打开/关闭文件、读/写文件等)。
具体操作见《USB Host 解决方案—HostModule系统协议v2.0》。
用户对Master模块的使用主要包括2个方面:硬件说明和软件开发。
2. 应用ARM读写U盘/移动硬盘模块——USB Host总线解决方案适用于工业中的数据采集,如:绣花工业中的花样采集等等。
3. USB简介因为本产品用到的是移动硬盘,而目前市场上移动硬盘基本都是以USB接口而进行通信的,所以简单介绍USB。
USB(Universal Serial Bus)是由Compaq、HP、Intel、Lucent(朗讯)、Microsoft、NEC和Philips七家公司联合推出的新一代标准接口总线。
在USB中USBHOST是通过各种描述符来识别设备的
在USB中USBHOST是通过各种描述符来识别设备的随着技术的不断发展, USB(通用串行总线)已经成为了连接各种设备的主要方式。
在 USB 中,USBHOST 是用于识别、管理和连接 USB 设备的主机端,而 USB 设备则是被动接受主机指令并执行操作的从属端。
在 USBHOST 与设备之间的通讯过程中,USBHOST 首先需要对设备进行识别,然后才能对其进行管理和使用。
本文将介绍 USBHOST 是如何通过各种描述符来识别设备的。
什么是 USB 描述符?在 USB 中,描述符起着至关重要的作用。
USB 描述符是用于描述 USB 设备的结构,可以理解成USB 设备的一份数据结构,包含了设备的基本信息、功能特点、支持的协议和接口等信息。
插入 USB 设备后,USBHOST 会从设备中读取一些关键的描述符,通过这些描述符,USBHOST 可以识别出连接的设备,并以正确的方式进行管理和控制。
USB 描述符分为设备描述符、配置描述符、接口描述符等。
其中,设备描述符是必须的;而配置描述符和接口描述符则是通过设备描述符间接引用的。
下面将详细介绍每种描述符的作用和结构。
设备描述符设备描述符是用于描述USB 设备的基本信息,包括设备的供应商ID、产品ID、设备版本号、设备类等。
设备描述符有18个字节长,其中,字节1为描述符的长度,字节2为描述符类型(值为0x01表示设备描述符),字节3和字节4表示USB规范的版本号。
字节5和字节6表示USB设备的类别、子类别和协议码,字节7为USB设备可处理的最大数据包大小,字节8为设备的厂商ID,字节9为设备的产品ID,字节10和11为设备的版本号,字节12至18为USB设备的其他描述符。
配置描述符配置描述符用于描述 USB 设备的配置信息,包括该配置的总长度、配置号、接口数、供电方式等。
配置描述符由配置描述符首部和接口描述符组成。
需要注意的是,在 USB 中,配置描述符中的一个设备可以包含多个接口描述符。
Linux下USB驱动详解(HOST)
Linux下USB驱动详解(HOST)USB驱动分为两块,一块是USB的bus驱动,这个东西,Linux内核已经做好了,我们可以不管,我们只需要了解它的功能。
形象的说,USB的bus驱动相当于铺出一条路来,让所有的信息都可以通过这条USB通道到达该到的地方,这部分工作由usb_core(drivers/usb/usb.c)来完成。
当USB设备接到USB控制器接口时,usb_core就检测该设备的一些信息,如生产厂商的ID(VID)和产品的ID(PID),或者是设备所属的class、subclass跟protocol,以便确定应该调用哪一个驱动处理该设备。
里面复杂细节我们不用管,我们要做的是另一块工作——usb的设备驱动。
也就是说,我们就等着usb_core告诉我们要工作了,我们才工作。
OHCI(Open Host Controller Interface)是支持USB1.1的标准,但它不仅仅是针对USB,还支持其他的一些接口,比如它还支持Apple的火线(Firewire,IEEE 1394)接口。
与UHCI 相比,OHCI的硬件复杂,硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单。
主要用于非x86的USB,如扩展卡、嵌入式开发板的USB主控。
本文也是基于OHCI来介绍usb设备驱动的。
USB从设备的分类可以从USB设备接口描述符(Standard Interface Descriptor)对应的的bInterfaceClass这一个byte得到。
bInterfaceClass的典型代码为1,2,3,6,7,8,9,10,11,255。
分别代表的意思为1-audio:表示一个音频设备。
2-communication device:通讯设备,如电话,moden等等。
3-HID:人机交互设备,如键盘,鼠标等。
6-image图象设备,如扫描仪,摄像头等,有时数码相机也可归到这一类。
7-打印机类。
USB HOST与 USB OTG的区别是什么,功能上有什么差异
(2)作为A设备时,需要具有VBUS监视和供电电路;作为B设备初始化SRP时,需要监视和触发VBUS。
(3)具有ID输入引脚。作为两用OTG设备,ASIC、DSP或其它与收发器连接的电路必须具备充当外设和主机的功能,并应按照HNP协议转换其角色。
收发器所需添加的大多数电路用于VBUS引脚的管理。作为主机,它必须能够提供5V、输出电流可达8mA的电源。图3中的模拟开关用于配置收发器的各种功能。
ASIC和控制器还必须包含USB主机逻辑控制功能,包括发送SOF(帧启动)包、发送配置\u36755输入\u36755输出数据包,在USB 1 msec帧内确定传输进程、发送USB复位信号、提供USB电源管理等。
Maxim要提供的USB OTG方案
MAX3301E是Maxim公司研制的一款USB OTG收发器,该器件集成有电荷泵,可将PDA、蜂窝电话和数码相机等移动设备与USB外设直接连接而无需PC机的参与。采用MAX3301E和一个嵌入式USB主机,就可直接将诸如打印机或外部硬盘驱动器这样的外设连接。MAX3301E内部包括USB OTG收发器、UBUS电荷泵、线性稳压器和I2C 2线串行接口。内部电平转换器使MAX3301E能够与采用+1.65至+3.6V逻辑电源电压的器件连接。MAX3301E中的电荷泵工作在+3V至+4.5V输入电源下,可产生符合OTG要求的VBUS输出,且输出电流大于8mA。该器件可利用内部比较器控制并测量VBUS,同时支持USB OTG SRP和HNP。
这个解释起来好麻烦,lz慢慢看
简单地说,OTG就是On The Go,正在进行中的意思,也就是可以直接传输,就是可以从一个机器直接传到另一个机器中,举个例子 未来的一天,我拿着MEIZU最新产品“EX”来到学校,听着“EX”里面装着的我最新下载的一首新歌,我的一个好朋友夺下我的耳塞想听听这首歌,她一边听一边陶醉地说:“我找这首歌已经很久了,可是一直都没有能download到,你是在哪儿找到的???”我笑着要她拿出她的Mp3,同时我从钥匙扣上取下一条便携的数据线,数据线的一头插在“EX”上,另一头插在她的Mp3上,我打开“EX”的菜单,选中了基于OTG技术的传输模式,直接将这首好听但是难找的歌“拷”到了她Mp3上,她非常惊讶,直到她在自己的Mp3上听到了这首歌才相信这一切都是是真的……,呵呵呵
gd基于 usb host 的 iap 例程
题目:基于USB Host的IAP例程开发目录1. 简介2. USB Host和IAP概念介绍3. 基于USB Host的IAP例程开发流程3.1 硬件准备3.2 软件准备3.3 IAP例程开发步骤4. 调试和注意事项5. 结语---1. 简介在嵌入式系统或物联网设备中,升级固件是一个非常重要的功能。
对于一些支持USB接口的设备,使用USB Host来进行固件升级是一个常见的解决方案。
本文将介绍如何基于USB Host的IAP示例程序来实现固件升级功能。
2. USB Host和IAP概念介绍USB Host是指一种设备,它可以连接到USB外设并控制其操作。
USB Host可以向USB设备发送命令和数据,并接收来自USB设备的响应。
IAP (In-Application Programming) 是一种在应用程序运行时对固件进行更新的技术。
基于USB Host的IAP例程就是通过USB主机与设备进行通信,实现固件升级的功能。
3. 基于USB Host的IAP例程开发流程3.1 硬件准备需要准备一个支持USB Host功能的嵌入式系统或开发板。
确保该系统或开发板的硬件支持USB接口,并能够作为USB Host与外部设备进行通信。
另外,需要准备一个与该系统或开发板兼容的USB外设,用于进行固件升级测试。
3.2 软件准备在软件方面,需要准备嵌入式系统或开发板的开发环境,如Keil、IAR 等。
需要了解目标系统的USB Host驱动程序的开发和调试方法。
另外,需要编写固件升级相关的应用程序,这些程序将用于与USB外设进行通信并实现固件的升级。
需要准备一个用于测试的固件升级文件。
3.3 IAP例程开发步骤- 第一步:搭建USB Host开发环境,包括安装USB Host开发工具、驱动程序等。
- 第二步:编写USB Host驱动程序,以便系统能够识别并与USB外设进行通信。
- 第三步:编写固件升级应用程序,实现对USB外设的读写操作,以及固件升级功能的实现。
在USB中_USB_HOST是通过各种描述符来识别设备的
USB HID报告及报告描述符简介在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。
USB报告描述符(Report Descriptor)是HID设备中的一个描述符,它是比较复杂的一个描述符。
USB HID设备是通过报告来给传送数据的,报告有输入报告和输出报告。
输入报告是USB设备发送给主机的,例如USB鼠标将鼠标移动和鼠标点击等信息返回给电脑,键盘将按键数值数据返回给电脑等;输出报告是主机发送给USB 设备的,例如键盘上的数字键盘锁定灯和大写字母锁定灯等。
报告是一个数据包,里面包含的是所要传送的数据。
输入报告是通过中断输入端点输入的,而输出报告有点区别,当没有中断输出端点时,可以通过控制输出端点0发送,当有中断输出端点时,通过中断输出端点发出。
而报告描述符,是描述一个报告以及报告里面的数据是用来干什么用的。
通过它,USB HOST可以分析出报告里面的数据所表示的意思。
它通过控制输入端点0返回,主机使用获取报告描述符命令来获取报告描述符,注意这个请求是发送到接口的,而不是到设备。
一个报告描述符可以描述多个报告,不同的报告通过报告ID来识别,报告ID在报告最前面,即第一个字节。
当报告描述符中没有规定报告ID时,报告中就没有ID字段,开始就是数据。
更详细的说明请参看USB HID协议,该协议可从下载。
USB报告描述符可以通过使用HID Descriptor tool来生成,这个工具可以到下载,为了方便大家,我顺便上传了一份。
下面通过由HID Descriptor tool生成的USB鼠标和USB键盘来说明一下报告描述符和报告。
code char KeyBoardReportDescriptor[63] = {5A5A5A7f1.1.0CTL a3 00 00 00 01 00 04 00 GET STATUS 17usDI 01 01 01 00 .... 27u sCTL 23 01 10 00 01 00 00 00 CLEAR FEATUR E 110usCTL a3 00 00 00 01 00 04 00 GET STATUS 56usDI 01 01 00 00 .... 14u sCTL 23 03 04 00 01 00 00 00 SET FEATURE 109msDI 02 . 90ms CTL a3 00 00 00 01 00 04 00 GET STATUS 23usDI 03 01 10 00 .... 22u sCTL 23 01 14 00 01 00 00 00 CLEAR FEATUR E 8usCTL a3 00 00 00 01 00 04 00 GET STATUS 19msDI 03 01 00 00 .... 34us ......!.... 67msCTL a3 00 00 00 01 00 04 00 GET STATUS 49usDI 03 01 00 00 .... 27us CTL 23 03 04 00 01 00 00 00 SET FEATURE 24usDI 02 . 112ms CTL a3 00 00 00 01 00 04 00 GET STATUS 21usDI 03 01 10 00 .... 25us CTL 23 01 14 00 01 00 00 00 CLEAR FEATUR E 8us......!.... 75ms02 01 .. ...... 50msCTL a3 00 00 00 02 00 04 00 GET STATUS 214msDI 00 01 00 00 .... 34us ......!.... 67ms02 01 .. ...... 50ms............. 83ms50 00 07 05 82 02 40 00 00 07 05 02 02 40 00 00 P..... @......@..45ms.. 53ms46ms70ms32 00 2.53ms.......00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 ... $...........以下是我在做USB键盘时,通过串口发回的调试信息,从这也可以看到枚举的过程。
android_USB_Host
USB HostUSB Host,中文意思是USB主模式,是相对于USB accessory(USB副模式)来说的,前者是在android设备上插入一USB设备,android设备做为主机运行;后者也是在android设备上通过USB数据线插入另外一个设备,但插入的设备可以是一个完整的独立主机,也就是可以是另外一个android设备。
需要注意的是以上两种模式在android API level-12以下是不支持的,也就是说只有android3.1及更高的版本才支持这两种模式,下面对USB主模式做一简介:UsbManagerbManager负责管理USB设备的类,你可以在相应代码中通过以下方法获得此对象的一个实例:UsbManager manager=(UsbManager)getSystemService(B_SERVICE);该类提供的主要方法有:getDeviceList()()1)getDeviceList获得设备列表,返回的是一个HashMap.;hasPermission((UsbDevice device)2)hasPermission判断你的应用程序是否有接入此USB设备的权限,如果有则返回真,否则返回false.3)openDeviceopenDevice((UsbDevice device)打开USB设备,以便向此USB设备发送和接受数据,返回一个关于此USB设备的连接。
4)requestPermissionrequestPermission((UsbDevice device,PendingIntent pi)向USB设备请求临时的接入权限。
UsbDevicebDevice代表一个USB设备的类,每个设备都包含了一个或多个接口,每个接口又包含一个或多个节点用来与此设备传输数据。
该类的主要方法有:1)getDeviceClassgetDeviceClass()()返回此USB设备的类别,用一个整型来表示。
USBHost与USBDevice的区别
USBHost与USBDevice的区别
USB Host是指驱动过后,板子就可以连接USB接口连接的器件,读取和装载数据了。
USB Device是指驱动过后,板子可以当做一个USB移动设备,通过USB连接到电脑上,类似U盘
usb device controller是与usb host controller相对应的usb控制器,它主要实现usb client端的协议。
而usb device有两种含义:从硬件角度看就是一个带有usb client控制器的设备;从linux角度看,就是一个挂在usb总线上的一个普通意义上的设备,只不过它们的驱动是基于host驱动之上的。
而host驱动主要实现usb host端的协议,usb device的驱动通过host 驱动提供的API访问远端设备的“I/O”,从而实现对设备的控制。
后来linux又实现了usb client协议的驱动,这样就可以在该协议驱动之上实现各种各样的usb设备,这种设备的驱动通过usb client 协议的驱动提供的API,将设备自身的“I/O”开放出来,给远端的host访问。
由于内核已经使用了usb device这个名词,所以为了区别,称这种设备为gadget,其驱动为gadget驱动。
对于一个带有usb client controller的板子,如果基于该控制器实现了某种设备(如mass storage),那么从这块板子的角度看,这是一个usb gadget;如果用usb cable将这个板子与pc机连接起来,那么在pc上就可以看到一个usb device。
《开发板——USB的host、device、otg模式》
《开发板——USB的host、device、otg模式》
B物理接⼝形态
⽬前USB硬件是接⼝上分三种,普通PC使⽤的接⼝都是TYPE-A,⼿机上⽤的MICRO USB(之前⽤的是mini USB),现在很多⼿机开始使⽤TYPE-C。
从左往右依次为:miniUSB公⼝(A型插头)、miniUSB公⼝(B型插头)、USB公⼝(B型)、USB母⼝(A型插座)、USB公⼝(A型插头)
mini(micro) USB除了第4针外,其他接⼝功能皆与标准USB相同。
第4针成为ID,在mini-A上连接到第5针,在mini-B可以悬空亦可连接到第5针。
B HOST/DEVICE/OTG概念
OTG控制器可以做host,也能做device,控制器的⾓⾊⼀般由USB ID电平来决定。
完整的USB2.0 OTG 控制器硬件信号如下:
USB_ID:输⼊信号,由 USB OTG 协议定义,⽤于识别 USB ⼝所接设备的默认⾓⾊(host or device)。
USB_ID 默认上拉,处于 device 状况,如果要控制器进⼊ host 状态,需外接 mini-A ⼝或 micro-A ⼝将 USB_ID 短接到地。
也可以由软件进⾏强制切换,通过控制
/sys/bus/platform/drivers/usb20_otg/force_usb_mode
0: 由硬件即USB ID决定
1:强制 host模式
2:强制 device模式。
USB host 工作流程
USB枚举步骤USB协议定义了设备的6种状态,仅在枚举过程种,设备就经历了4个状态的迁移:上电状态(Powered),默认状态(Default),地址状态(Address)和配置状态(Configured)(其他两种是连接状态(Attached)和挂起状态(Suspend))。
Attached和Powered状态不难理解:当一个设备被正确插入到主机的USB接口时,就处于Attached(连接)的状态。
设备连接好了,USB主机识别了设备,同时没有对设备进行请求,USB设备就处于Suspended(挂起)状态。
下面步骤是Windows系统下典型的枚举过程,但是固件不能依此就认为所有的枚举操作都是按照这样一个流程行进。
设备必须在任何时候都能正确处理所有的主机请求。
1. 用户把USB设备插入USB端口或给系统启动时设备上电这里指的USB端口指的是主机下的根hub或主机下行端口上的hub端口。
Hub给端口供电,连接着的设备处于上电状态。
2. Hub监测它各个端口数据线上(D+/D-)的电压在hub端,数据线D+和D-都有一个阻值在14.25k到24.8k的下拉电阻Rpd,而在设备端,D+(全速,高速)和D-(低速)上有一个1.5k的上拉电阻Rpu。
当设备插入到hub端口时,有上拉电阻的一根数据线被拉高到幅值的90%的电压(大致是3V)。
hub检测到它的一根数据线是高电平,就认为是有设备插入,并能根据是D+还是D-被拉高来判断到底是什么设备(全速/低速)插入端口(全速、高速设备的区分在后面的章节中描述)。
检测到设备后,hub继续给设备供电,但并不急于与设备进行USB传输。
3. Host了解连接的设备每个hub利用它自己的中断端点向主机报告它的各个端口的状态(对于这个过程,设备是看不到的,也不必关心),报告的内容只是hub端口的设备连接/断开的事件。
如果有连接/断开事件发生,那么host会发送一个Get_Port_Status请求(request)以了解更多hub上的信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
什么是usb host?
USB是英文Universal Serial Bus的缩写,中文含义是“通用串行总线”。
它不是一种新的总线标准,而是应用在PC领域的接口技术。
USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。
不过直到近期,它才得到广泛地应用。
从1994年11月11日发表了USB V0.7版本以后,USB版本经历了多年的发展,到现在已经发展为2.0版本,成为目前电脑中的标准扩展接口。
目前主板中主要是采用USB1. 1和USB2.0,各USB版本间能很好的兼容。
USB用一个4针插头作为标准插头,采用菊花链形式可以把所有的外设连接起来,最多可以连接127个外部设备,并且不会损失带宽。
USB需要主机硬件、操作系统和外设三个方面的支持才能工作。
目前的主板一般都采用支持USB功能的控制芯片组,主板上也安装有U SB接口插座,而且除了背板的插座之外,主板上还预留有USB插针,可以通过连线接到机箱前面作为前置USB接口以方便使用(注意,在接线时要仔细阅读主板说明书并按图连接,千万不可接错而使设备损坏)。
而且USB接口还可以通过专门的USB连机线实现双机互连,并可以通过Hub扩展出更多的接口。
USB具有传输速度快(USB1.1是12Mbps,USB2.0是480Mbps),使用方便,支持热插拔,连接灵活,独立供电等优点,可以连接鼠标、键盘、打印机、扫描仪、摄像头、闪存盘、MP3机、手机、数码相机、移动硬盘、外置光软驱、USB网卡、ADSL Modem、Cable Modem等,几乎所有的外部设备。
USB设备分为HOST(主设备)和SLAVE(从设备),只有当一台HOST于一台SLAVE连接时才能实现数据的传输,OTG设备就是是我们的“EX”既能充当HOST,亦能充当SLAVE。