usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)

在之前的文章一次CAN波形分析之旅里,根据示波器采集的波形数据,详细地分析了CAN通信。今天来分析USB数据,还是同样的流程,但是这次使用matplotlib来协助分析。

USB基本波形

USB通过一对差分信号进行数据传输,这对差分信号叫D 和D-,用示波器抓取一段D 和D-的信号,保存成CSV格式,用matplotlib绘制该信号:

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(1)

分了方便分析,我们将D 和D-分别绘制:

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(2)

标记数据包(Packet)的组成:

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(3)

进一步细化数据包(Packet)的内容

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(4)

USB数据分析

起始帧数据包(FRAMEPACKET)

全速USB会每隔1毫秒发送一包起始帧数据包(FRAME PACKET),由PID,FRAME_NUMBER和CRC三部分:

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(5)

PID(Packet ID)为数据包标识符,为8位长度,低4位为标识符数值,高4位值为低4位数值按位取反。起始帧数据包对应的PID为1010 0101(最左侧为最高位,下同)

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(6)

这里需要注意,USB数据流先传输最低字节的最低位,同时按照NRZI方式编码,即(值不变表示数据1,值发生改变表示数据0)。

令牌数据包(TOKEN PACKET)

令牌数据包由PID,ADDR,ENDP和CRC四个段组成。一共有三种令牌:

  • IN
  • OUT
  • SETUP

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(7)

令牌IN对应的PID为0110 1001

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(8)

令牌OUT对应的PID为1110 0001

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(9)

令牌SETUP对应的PID为0010 1101

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(10)

数据包(DATA PACKET)

数据包由PID,PAYLOAD,CRC三个段组成,

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(11)

DATA1对应的PID为0100 1011

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(12)

握手包(HANDSHAKE PACKET)

握手包只包含PID段,全速USB一共有3种握手状态

  • ACK

报告数据已经被成功收到。

  • NAK

报告设备临时无法发送或接收数据。也用于在中断事务期间通知主机没有要发送的数据。

  • STALL

设备发现自己处于需要主机干预的状态(端点停止,或者不支持控制管道请求)

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(13)

ACK状态对应的PID为1101 0010

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(14)

NACK状态对应的PID为0101 1010

usb高频测试报告如何看懂(USB波形分析全速USB波形数据分析)(15)

-----------------------------------------------------------------------------------END

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。