usb基础知识资料

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表示一桢结束













猜你喜欢

转载自blog.csdn.net/zhanghao864442969/article/details/74231383
今日推荐