您的位置:首页 > 其它

usb基础知识资料

2017-07-03 17:38 239 查看
usb massage storage协议
https://www.crifan.com/files/doc/docbook/usb_disk_driver/release/htmls/ch02_msc_basic.html https://wenku.baidu.com/view/015bf2b4bceb19e8b8f6bac5.html http://blog.sina.com.cn/s/blog_8bbf650701013mub.html http://blog.csdn.net/fudan_abc/article/details/5773563 http://blog.csdn.net/walkrainning/article/details/37886289
usb描述符详细含义
https://wenku.baidu.com/view/fa78edf2bceb19e8b9f6ba26.html
usb设备的识别流程
http://blog.csdn.net/myarrow/article/details/8286876
USB主机控制器host controler

• UHCI: Universal Host Controller Interface (通用主机控制接口, USB1.0/1.1)

• OHCI: Open Host Controller Interface (开放主机控制接口,USB1.0/1.1)

• EHCI: Enhanced Host Controller Interface (用于USB2.0高速设备的“增强主机控制接口”)

控制数据传输,设备永远不能主动发数据

主机控制器控制总线上包的传输, 使用1ms或125us的帧。在每帧的开始时,主机控制器产生一个帧开始包(SOF: Start of Frame)。SOF包用于同步帧的开始和跟踪帧的数目,每个包的传输都有一个状态阶段同(同步传输除外),数据接收者可以在其中返回ACK(应答接收),NAK(重试),STALL(错误条件)或什么也没有(混乱数据阶段,设备不可用或已经断开)。

usb设备的枚举过程
http://blog.csdn.net/myarrow/article/details/8270029
枚举

枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序

hub

hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt
IN Endpoint)来向主机(Host)报告。在系统启动时,主机轮询它的根hub(Root Hub)的状态看是否有设备(包括子hub和子hub上的设备)连接



识别电路
hub端:D+/D-接一个下拉电阻Rpd(14.5到24.8k)

设备端:1.5k的上拉电阻Rpu

全速/高速:D+上拉电阻Rpu

低速 :D-上拉电阻Rpu

识别原理

当设备插入到hub端口时,有上拉电阻的一根数据线被拉高到幅值的90%的电压(大致是3V)。hub检测到它的一根数据线是高电平,就认为是有设备插入,并能根据是D+还是D-被拉高来判断到底是什么设备(全速/低速)插入端口

枚举过程





枚举试验数据 http://blog.csdn.net/myarrow/article/details/8270060
usb协议架构及驱动架构
http://blog.csdn.net/myarrow/article/details/8279156
当USB设备连接到集线器,集线器状态将发生相应的变化,并将状态变化信息传递给USB主机。USB主机通过根集线器向USB设备发送命令,获取USB设备的各种信息,包含USB设备传输类型、ID号、Product、USB速度等信息。

主机和设备之间通信模型



USB协议中共定义了以下四种描述符:

1) 设备描述符

2) 配置描述符

3) 接口描述符

4) 端点描述符
其关系如下图所示:



设备描述符:每个设备唯一



配置描述符



接口描述符

设备应至少支持一个接口,如:块传输数据接口,部分设备可能支持其它的接口。复合设备可以支持额外接口,以支持音频和视频功能。标准中并没有定义此类接口。接口可能有多个可选设置,主机将会检查每个可选的设置。

端点描述符

每个设备至少支持控制端点0。USB设备应该支持三类端点:控制端点、输入端点和输出端点。





usb通讯过程,有试验数据
http://blog.csdn.net/zhzht19861011/article/details/4948028
以usb设备插到电脑为例说明

usb上电 -> 从设备的USB一直不断地挂起和唤醒 -> 插到电脑,电脑发来数据包要求获取usb设备的描述

USB的设备描述符,描述了这个设备使用什么USB的协议版本,这里是1.1的版本,还有厂家标识、产品标识,以及厂家、产品和序列号等字符串的偏移地址

通过设备描述符,就可以让主控器知道这个设备是使用什么版本的USB协议,是高速的设备,还是低速的设备,是谁产生的,是什么产品,然后操作系统就可以通过这些信息去找到相应的驱动程序,如果操作系统没有找到相应的驱动程序,就会提示用户插入光盘,或者其它方来安装相应的驱动程序。

基本概念

一个【传输】(控制、批量、中断、等时):由多个【事务】组成;

一个【事务】(IN、OUT、SETUP):由一多个【Packet】组成。

USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。

usb主机控制器:设备管理,ehci_hcd,uhci_hcd

hub:hub发起设备的初始化,rootHub(与主机控制器集成)

RS232传输协议



无数据传送时,数据线处于高电

平,等到有数据开始传送,发送方首先拉低数据线(start),表示数据传输开始,接受端也因为这个“start”信号

开始准备接受即将到来的数据,类似一次握手,随后,在两者之间的数据传送开始,结束后主方再次拉高数据

线,表示结束传输,自此两者重新进入Idle状态。等待下一轮传送开始
usb传输协议





假设D+,D-分别表示usb信号线的电平信号。那么对于usb full speed function

Data
J state:D+=1,D-=0;

Data K state:D+=0,D-=1;

SE0:D+=D-=0;

SE1:D+=D-=1;

这个对usb
full speed function来说,idle状态将处于Data J state,se0表示一桢结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: