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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/983999.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI 人工智能深度解析:从基础到前沿,全面掌握未来科技

AI 人工智能深度解析:从基础到前沿,全面掌握未来科技 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 文章目录 AI 人工智能深度解析…

2025-03-09 学习记录--C/C++-PTA 习题11-1 输出月份英文名

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 裁判测试程序样例&#xff1a; #include <stdio.h>char *getmonth( int n );int main() {int n;char …

【音视频 | AAC】AAC编码库faac介绍、使用步骤、例子代码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

macos 程序 运行

sudo xattr -r -d com.apple.quarantine [/Applications/Name]使用stow 管理配置文件

JavaWeb后端基础(7)AOP

AOP是Spring框架的核心之一&#xff0c;那什么是AOP&#xff1f;AOP&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程、面向方面编程&#xff09;&#xff0c;其实说白了&#xff0c;面向切面编程就是面向特定方法编程。AOP是一种思想&#xff0c;而在Spring框…

STM32驱动OLED屏幕全解析:从原理到温度显示实战(上) | 零基础入门STM32第五十三步

主题内容教学目的/扩展视频OLED显示屏重点课程电路原理&#xff0c;手册分析&#xff0c;驱动程序。初始化&#xff0c;清屏&#xff0c;ASCII字库&#xff0c;显示分区。调用显示函数。做带有加入图形和汉字显示的RTC时钟界面。讲字库的设计原理。 师从洋桃电子&#xff0c;杜…

基于YOLO11深度学习的运动品牌LOGO检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

ctfshow做题笔记—栈溢出—pwn65~pwn68

目录 前言 一、pwn65(你是一个好人) 二、pwn66(简单的shellcode&#xff1f;不对劲&#xff0c;十分得有十二分的不对劲) 三、pwn67(32bit nop sled)&#xff08;确实不会&#xff09; 四、pwn68(64bit nop sled) 前言 做起来比较吃力哈哈&#xff0c;自己还是太菜了&…

【新手指南】pyqt可视化远程部署deepseek7B蒸馏版模型

本地效果&#xff1a;&#xff08;如果想做这个的本科毕设&#xff0c;建议美化界面。&#xff09; 总结&#xff1a;MobaXterm远程连接autodl服务器&#xff0c;在MobaXterm上利用X11转发使pyqt可视化页面在自己的电脑上展现出来。 1. 官网下载MobaXterm MobaXterm free Xse…

SpringBoot(一)--搭建架构5种方法

目录 一、⭐Idea从spring官网下载打开 2021版本idea 1.打开创建项目 2.修改pom.xml文件里的版本号 2017版本idea 二、从spring官网下载再用idea打开 三、Idea从阿里云的官网下载打开 ​编辑 四、Maven项目改造成springboot项目 五、从阿里云官网下载再用idea打开 Spri…

DeepSeek×博云AIOS:突破算力桎梏,开启AI普惠新纪元

背景 在全球人工智能技术高速迭代的背景下&#xff0c;算力成本高企、异构资源适配复杂、模型部署效率低下等问题&#xff0c;始终是制约企业AI规模化应用的关键。 DeepSeek以创新技术直击产业痛点&#xff0c;而博云先进算力管理平台AIOS的全面适配&#xff0c;则为这一技术…

JVM垃圾回收面试题及原理

1. 对象什么时候可以被垃圾器回收 如果一个或多个对象没有任何的引用指向它了&#xff0c;那么这个对象现在就是垃圾&#xff0c;如果定位了垃圾&#xff0c;则有可能会被垃圾回收器回收 如果要定位什么是垃圾&#xff0c;有两种方式来确定 引用计数法可达性分析算法 1.1 …

计算机视觉算法实战——老虎个体识别(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​ 1. 领域介绍 老虎个体识别是计算机视觉中的一个重要应用领域&#xff0c;旨在通过分析老虎的独特条纹图案&#xff0c;自动识别和区…

[Kubernetes] 7控制平面组件

1. 调度 kube- scheduler what 负责分配调度pod到集群节点监听kube-apiserver,查询未分配node的pod根据调度策略分配这些pod&#xff08;更新pod的nodename&#xff09;需要考虑的因素&#xff1a; 公平调度&#xff0c;资源有效利用&#xff0c;QoS&#xff0c;affinity, an…

AI赋能Python零代码编程知识技能体系构架

欢迎大家订阅本专栏&#xff0c;下面我先介绍一下本专栏模块结构与知识技能体系。 以下是为您设计的《AI赋能Python零代码编程》专栏目录框架及内容建议&#xff0c;每个方向均包含系列文章规划&#xff1a; 模块一&#xff1a;开发环境搭建 手把手搭建Python全栈开发环境 A…

基于AMD AU15P FPGA的SLVS-EC桥PCIe设计方案分享

作者&#xff1a;Hello,Panda 各位FPGAer周末愉快&#xff0c;今天熊猫君分享一个基于AMD AU15P FPGA的SLVS-EC桥PCIe设计方案。 一、方案背景 先说方案的应用背景&#xff1a;众所周知&#xff0c;较为上层的如基于AI的机器视觉应用&#xff0c;大多基于高端的专用SoC、AI专…

二叉树-二叉树的右视图

二叉树的右视图 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。输入&#xff1a;二叉树的根结点 输出&#xff1a;整型列表 思路&#xff1a;使用层序遍历&#xff0c;建立二元列…

【C++】vector(下):vector类的模拟实现(含迭代器失效问题)

文章目录 前言一、vector类的常用接口的模拟实现1.头文件&#xff08;my vector.h&#xff09;整体框架2.模拟实现vector类对象的常见构造3.模拟实现vector iterator4.模拟实现vector类对象的容量操作5.模拟实现vector类对象的访问6.模拟实现vector类对象的修改操作 二、vector…

抽奖系统测试报告

项目链接: 管理员登录页面 项目功能: 管理员登录: 登录方式分为两种: 手机号密码登录: 正确输入密码和手机号登录 短信验证码登录: 输入手机号,等待验证码,输入验证码登录 管理员注册: 登录页面点击注册按钮即可注册管理员身份 人员管理模块: 人员管理模块分为注册…

理解梯度下降、链式法则、梯度消失/爆炸

第一章&#xff1a;人工智能之不同数据类型及其特点梳理 第二章&#xff1a;自然语言处理(NLP)&#xff1a;文本向量化从文字到数字的原理 第三章&#xff1a;循环神经网络RNN&#xff1a;理解 RNN的工作机制与应用场景(附代码) 第四章&#xff1a;循环神经网络RNN、LSTM以及GR…