USB封包

USB是以令牌封包为主(token-based)的总线协议。PC掌握了这个总线的一切主动权,换言之,一切的沟通皆由PC主机来负责激活与执行。此外,由于USB不占用任何PC的中断向量、DMA或任何输入/输出的资源,因此,必须通过严谨的协议才能与外围设备达成通信的目的。在USB通信协议中,包含有令牌封包、数据封包、握手封包以及特殊封包。

1.USB封包中的数据域
不同的封包类型,就含有不同数量与类型的数据域。数据域的含义分别为:
●同步序列(synchronization sequence,SYNC)数据域:该字段由8位组成,它是作为每一个数据封包的前导,用来产生同步作用的,将会起始PLL,因此,它的数值固定为00000001。

●封包标识符(packet identifier,PID):该字段紧跟在SYNC后面,是由一个4位的标识符组成,用来表示数据封包的类型。封包类型由低两位来定义。而每一个封包类型中还可以通过PID字段高两位来定义不同的封包格式,如:令牌封包中,又可以细分为IN、OUT、SETUP和SOF封包格式。
●地址(address,ADDR)数据域:它是由7位组成,可以用来寻址高达127个外围设备。每一个设备仅能对应一个唯一的地址,当新的外围设备刚连接至USB接口时,拥有预设的地址0,之后再赋予新的地址。
●端点(endpoint,ENDP)数据域:它由4位组成,通过这4位,最多可以寻址出32个端点。这个数据域仅用在IN、OUT和SETUP令牌包中。
●循环冗余校验(cycle redundancy checks,CRC)数据域:CRC是一种错误检测技术。根据不同的封包类型,CRC数据域由不同数目的位组成,如最重要的数据封包采用CRC16(16个位)数据域,而其余的封包类型则采用CRC5(5个位)的数据域。
●数据(data)栏:它仅存于数据封包中,根据不同的传输类型,拥有不同的字节大小,范围是0到1023字节。
●帧号码(frame number)数据域:仅存于SOF封包,它由11位组成,这对于等时传输是非常重要的信息数据。
●闲置(idle)栏:它在每个封包的结尾处,且当D+与D-电位都为低电平时。
2.USB封包类型
由上述的各种封包数据域就可以组成各种封包类型,进而执行一个完整的USB通信协议。封包类型介绍如下:
●起始(SOF)封包:它是由主机发出的,通常目标设备都是利用SOF来辨识帧的起始,这个封包常用于等时传输。在1毫秒的帧开始的时候,等时传输会利用SOF激活传输并达到同步传输的作用。
●令牌(Token)封包:它也是由主机发出的,由于USB的数据交换是由PC主机端所激活的,所以在每一个数据交换中,必须以SYNC、PID、ADDR、ENDP和CRC5这5个数据域组合而成的令牌封包作为起始,并执行通信协议的前导工作。其中PID=Setup或IN或OUT。
●数据(Data)封包:根据USB规范,最初的数据封包都以Data0作为开始,其后才是DATA1,然后依次交替切换。这样就能使主机与设备维持同步,且作为侦错之用。
●握手(Handshake)封包:这个里面的PID数据域中包含了ACK(设备已经准备好接收)、NAK(未就绪)、STALL(发生错误而停滞)等三种PID类型名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值