浅析USB接口数据包格式

接口/总线/驱动

1126人已加入

描述

1、USB数据包字段

SYNC: 同步字段,所有数据包以SYNC开头,用于发送和接收同步全速和低速设备:

SYNC占用8bit,即,3对KJ + 2个K

高速设备:

占用32Bit,即,15对KJ + 2个K

以下是全速和低速设备的同步字段NRZI编码

PID(Packet ID): 用于标识包类型,此处并非是描述符中的PID,下表中罗列了PID的种类。

USB接口

USB数据包中的PID字段包含8Bit,低4位是PID,高4位是PID取反。

ADDR: 地址字段,地址字段只有7Bit,共有128个地址,地址0是无效的,用于USB插入时的枚举数据传输,枚举成功后Host会分配一个地址。

Frame Number: 此字段占用11Bit,主机每次发送加1

ENDP :端点字段,端点字段占用4Bit,也就是最多有16个端点。

CRC: 令牌类5bit CRC,数据类16Bit CRC

EOP: 2bit SE0, + 1bit J,如下图。

注:不同数据包类型,以上字段不一定全部存在,下面会详细介绍。

2、USB包类型

令牌包类型(Token):

USB接口

令牌包有以下几种PID类型:

OUT令牌:主机想要输出数据

IN令牌:主机想要接收数据

SETUP令牌:主机开始一个控制传输,后文会介绍什么叫控制传输

数据包类型:

USB接口

数据包有以下几种PID类型:

DATA0:后文介绍如何使用

DATA1:后文介绍如何使用

DATA2:用于高速同步传输,本文不做介绍

MDATA:用于高速同步传输,本文不做介绍

握手包****类型:

USB接口

握手包有以下几种PID类型:

ACK:数据包被正确的接收,未出现校验等错误

NAK:设备不能够接收数据返回NAK。设备没有数据给主机或者数据没准备好返回NAK。

STALL:由设备返回,表示设备不能发送或者接收数据

SOF数据包(Start of Frame):

USB接口

Frame Number占用11Bit

SOF由主机周期性发送,对于全速设备1mm±500nS间隔发送,对于高速设备125uS±62.5nS间隔发送。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分