USB概念及协议基础总结

usb拓扑结构:

usb是一种主从结构,主机Host,从机Device。

usb的拓扑结构为金字塔形,如图1所示。


塔顶为USB主控制器(处理数据)和跟集线器,USB集线器将一个USB口扩展为多个,但是并不增加带宽,带宽是共享一个USB主控制器的。理论上,一个USB主控制器最多可以接127个设备,因为协议规定每个USB设备具有一个7bit的地址。

USB数据传输过程:USB主控制器发出命令和数据,通过跟集线器,再通过下面的集线器发给USB设备;设备接收数据后,处理,按原路返回一些数据和命令。

usb的电气特性

标准的USB有4根线:VBUS、GND、D+、D-(有些多了一根ID身份识别线)
USB2.0 有3种传输速度:低速模式(1.5Mb/s)、全速模式(12Mb/s)、高速模式(480Mb/s)。

usb插入检测机制

USB集线器的每个下游端口的 D±上,都接有一个15KΩ的下拉电阻。当没有设备接入时,输入端都为低电平。
在设备端,在D+上接1.5KΩ电阻上拉到3.3V电源,说明设备为全速和高速设备。低速设备上拉电阻接在D-上。
集线器通过判断被拉高的数据线是D+还是D-判断设备接入与否,及接入设备的类型。

usb的描述符及其之间的关系

USB主机通过描述符了解一个设备的功能和行为。描述符里面包含了设备的类型、厂商的ID、产品的ID、端点情况、版本号等众多的信息。

USB1.1协议定义的标准描述符有:设备描述符(一个USB设备只有一个设备描述符)、配置描述符、接口描述符、端点描述符、字符串描述符(非必须)

有了设备的地址和端口的地址,就可以准确的对端点发送和读取数据了,一个设备可以有多个配置,但同一时刻职能有一个配置有效。每个配置下面又可以有多个接口。

例子:8号教学楼是设备,我们可以把它分为两个配置:上课用、考试用。考试用时,全部教室用来当考场(即该配置下只有一个接口,接口下面有很多端点–教室);而平时上课用时,分为两类(即该配置下有两个接口,接口下面有很多端点–教室):教师的休息室和上课的教室。这两个教室不可以混用(同一个端口号不能出现在同一个配置下的两个或多个不同的接口中)。但是平时用作休息或者上课的教室都可以拿来当考场(即同一个端口号可以在不同的配置当中)。

usb设备的枚举

USB设备枚举过程运用的是USB的一种传输模式-----控制传输
控制传输分为3个过程:建立过程、可选数据过程及状态过程

枚举过程

1.主机首先是对设备复位,复位后地址为0;
2.主机往地址0端口0,发送获取设备描述符的标准请求;
在这里插入图片描述
3.设备收到请求后会按照主机的请求参数,在数据过程将描述符返回给主机;
在这里插入图片描述

4.主机确认无误,就会返回一个0长度的确认数据包(状态过程)。 接下来就是设置地址阶段。
在这里插入图片描述
5.USB主机向地址为0的设备的端点0发出一个设备地址的请求(控制传输的建立过程),新设备地址包含在建立过程的数据包里面。地址由USB主机分配和管理。设备接收到建立过程后,进入到状态过程,因为这个控制传输没有数据过程。设备等待主机请求状态返回(一个输入指令包),收到输入指令包后,设备会返回0长度的状态数据包。如果主机确认该状态包已经收到,就会发送应答包ACK给设备,设备收到ACK之后,就要启用新地址了。

usb包结构及传输过程

USB数据传输,是先低后高,一个数据包分为很多个域,LSB、MSB就是以域为单位来划分的。

USB传输以包为基本的单位:
一个包:同步域+包标识(PID)+数据 +CRC+EOP(包结束)
根据PID包分为:令牌包、数据包、握手包、特殊包

在这里插入图片描述

令牌包

在这里插入图片描述

数据包

在这里插入图片描述
数据包有4种:DATA0、DATA1、DATA2、MDATA
主机和设备都会维护自己的一个数据包类型切换机制;当数据包成功发送或者接收时,数据包类型切换。当检测到对方使用的数据包类型不对时,USB认为发生了错误,常发生在握手包被损坏的情况,确认信号损坏,另一端无法知道发送的数据是否成功,保持原来的数据包类型不变,如果对方下一次使用的数据包和自己一致,说明之前的数据包没有发送成功,不一样,说明对方已经成功接收数据包(因为只有接收正常才会进行包切换)。

握手包

在这里插入图片描述
握手包用来表示一个传输是否被对方确认。

类型意思
ACK正确接收数据,并有足够的空间来容纳数据
NAK没有数据要返回或者数据正确但是没有足够的空间来容纳它
STALL设备无法执行请求,或者端口已经被挂起
NYET在USB2.0高速模式下,表示本次数据接收成功,但是没有足够的空间来接收下一次数据。

一般USB接口芯片会完成CRC、PID识别、数据包切换、握手等协议处理。当USB接口芯片正确接收到数据时,如果有空间保存,它会将数据保存并返回ACK,同时,设置一个标志位表示已经正确的接收到数据。收到输入请求,如果有数据需要发送,则发送数据,等待接收ACK,只有等待接收到ACK之后,它才设置标志,标志数据发送成功,如果无数据发送,它会自动返回NAK。

所以通常根据芯片提供的标志位,来准备发送的数据到端点,或者从端点读取接收到的数据。这里的数据是指数据包中的数据,至于同步域、包标识、地址端点对用户时不可见的。

USB的四种传输类型

必须把包按照一定的关系组织成事务,才可以传输数据。

一个事务:令牌包+数据包+握手包

常见的有4种传输类型:批量传输、等时传输、中断传输、控制传输

批量传输

在这里插入图片描述
在这里插入图片描述

中断传输

这里说的中断,跟硬件中断不一样。中断端点在端点描述符里面报告它的查询间隔,主机会保证在小于这个时间间隔的范围内安排一次传输。用于数据量不大,但是对时间要求严格的设备里面,键盘、鼠标等。
在这里插入图片描述

等时传输

用在数据量大、对实时要求高的场合,例如音频等设备。当数据错误时不进行重传,没有应答机制。
在这里插入图片描述

控制传输

包含建立过程(一个事务)+数据过程(0、1个或多个事务)+状态过程
在这里插入图片描述

端点类型与传输类型的关系

一个具体的端点,只能工作在一种传输模式下。通常把工作在什么模式下的端点,就叫什么端点。例如:控制端点、批量端点等。

传输类型与端点支持的最大包长

每个端点描述符里面都规定了端点所支持的最大数据包长度。主机每次发数据不可以超过最大包长。
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值