当前位置: 首页 > news >正文

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

目录

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的开始。对应如下。

SOP SYNC PACKET EOP

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.dtcms.com/a/59852.html

相关文章:

  • 游戏官方网站:pc页面与移动端布局做到响应式的因素
  • 点云从入门到精通技术详解100篇-基于深度学习的三维点云分类分割
  • Spring Boot 调用DeepSeek API的详细教程
  • Python Flask 使用不同的 HTTP 方法类型处理请求
  • Maxkb——无需代码,快速构建自己的AI助手
  • DeepSeek写重力球迷宫手机小游戏
  • SGM: Sequence Generation Model for Multi-Label Classification
  • C++【类和对象】
  • neo4j随笔-将csv文件导入知识图谱
  • 正则表达式(3)常见的正则表达式及语法明细
  • 物联网-IoTivity:开源的物联网框架
  • 【从0到1搞懂大模型】神经网络的实现:数据策略、模型调优与评估体系(3)
  • MySQL 表的字段数量和单行存储容量受存储引擎、数据类型、行结构等多因素限制
  • Vue使用jsts,将wkt转为geojson
  • 爬虫案例十一js逆向数位观察网
  • Pytorch 第九回:卷积神经网络——ResNet模型
  • 【leetcode100】组合总和Ⅱ
  • 清华大学08-使用DeepSeek赋能家庭教育【文末附下载地址】
  • Python绘制数据分析中经典的图形--列线图
  • 【接口负载】✈️整合 Resilience4j 指定接口负载,避免过载
  • 蓝牙4.0BLE协议栈中串口应用详解
  • [HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(1)知识基础
  • Ollama在AutoDL部署,CPU服务器做代理,实践中
  • 基于SpringBoot的智能问诊系统设计与隐私保护策略
  • ChatGPT使用经验分享
  • Android MVC、MVP、MVVM三种架构的介绍和使用。
  • 蓝桥杯 C++ b组 积木画深度解析
  • 【算法day4】最长回文子串——动态规划方法
  • JAVA通过SSE实现消息推送
  • 【Elasticsearch入门到落地】9、hotel数据结构分析