USB协议精读

news2025/2/26 2:30:39

1.1.枚举

1.1.1.上电连接过程

1.1.2.设备识别过程

1.1.3.枚举过程

1.1.3.1.获取设备描述符(只关注设备描述符中最大数据包长度)

1.1.3.2.设置设备针对主机的唯一从机地址

1.1.3.3.获取完整设备描述符

1.1.3.4.获取配置描述符

  • 先获取标准配置描述符(主要获取配置描述符集合长度属性根据其获取配置描述符集合)

  • 获取配置描述符集合

    • 标准配置描述符

    • 接口描述符

    • 端点描述符

    • 如为HID设备

      • HID描述符

      • 报告描述符

      • 物理描述符

1.1.3.5.获取字符串描述符

1.2.传输

1.2.1.事务

1.2.1.1.事务的组成

  • 令牌包(以SETUP令牌包为例)

  • 数据包(以控制传输中SETUP设置阶段DATA0为例)

  • 握手包(以ACK为例)同步传输下的事务没有握手包

1.2.1.2.事务分类(以控制传输为例)

  • SETUP事务

  • DATA IN事务

  • DATA OUT事务

1.2.2.传输分类

1.2.2.1.控制传输:

  • 第一阶段:设置阶段(一个SETUP事务)

  • 第二阶段:可选有或没有的数据阶段(0个或者多个IN/OUT事务)

  • 第三阶段:状态阶段(一个IN/OUT事务)

1.2.2.2.同步传输

  • 1个或多个IN/OUT事务

1.2.2.3.批量传输:传输图像

  • 1个或多个IN/OUT事务

1.2.2.4.中断传输:传输IMU数据

  • 1个IN/OUT事务

1.2.3.数据包同步与重传机制

1.2.3.1.正确数据传输同步原理

  • 初始在发送数据之前,假设主机和设备状态都是0。

  • 主机会根据当前状态先发送DATA0类型数据包给设备,当设备正确收到数据包后会对自己的状态进行反转(变为1),并给主机发送应答数据包,当主机正确接收到应答包后会对自己的状态进行反转(变为1)

  • 如果还需要发送数据包,则主机会发送DATA1类型的数据包(根据自己的当前状态为1决定的),当设备收到正确收到数据包后会进行对自己的状态进行反转(变为0),并给主机发送应答数据包,当主机正确接收到应答包后会对自己的状态进行反转(变为0)。

1.2.3.2.数据被破坏的传输原理(重传机制)

  • 初始在发送数据之前,假设主机和设备状态都是0。

  • 机制就是初始在发送数据之前,主机和设备状态都是0,主机会先发送DATA0类型数据包给设备,当设备发现数据存在问题后不会对自己的状态进行切换,并给主机发送非应答数据包,当主机接收到非应答数据包后,不会对自己的状态进行切换。

  • 主机会在适当的时刻对DATA0数据包进行重传(Retry),直到设备接收正常,设备发现数据包正常了会把自己的状态进行反转,并返回应答数据包,主机在收到应答包后会反转自己的状态。

1.2.3.3.应答包故障的传输原理

  • 初始在发送数据之前,假设主机和设备状态都是0。

  • 主机会先发送DATAO类型数据包给设备,当设备正确收到数据包后会进行对自己的状态进行反转为1,并给主机发送应答数据包,但是,但是应答包在链路上出故障了,怎么办?当主机收到一个校验有问题应答包,主机不会对自己的状态进行反转,主机该怎么办?往

  • 主机会在合适的时间对DATA0数据包进行重发,但是当前设备的状态是1,因此设备会忽略该数据包并保持现在的状态,然后设备会给主机重新在发送一次应答包,当主机正确收到设备的应答包后对自己的状态进行反转。

  • 当还需要发送数据包时,主机会根据自己当前的状态(假设为1),会发送DATA1数据包,设备在正确收到DATA1数据包后,会对自己的状态进行反转,并给主机发送应答数据包,当主机正确接收到应答包后会对自己的状态进行反转。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于replace()字符串截取的思考

使用replace方法获取组装所需字符串: 总结: 以上方法可用于获取文件名、获取获取文件后缀、组装自己想要的字符串

为Windows Terminal设置背景图片

直接通过界面上选项无法达到修改背景图片的目的,后再在官网,和git上找到通过修改配置文件来更改背景图片 首先打开设置界面 点击左下角打开settings.json文件 在json中profiles关键字default选项相面增加几个key,就像下面 修改前修改后 修改后的termin…

【问题记录】antd icons报rev属性缺失错误

闲来无事将项目中的antd从v4升级到了v5&#xff0c;之前正常的页面中如有图标&#xff0c;如<PlusOutlined />&#xff0c;总是报以下错误&#xff1a; TS2741: Property rev is missing in type {} but required in type Pick<AntdIconProps, "name" …

Games101学习笔记2

参考博客&#xff1a;GAMES101 梳理 / 个人向图形学笔记_games101笔记_river_of_sebajun的博客-CSDN博客 lecture 05 Rasterization 1(Triangles) 光栅化 把东西画在屏幕上的过程就是光栅化的过程 视口变换 为什么模型用三角形&#xff1f; 最基本的几何平面&#xff1b;保…

虹科Pico技术交流会 | 广州站圆满成功,免拆诊断汽修之旅启程成都!

全国巡回 / 技术交流 / 以技会友 成都&#xff1a;2023.9.2~9.3 主办单位 广州虹科电子科技有限公司 Tech Gear 免拆诊断学院 支持单位 英国Pico Technology Ltd. 上周末&#xff08;8月5、6号&#xff09;虹科Pico汽车示波器技术交流会在广州圆满举办&#xff01;在本次…

PPSLick.js-个人/初始团队的网站基础弹窗组件库,快速创建登录、注册、搜索、联系我和订阅等弹窗组件,无需写html+css

PPSlick 个人/初始团队的网站基础弹窗组件库 一个javascript组件库&#xff0c;提供基本的联系我、登录、注册、搜索和邮件订阅之类的弹窗组件&#xff08;无需写htmlcss&#xff09;&#xff0c;拿来即用 使用参考 1、搜索组件&#xff0c;参考testsearch.html //创建一个搜…

合并两个有序链表 题解

题目描述&#xff1a;21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 题解思路&#xff1a; 创建一个新的链表&#xff0c;并将头节点设置为 newHead&#xf…

合成数据平台:释放结构化数据的生成式 AI 的力量

推荐&#xff1a;使用 NSDT场景编辑器 快速助你搭建可二次编辑的3D应用场景 创建机器学习或深度学习模型非常简单。如今&#xff0c;有不同的工具和平台不仅可以自动化创建模型的整个过程&#xff0c;甚至可以帮助您为特定数据集选择最佳模型。 通过创建模型解决问题所需的基本…

Linux系列:从0到1用Docker部署springboot项目

目录 1.前提条件 2.编写DockerFile镜像文件 3.打包SpringBoot项目 4.通过软件Xftp进行传输&#xff08;*&#xff09; 1.点击“文件-新建”​编辑 5.操作远程主机 1.docker构建 2.容器运行 6.容器的关闭和删除 1.前提条件 Linux、docker、xftp的安装、一台可以访问的远…

2023年“云舟杯”视频孪生演讲大赛总决赛完美收官

8月4日&#xff0c;智汇云舟举办的2023年“云舟杯”视频孪生演讲大赛总决赛以直播形式完美收官。来自全国近200家合作伙伴代表齐聚线上&#xff0c;共同观摩比赛。在巅峰之战中&#xff0c;参赛学员们充分展示了各自对行业数字化转型的敏锐洞察、对智汇云舟视频孪生技术与产品的…

Fortinet数据中心防火墙及服务ROI超300%!Forrester TEI研究发布

近日&#xff0c;专注网络与安全融合的全球网络安全领导者 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;联合全球知名分析机构Forrester发布总体经济影响独立分析报告&#xff0c;详细阐述了在企业数据中心部署 FortiGate 下一代防火墙&#xff08;NGFW&#xff09…

从黑马程序员电商视觉设计上半年就业数据,看当下数字产业人才需求热点

近期&#xff0c;老牌数字化人才培训机构传智教育旗下的高端IT教育品牌——黑马程序员发布了2023上半年电商视觉设计学科的就业数据&#xff0c;班级平均就业率92%&#xff0c;一线城市平均月薪9161元&#xff0c;所有毕业生平均月薪8969元。 电商视觉设计行业热度高&#xff0…

Git (2)

文章目录 1. 删除文件2. 分支管理2.1 理解分支2.2 分支创建 &#xff0c; 分支切换2.3 分支合并2.4 删除分支2.5 合并冲突2.6 合并模式2.7 分支策略2.8 bug 分支2.9 强制删除分支 3. 远程操作3.1 创建远程仓库3.2 克隆远程仓库3.3 推送3.4 拉取3.5 gitignore 文件3.6 配置别名 …

Android侧滑栏(一)可缩放可一起移动的侧滑栏

在实际的各类App开发中&#xff0c;经常会需要做一个左侧的侧滑栏&#xff0c;类似于QQ这种。 今天这篇文章总结下自己在开发中遇到的这类可以跟随移动且可以缩放的侧滑栏。 一、实现原理 使用 HorizontalScrollView 实现一个水平方向的可滑动的View&#xff0c;左布局为侧滑…

为c语言安装easyx图形库

按照图上的步骤&#xff0c;安装easyx图形库。 接下来看代码&#xff1a; #include<easyx.h> #include<stdio.h> #define width 800 #define height 600int main() {initgraph(width, height); // 初始化窗口&#xff08;宽度&#xff0c; 高度&#xff09;…

OpenHarmony社区运营报告(2023年7月)

本月快讯 • 2023年7月28日-29日&#xff0c;全球软件质量&效能大会&#xff08;简称“QECon”&#xff09;圆满举行&#xff0c;OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&#xff09;以“优质高效测试助力OpenHarmony北向应用生态赋能”为主题&#xff0c;以…

Java项目作业~ 通过html+Servlet+MyBatis,完成站点信息的添加功能

需求&#xff1a; 通过htmlServletMyBatis&#xff0c;完成站点信息的添加功能。 以下是站点表的建表语句&#xff1a; CREATE TABLE websites (id int(11) NOT NULL AUTO_INCREMENT,name char(20) NOT NULL DEFAULT COMMENT 站点名称,url varchar(255) NOT NULL DEFAULT ,…

目标识别模型两种部署形态图

目标检测预训练模型基于新数据进行微调&#xff08;训练&#xff09;之后&#xff0c;得到一个权重文件。 在日常工业、车载等需求环境下&#xff0c;需要在嵌入式移动端的软件系统中调用该模型文件进行推断测试&#xff0c;软件系统追求性能经常使用C/C进行编码实现&#xff…

Apipost接口自动化中关联关系如何配置

在接口自动化测试中&#xff0c;接口之间可能存在依赖关系&#xff0c;即某些接口的执行需要先完成其他接口的执行。为了确保测试用例的正确执行&#xff0c;我们需要在配置测试用例时考虑接口之间的依赖关系。在编写测试用例时&#xff0c;需要明确每个接口的功能和输入输出参…

注册亚马逊买家账号需要什么资料

注册亚马逊买家账号通常需要以下基本资料&#xff1a; 1、邮箱&#xff1a;您需要一个有效的邮箱&#xff0c;用于注册账号和接收与账户相关的通知。 2、密码&#xff1a;选择一个安全的密码&#xff0c;以确保您的账号信息安全。 3、姓名&#xff1a;提供您的全名或常用的姓…