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

USB基本波形

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

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

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

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

USB数据分析

起始帧数据包(FRAMEPACKET)

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

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

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

令牌数据包(TOKEN PACKET)

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

  • IN
  • OUT
  • SETUP

令牌IN对应的PID为0110 1001

令牌OUT对应的PID为1110 0001

令牌SETUP对应的PID为0010 1101

数据包(DATA PACKET)

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

DATA1对应的PID为0100 1011

握手包(HANDSHAKE PACKET)

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

        • ACK

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

      • NAK

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

      • STALL

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

ACK状态对应的PID为1101 0010

NACK状态对应的PID为0101 1010

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

[参考资料]

[USB波形分析] 全速USB波形数据分析(一)的更多相关文章

  1. [USB波形分析] 全速USB波形数据分析(二)

    在上一篇文章全速USB波形数据分析(一)介绍了全速USB的数据包(Packet)的组成,数据的类型等基本知识.这篇文章介绍USB的几种传输方式 事务(Transaction) USB协议定义了三种不同 ...

  2. [USB波形分析] 全速USB波形数据分析(三)

    前面的两篇文章介绍和分析了USB的一些基本知识,结合前面的介绍,今天用实例介绍USB的枚举过程. 1 | 概况 硬件基于EK-TMC123GXL开发板,软件是TI提供的USB批量传输的简单例子,在PC ...

  3. USB HOST与 USB OTG的区别及工作原理

    在SmartQ 7上面,同时存在USB HOST与 USB OTG两个接口,我想问一下,这两个接口有什么区别么?我怎么认为HOST属于是多余呢? 麻烦高手解答,感激不尽!!! 转自USB HOST与 ...

  4. 快速上手CH340N电路设计(CH340N USB转串口模块 USB Type-C接口 CH340系列芯片讲解)

    一.上模块          二.功能分析 l  芯片:CH340N l  输入接口:USB.TYPE-C l  输出接口:TTL(5V\3.3V\GND\TX\RX) l  指示灯:电源.TX.RX ...

  5. usb host和usb device

    S3C2440的数据手册将USB功能分为两章--usb host和usb device.具体什么意思呢? usb host: 微处理器作为usb主设备,可以挂接U盘之类的从属设备. usb devic ...

  6. USB C和USB 3.1傻傻分不清?这篇文章可以帮你

    USB Type-C接口以及USB 3.1标准的到来,理应为消费者提供更多便利.然而就目前来看,似乎这些新标准非但没有为消费者提供了更好的使用体验,反而带来了诸多隐患.Google的工程师Benson ...

  7. 读取USB HDD(USB移动硬盘信息)序列号的代码

    读取USB HDD(USB移动硬盘)序列号的代码,型号及分位. 使用Visual Studio 2010编译成功. 代码使用了CrystalDiskInfo中的代码smartata.c中相关代码: 例 ...

  8. STM8学习 无法仿真原因Starting debug session... -> Emulator reset (usb://usb)... ** Connection error (usb://usb): swim error [30200]: st-link connection error

    刚调试程序时,STlink总是连不上,一直提示: Starting debug session...-> Emulator reset (usb://usb)...** Connection e ...

  9. 【转】Android实战技巧之四十九:Usb通信之USB Host

    零 USB背景知识 USB是一种数据通信方式,也是一种数据总线,而且是最复杂的总线之一. 硬件上,它是用插头连接.一边是公头(plug),一边是母头(receptacle).例如,PC上的插座就是母头 ...

随机推荐

  1. NAT各种模式

    https://blog.csdn.net/u011245325/article/details/9294229

  2. tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决

    tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决 在开发新项目的时候,有时候为了省时,直接把曾经做过的项目工程A拷贝成改名为B工程,然后再在B工程上进行功能的开发, 此 ...

  3. 5款超实用的.NET性能分析工具

    虽然.NET框架号称永远不会发生内存泄漏,原因是引入了内存回收机制.但在实际应用中,往往我们分配了对象但没有释放指向该对象的引用,导致对象永远无法释放.最常见的情况就是给对象添加了事件处理函数,但当不 ...

  4. mysql报错:You do not have the SUPER privilege and binary logging is enabled

    MySQL出现 You do not have the SUPER privilege and binary logging is enabled报错 解决方案: 1.用root用户登录:mysql ...

  5. 【LeetCode】453. Minimum Moves to Equal Array Elements 解题报告(Java & Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:模拟过程 方法二:求和-n*最小值 方法三: ...

  6. C. Arpa's loud Owf and Mehrdad's evil plan

    C. Arpa's loud Owf and Mehrdad's evil plan time limit per test 1 second memory limit per test 256 me ...

  7. webSocket 与HTTP

    WebSocket 协议在2008年诞生,2011年成为国际标准.现在所有浏览器都已经支持了.WebSocket 的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真 ...

  8. 【Leetcode】718. 最长重复子数组

    最长重复子数组有一下性质 A: [1,2,3,2,1] B: [3,2,1,4,7]设横是A竖是B,有规律:若横元和竖元相等,则为1,不等为0 1 2 3 2 13 0 0 1 0 12 0 1 0 ...

  9. 第五个知识点 复杂性为NP类是什么意思

    第五个知识点 复杂性为NP类是什么意思 原文地址:http://bristolcrypto.blogspot.com/2014/11/52-things-number-5-what-is-meant- ...

  10. vue中使用JSX报错,如何解决

    Support for the experimental syntax 'jsx' isn't currently enabled (32:12): 30 | }, 31 | render() { & ...