可以看到,6个连续的1之后强制插入了一个0进去,这样即使接收方和发送方各自的时钟存在误差,也可以通过信号的变化实时同步,从而准确的进行采样。以上内容就是 USB 为什么只需要两根线就能进行快速进行数据传输的关键。
USB 数据包
下面再来聊聊数据包:
前面这张图介绍了如何通过 USB 数据线传输000011 数据,事实上在 USB 中,所有的数据都是以包(Packet)的形式进行传输的,而数据包是有一定的格式,也就是说,为了传输00011,需要按照包的格式才能正确传输。数据包有如下组成部分:
首先是 SOP(即从闲置状态到K状态),然后是 SYNC,即前面提到的同步域,用于接收方的时钟同步,其次才是我们需要传输的数据内容,最后是 EOP(2位 SE0,1位J状态)。如此,你的数据(PacketContent)才能被接收方正确接收。
数据包分为四大类:
令牌 (Token) Packet
帧首 (Start of Frame) Packet
数据 (Data) Packet
握手 (Handshake) Packet
每一类又可能分为多种具体的数据包,比如令牌包分为OUT、IN、SETUP等数据包,每一类中的 Packet Content 内容可能是不一样的,比如:
令牌 (Token) Packet
(灰色部分代表不存在)
帧首 (Start of Frame) Packet