USB 协议.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:4 大小:23KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

USB 协议.doc

USB协议.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

USBProtocol域:域由数字串构成,USB数据最小的单位,由若干位组成(至于是多少位由具体的域决定)/同步域(SYNC),八位,值固定为00000001,用于本地时钟与输入同步1|标识域(PID),由四位标识符+四位标识符反码构成,表明包的类型和格式2|地址域(ADDR):七位地址,代表了设备在主机上的地址3域:|端点域(ENDP),四位,由此可知一个USB设备有的端点数量最大为16个4|帧号域(FRAM),11bit,每一帧都有一个特定的帧号,帧号域最大容量800h个5|数据域(DATA):0~1023B,不同传输类型数据域长度各不相同,为整数Byte6\校验域(CRC):对令牌包和数据包中非PID域进行校验,CRC-5和CRC-167补充:1:无2:USB的标识码(PID)有16种,在USB1.1规范里面只用了十种标识码,USB2.0使用了十六种标识码,表明包的属性,数据包的类型分为令牌包、数据包、握手包和特殊包四种,0x01输出(OUT)\0x09输入(IN)|---\令牌包0x05帧起始(SOF)|---/令牌包0x0d设置(SETUP)/0x03偶数据包(DATA0)0x0b奇数据包(DATA1)0x07高速高带宽microframe同步(DATA2)0x0fMDATA0x020x0a0x0e0x060x0c0x080x040x00确认接收到无误的数据包(ACK)无效,(NAK)错误,(STALL)接收端无应答(NYET)PREERRSPLITPINGRES保留\|----\数据包|----/数据包/\|-----\握手包|-----/握手包/\|-----\特殊包|-----/特殊包/3、地址0000000被命名为零地址,是任何一个设备第一次连接到主机时,在被主机配置、枚举前的默认地址,地址为7bit因此一个USB主机只能接127个设备。4、无5、无6、无7、无包:由域构成的包有四种类型,分别是令牌包、数据包、握手包和特殊包/|令牌包|\数据包/数据包\/握手包|\/特殊包|\输入包(IN)输出包(OUT)帧起始包(SOF)设置包(SETUP)数据DATA0)奇数据DATA1)123456/||||包||||||\确认无误包(ACK)7无效(NAK)8错误(STALL)9PREERRSPLITPING101112包格式:1:(IN)SYNC+PID+ADDR+ENDP+CRC5(五位的校验码)\2、(OUT)SYNC+PID+ADDR+ENDP+CRC5|---\令牌包3、(SOF)SYNC+PID+11位FRAM+CRC5|---/令牌包4、(SETUP)SYNC+PID+ADDR+ENDP+CRC5/数据包:数据包分为DATA0包和DATA1包,当USB发送数据的时候,当一次发送的数据长度大于相应端点的容量时,就需要把数据包分为好几个包,分批发送,DATA0包和DATA1包交替发送,即如果第一个数据包是DATA0,那第二个数据包就是DATA1,但在同步传输中,所有的数据包都是为DATA0。5、SYNC+PID+0~1023字节+CRC166、SYNC+PID+0~1023字节+CRC167、握手包:SYNC+PID8、SYNC+PID9、SYNC+PID10、无11、无12、无事务:事务分别有IN事务、OUT事务和SETUP事务,每一种事务都由令牌包、数据包、握手包三个阶段构成,这些阶段的发送是有一定的时间先后顺序的。/IN事务事务类型|OUT事务\SETUP事务/令牌包阶段:启动一个输入、输出或设置的事务事务|数据包阶段:按输入、输出发送相应的数据\握手包阶段:返回数据接收情况,同步传输的IN和OUT事务中没有这个阶段IN事务:令牌包阶段:Host发送一PID为IN的输入包给Slave,通知Slave发数据给Host数据包阶段:3种情况:1、设备端点正常,设备往入主机里面发出数据包(DATA0与DATA1交替)2、设备正在忙,无法往主机发出数据包就发送NAK无效包,IN事务提前结束,到了下一个IN事务才继续3、相应设备端点被禁止,发送错误包STALL包,事务也就提前结束了,总线进入空闲状态握手包阶段:Host正确接收到数据之后就会向Slave发送ACK包OUT事务:令牌包阶段:Host发送一PID为OUT的输出包给Slave,通知Slave接收数据数据包阶段:Host向Slave发送数据,DATA0与DATA1交替握手包阶段:3种情况:1、设备端点接收正确,设备往主机返回ACK包,通知主机可以发送新的数据,如果数据发生CRC校验错误,从机不返回任何握手信息2、设备正在忙,无法往主机发出数据包就发送NAK无效包,通知主机再次发送数据3、相应设备端点被禁止,发