USB2.0 学习(1)字段和包

server/2025/3/11 6:03:12/

目录

1 字段

1.1 包识别字段PID

1.2 地址字段

1.3帧号字段

1.4 数据字段

1.5 CRC字段

2 包

2.1令牌包

2.2帧起始包

2.3数据包

2.4SPLIT包(分割事务包)

2.5握手包

参考


USB包的构成是一个逐层的过程,首先这些串行数据按照特定的规则构成字段,字段是构成包的基本单元,字段按照一定的顺序可以组成包,进而多个包可以组成事务,最终多个事务组成一个传输。代表一个完整的数据传输。

1 字段

所有包都有开始(SOP)和结束(EOP)界定符,开始界定符(SOP)与包之间是SYNC字段。输入电路使用SYNC字段来将输入数据与本地时钟对齐,SYNC字段中最后两位用来标记SYNC字段的结束,并通过推断识别PID的开始。对应如下。

SOPSYNCPACKETEOP

1.1 包识别字段PID

  •  每个USB包的SYNC字段后紧跟一个PID
  • PID由一个四位包类型字段和一个四位校验字段组成
  • PID的四位校验字段是通过对包类型字段进行补码生成的,若与包类型字段不是补码关系则发生PID错误
  • 主机和所有功能必须对所有接收到的PID字段进行完整解码,若接收到的PID错误,接收器丢弃整个包
  • 如果功能收到了一个不支持的事务类型或方向的有效PID,则该功能不得回应。
  • PID分为四个编码组:令牌、数据、握手和特殊
  • 传输的前两位PID位(PID[0:1])指示编码组

1.2 地址字段

地址字段有两部分组成:功能地址字段(ADDR)和端点字段(EP)。如果包的地址字段与设备端点不匹配则必须忽略这个包。

功能地址字段ADDR

  • ADDR字段通过其地址指定功能,根据令牌PID的值,功能可能是包的源或者目的。
  • ADDR[6:0]指定了128个地址
  • ADDR字段用于IN、SETUP、OUT令牌以及PING和SPLIT特殊令牌
  • 每一个单独的功能都会有一个ADDR值,这意味着会有多个端点共享一个ADDR值,这意味着可能会有多个端点共享一个ADDR
  • 复位和上电时,ADDR默认为0,必须在枚举的过程中由主机进行分配
  • ADDR0被保留作为默认地址,不能分配给其他用途

端点字段

  • 附加的4位端点字段,允许在多端点的功能中更加灵活的寻址
  • 除了端点0外,其他端点地址是根据功能的端点来定义的
  • 端点字段定义了用于IN、SETUP、和OUT令牌以及PING特殊令牌
  • 所有功能必须支持端点地址为0的默认控制管道
  • 低速设备每个功能最多支持3个端点:端点编号为0的控制管道以及另外两个端点

额外的两个端点可以作为

  1. 两个控制管道
  2. 一个控制管道和一个中断端点
  3. 两个中断管道
  • 全速和高速功能可以支持最多16个IN和OUT端点(16组端点)

1.3帧号字段

  • USB帧的概念是用于组织和标记数据传输的时间间隔,帧号就是用来标识这些帧的序号,一个帧内可以包含一个或多个包
  • 在USB的SOF包中,帧号字段位于SOP、SY

http://www.ppmy.cn/server/174112.html

相关文章

常见webshell流量特征---菜刀/蚁剑/冰蝎/哥斯拉

前言 识别常见Webshell流量的特征,可帮助我们识别攻击者采取何种webshell工具,以及上传了什么类型的webshell,以下是一些常见的webshell流量特征。 中国菜刀 中国菜刀简介 菜刀主流版本主要是2011版、2014版、2016版。从2011版本到2014版…

Deepseek可以通过多种方式帮助CAD加速工作

自动化操作:通过Deepseek的AI能力,可以编写脚本来自动化重复性任务。例如,使用Python脚本调用Deepseek API,在CAD中实现自动化操作。 插件开发:结合Deepseek进行二次开发,可以创建自定义的CAD插件。例如&a…

ESP8266UDP透传

1. 配置 WiFi 模式 ATCWMODE3 // softAPstation mode 响应 : OK 2. PC 连⼊入 ESP8266 softAP 就是连接wifi 3.查询ESP8266设备的IP地址 ATCIFSR 响应: CIFSR: APIP, "192.168.4.1" CIFSR: APMAC, "1a: fe: 34: a5:8d: c6" CIFSR: STAIP, "192.…

Python之PyQt5基础生成前端窗口

PyQt5之生成前端窗口 目录 PyQt5之生成前端窗口1 PyQt51.1 概念1.2 PyQt5 的特点1.3 安装1.4 Qt Designer 设计界面 2 Qt Designer 设计界面介绍2.1 创建2.2 常用框介绍2.3 常用设置介绍2.4 信号槽连接函数 3 代码显示桌面 1 PyQt5 1.1 概念 PyQt5 是一个用于创建图形用户界面…

python办公自动化笔记

一、对文件操作 open() 这是python中内置的打开和创建文件的函数。 第一个参数是文件的路径,第二个参数是模式,默认是 “r”,表示读模式。 “w” 表示写模式 “a” 表示追加模式 “b” 模式表示这是二进制文件(如图片、.exe文件…

slf4j和log4j的区别与使用

slf4j和log4j的区别与使用 文章目录 1.简介2.使用教程3.常见报错解决(持续更新) 1.简介 官网:https://www.slf4j.org/manual.html (1)简单日记门面(simple logging Facade for Java)SLF4J是为各种loging APIs提供一个简单统一的接口。 (…

repo访问gerrit.googlesource失败

编译openharmony的时候,repo阶段碰到一个问题,建议不要通过 apt install安装,里面的源来自google curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/repo chmod 755 ~/repo 执行类似这样的操作 repo init -u gitgitee.com:…

【清华大学】实用DeepSeek赋能家庭教育 56页PDF文档完整版

清华大学-56页:实用DeepSeek赋能家庭教育.pdf https://pan.baidu.com/s/1BUweVDeG2M8-t0QaIs3LHQ?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/8a9473493bb0 《实用DeepSeek赋能家庭教育》基于清华大学研究成果,系统阐述了DeepSeek人工智能技…