接口/总线/驱动
1、USB数据包字段
SYNC: 同步字段,所有数据包以SYNC开头,用于发送和接收同步全速和低速设备:
SYNC占用8bit,即,3对KJ + 2个K
高速设备:
占用32Bit,即,15对KJ + 2个K
以下是全速和低速设备的同步字段NRZI编码
PID(Packet ID): 用于标识包类型,此处并非是描述符中的PID,下表中罗列了PID的种类。
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):
令牌包有以下几种PID类型:
OUT令牌:主机想要输出数据
IN令牌:主机想要接收数据
SETUP令牌:主机开始一个控制传输,后文会介绍什么叫控制传输
数据包类型:
数据包有以下几种PID类型:
DATA0:后文介绍如何使用
DATA1:后文介绍如何使用
DATA2:用于高速同步传输,本文不做介绍
MDATA:用于高速同步传输,本文不做介绍
握手包****类型:
握手包有以下几种PID类型:
ACK:数据包被正确的接收,未出现校验等错误
NAK:设备不能够接收数据返回NAK。设备没有数据给主机或者数据没准备好返回NAK。
STALL:由设备返回,表示设备不能发送或者接收数据
SOF数据包(Start of Frame):
Frame Number占用11Bit
SOF由主机周期性发送,对于全速设备1mm±500nS间隔发送,对于高速设备125uS±62.5nS间隔发送。
全部0条评论
快来发表一下你的评论吧 !