USB通信协议介绍

1、概述

USB,Universal Serial Bus(通用串行总线),是一种计算机与外围设备进行数据交互的通信协议。

1.1 USB协议

USB2.0 或 USB3.1, 指的是传输标准; 而USB Type-C 或 USB Type-A, 指的是物理接口

1.2 USB级联

USB集线器最多可以串联5个

总线上最多能连接127个从机有因素限制实际比127个少);

1.3端点

  • 控制端点:USB从机都必须有一个控制端点:端点0,用于对设备进行枚举,以及对设备进行一些基本的控制。它的数据传输方向是双向的,而其他的普通端点的数据方向都是单向的
  • 普通端点:USB从机除了控制端点外,可以有一个或多个普通端点。低速从机做多可以有2个,高速和全速从机最多可以有15个。普通端点需要在设备配置之后才能进行数据传输

1.4通讯方式

USB总线在传输数据时,是按位进行传输的,所以是串行通信,同时USB是小端字节序传输,这意味着,串行传输时,应该先传输数据的LSB(最低有效位)。例如数据0X1234,通过USB总线传输时,会先传输0X34,再传输0X12

通讯方向

USB2.0规范中,USB的数据传输仅支持半双工,因为仅有一对差分信号线,数据方向只能是主机->从机或从机->主机。
USB3.0规范中,USB的数据传输支持全双工,由于硬件上增加了超高速差分信号线,传输协议上也进行了更新,所以同一时刻,数据可以从主机->从机/从机->主机

同步方式

USB以异步传输的方式,USB主机和USB从机的时钟频率都分别由自身提供,但是在USB从机枚举时,会共同确定USB版本,以确定数据传输速率。

令牌包

令牌包用于表明要开启一次USB数据传输。由于USB总线系统是主从结构的,所以无论是数据输入还是数据输出,都是由USB主机向USB从机发送令牌包,表明要进行数据传输。令牌包有以下4种:

  • OUT(输出):告知USB从机,USB主机即将要输出一个数据包
  • IN(输入):告知USB从机,USB主机需要从USB从机获取一个数据包
  • SETUP(建立):告知USB从机,USB主机即将要输出一个数据包,和OUT令牌包不同的是,SETUP令牌包会开启控制传输,USB主机之后将向从机发送一个DATA0类型(只能为此类型)数据包,数据包的目的地是USB从机的控制端点,此端点地址为0,USB从机必须接受此数据包
  • SOF(帧起始):表明这是一个帧起始包,帧起始包在每个帧开始时都会以广播的形式发送

1.5 USB从机枚举简单流程

USB主机识别从机并配置从机的流程被称为枚举。当USB从机连接到USB总线上时,USB主机会检测有USB从机插入,同时USB从机通电并将USB描述符信息从非易失性存储器加载到描述符寄存器中,等到USB主机从寄存器中获取到USB描述符,就能知道USB从机的基本信息,在这个过程中,会给USB从机分配对应的设备地址

USB描述符分为设备描述符,配置描述符,接口描述符,端点描述符,它们具体描述了以下信息:

设备描述符

USB从机有且只有一个设备描述符,主要用于记录设备的基本信息,包括设备包含的配置数量,设备使用的USB协议版本,设备类型,设备版本号,设备序列索引,厂商ID(VID),产品ID(PID),厂商字符串索引,产品字符串索引,端点0的最大包长等

设备描述符可以理解为USB从机的身份标识

配置描述符

USB从机一个设备描述符下可以包含多个配置描述符,主要记录了设备配置包含的接口数量,配置的编号,供电方式,电流需求量,是否支持远程唤醒等

配置描述符使得USB从机可以通过切换配置进行功能的切换,使用上更为灵活

接口描述符

USB从机一个配置描述符下会包含多个接口描述符,主要记录了接口号,接口的端点数,接口使用的类,子类和协议等

接口描述符主要是为了封装端点描述符而存在的抽象概念,可以理解为端点组合

端点描述符

USB从机一个接口描述符下会包含多个端点描述符,主要记录了端点的端点号,数据传输方向,数据传输类型,最大包长度,查询时间间隔等

描述符之间的关系

综合上面对于描述符的介绍,描述符之间是存在层次关系的,如下图,最上层是设备描述符,接着分别是配置描述符,接口描述符,端点描述符。这意味着一个USB从机,可以拥有多种配置,而每种配置都会拥有一些接口,这些接口封装了很多端点,每个端点都用于数据传输,在需要时USB从机可以根据配置切换USB功能,USB主机会根据不同配置包含的端点信息,选择不同的信息传输方式,从而更方便的实现更多的功能。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI+程序员在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值