EZ-USB中PID为何需要DATA0和…

因为USB构架对错误的校正是非常严谨的。就如前面所提的,ACK握手是给主机一个信号:外围器件正确的接收到了主机所发送的数据。但是握手数据包自身会不会在传输中被混淆呢?为了能够检测这个错误,主机和外围设备两边都各自维护一个与数据包传输相关的校验位,当数据到达目的地时,内部校验位就会与DATA0或者DATA1来进行比较。当主机或者外围设备发送数据时,它们交互的发送DATA0和DATA1。主机和外围设备就可以通过对数据PID与内部校验位状态的比较来确定错误的握手数据包。
    综上得出一个结论:ACK信号只是在收到DATA0或DATA1数据包后的一个回应,如果DATA0或者DATA1无法
到达目标自然目标就认为不存在这次数据传输,这样容易产生书籍。因此通过DATA0和DATA1的交替传输,如果检测到两个DATA0或者两个DATA1那么就表明数据包传输错误或者被遗漏。


根据我做firmware的经验,data0/data1除了区分相邻的2个包以外,没有用处。之所以要有data0和data1,就是为了防止把某个包认成另外一个,造成数据出错。

也可以进行容错处理,或保持主机和设备双方之间的数据的同步。比如,设备接收到一个错误的包,他不改变自己的pid,主机只有接收到确认的包才改变自己的pid.

DATA0 ,DATA1主要是用于数据的检错,它是数据报的前导字段,在数据传输过程中,依次是“DATA0,DATA1...”。

是USB的数据包类型中的PID名称 令牌:IN,OUT,SOF,SETUP 数据:DATA0,DATA1,DATA2,MDATA 握手:ACK,NAK,STALL,NYET 特殊类型:PRE,ERR,SPLIT,PIN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值