【从零开始のIC学习笔记】USB2.0协议-包

6 篇文章 0 订阅
5 篇文章 3 订阅

前言

包(Packet)是USB系统中信息传输的基本单元,物理层的设计为了稳定传递的传递包


包的组成

USB包由五部分组成:同步字段(SYNC)、 包标识符字段(PID)、 数据字段 、循环冗余校验字段(CRC)包结尾字段(EOP)

同步字段(SYNC)PID字段数据字段CRC字段包结尾字段

SYNC字段:由8位组成,作为每个数据封包的前导,用来产生同步作用,使USB设备与总线的包传输 率同步,它的数值固定为00000001(物理层鉴相使用)。

PID字段:用来表示数据封包的类型。有效字段4bit,总长度8bit,包标识符中的校验字段是通过对类型字段的每个位求反码产生 的

PID0PID2PID3PID4~PID0~PID1~PID2~PID3

数据字段:是用来携带主机与设备之间要传递的信息,其内容和长度根据包标识符、传输类型的不同而各不相 同。在USB包中,数据字段可以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,总是首先传输字节的最低位,最后传输字节的最高位

CRC字段:CRC校验是为了保证数据在传输过程中的完整性, 接收方接收到数据时,采用同样的校验算法对原始数据进行计算,如果计算结果和接收到的校验值一致,说明 数据校验正确,这一帧数据可以使用,如果不一致,说明传输过程中出现了差错,这一帧数据丢弃,请求重发。 常用的校验算法有奇偶校验、校验和、CRC,ECC等

包结束字段:包结尾字段即发送方在包的结尾发出包结尾信号。USB主机根据EOP判断数据包的结束。至少2个{SE0,SE0}


包的类型

USB根据PID的不同,可分为令牌包、数据包和握手包(常用的封包类型高亮显示):

封包类型PID名称PID编码说明

 令牌

(仅Host可发出)

OUT(写数据)0001B主机对从机进行写数据
IN(读数据)1001B主机对从机进行读数据
SOF(同步应用)0101B特殊应用,帧的起始标记与帧码
SETUP1101B

配置从机,初始化信息,分配地址

                表示进行控制传输

数据DATA00011B为了分辨数据包
DATA11011B

握手

(谁接到数据包就发送握手包)

ACK0010B握手成功
NAK1010B无法接收数据或无法发送数据
STALL1110B端点产生迟滞(设备出现故障)
特殊PRE1100B使能下游端口的USB总线的数据传输切换到低速 的设备

令牌包(Token)

在USB系统中,只有主机才可以发送令牌包,常用的是OUT(写数据)、IN(读数据)以及STEUP(配置)。令牌包为固定大小,除去同步字段,共计24bit(8的整数倍),其中数据字段为11bit,包含7bit地址与4bit端点号。

8位8位7位4位5位
SYNCPID~PIDADDRENDPCRC5

数据字段中的7bit地址(ADDR),意味着一个USB系统可以使用128个地址,其中0地址默认不能使用,实际可使用的地址为127个;

数据字段中的4bit端点号(ENDP),表示一个设备的多种功能,例如一个耳麦,既有音频输入,也有音频输出的功能。

数据包(Data)

USB数据包的大小并不固定,其数据域是根据USB设备的传输速度 及传输类型而定,且须以8字节为基本单位。也就是,若传输的数据不足8字节,或传输到最后所剩余的 也不足8字节,仍须传输8字节的数据域。

8位8位0~1023字节16位
SYNCPID~PIDDATACRC16

握手包(Handshake)

握手信息包是最简单的信息包类型。在这个握手信息包中仅包含一个PID数据域而已。

8位8位
SYNCPID~PID

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值