USB协议详解第2讲(协议核心学习要点)

news/2024/11/15 21:43:07/文章来源:https://www.cnblogs.com/linhaostudy/p/18352921

USB协议详解第2讲(协议核心学习要点)

看了这么多概念,想必大家会问“我要学会USB协议,并且会编程,我具体要学习那些有关的内容?”,这一篇我们将会讲解在学习USB协议中务必要掌握的知识点,罗列如下(后期文章逐一攻克):

(1)USB描述符

(2)USB传输

(3)USB事务

(4)USB包(☆☆☆☆☆)

(5)USB枚举

(1)USB描述符

大家一定要知道,所有USB描述符都是存储在USB设备中的。USB描述符有设备描述符配置描述符接口描述符端点描述符字符串描述符,HID类设备会多出HID描述符报告描述符物理描述符三种描述符,描述符架构如下图。我们需要深入学习每一种描述符的数据结构及作用,并且要知道它在代码里面是如何实现的,后期我们在学习对应描述符的时候会带着大家分析STM32、ZYNQ 7000两个硬件平台的USB对应设备代码实现,这样结合实战,大家对理论学习更为深入。

(2)USB传输

USB传输分为控制传输、同步传输、批量传输、中断传输四种,其中批量传输、同步传输每次传输需要一个或多个事务,中断传输一次需要一个事务,控制传输包括三个过程(建立过程、数据过程、状态过程),建立过程和状态过程分别需要一个事务数据过程则可能包含0个多个事务。看实例协议分析,要知道transfer是传输transaction为事务。

1.批量传输(由一个事务组成)

2.同步传输(由一个事务组成)

3.中断传输(由一个事务组成)

4.控制传输(建立过程和状态过程由1个事务组成,数据过程由0个或者多个事务组成)

我们可以看下面这张图,控制传输有三种类型,控制写传输、控制读传输、无数据的控制传输三种。控制写传输和控制读传输数据阶段是根据传输情况可有可无,无数据控制传输无数据阶段。

控制写传输:

控制写传输:

控制读传输:

无数据控制传输:

(3)USB事务

事务*通常*由两三个包组成:令牌包数据包握手包。为什么说是通常呢?因为有一个特例同步传输的事务中没有握手包,只有令牌包和数据包。事务就是完成一件事的意思,完成一个事务需要发送或者接受几包数据。

(4)USB包(☆☆☆☆☆)

USB包(packet)是学习USB协议中最最最重要的东西,包(packet)是USB传输的最小单位,所有的东西都是组织成包(packet)发送出去的,再次强调,USB包是学习USB协议中最最最重要的东西。下面这张图为包的组成结构,由SOP、SYNC、Packet Content、EOP四部分组成,其中Packet Content最为核心,Packet Content由PID、地址、帧号、数据、CRC组成。后面会一一讲解。

(5)USB枚举

通过学习枚举,我们可以了解描述符、传输、事务、包在USB协议中充当的作用以及USB的工作原理,后期会讲解。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

雷达气象学(9)——反射率因子图分析(强对流篇)

目录9.0 对流性天气的分类9.1 钩状回波9.2 云顶上冲9.3 悬垂状回波9.4 弱回波区(WER)和有界弱回波区(BWER)9.5 回波墙9.6 V型缺口9.7 旁瓣回波9.8 下击暴流和阵风锋9.9 三体散射回波(TBSS)9.10 弓形回波 9.0 对流性天气的分类 按照对流风暴的强度分类有两种: \[对流风暴…

stable-diffusion-webui-1.10.0 安装

1. 下载 webui 源码 地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui clone 或者下载压缩包解压。2. 启动 双击 stable-diffusion-webui-1.10.0\webui-user.bat 文件会下载 pytorch,下载速度很慢,可以复制链接 https://download.pytorch.org/whl/cu121/torch…

整数规划

在人们的生产实践中,经常会遇到以下问题:汽车企业在制订生产计划时,要求所生产的不同类型的汽车数量必须为整数:用人单位在招聘员工时,要求所招聘的不同技术水平的员工数量必须为整数;等等。我们把要求一部分或全部决策变量必须取整数值的规划问题称为整数规划(Integer Program…

CUDA入门必看,如何高效地编写并行程序

CUDA的研发以及在当下的流行,从始至终都在完成提升性能这一件事。从这一套学习方案中,你会时刻感受到性能指标在编写CUDA程序中所占据的考量有多重。因此要编写出更加成熟的kernel程序,可以跟着我梳理出的学习流程一步一步掌握基础知识,侧重于对性能指标的提升,将CUDA最开…

015.Vue3入门,表单输入绑定,以及lazy延时回车才显示

1、代码如下<template><h3>表单输入绑定</h3><form><!-- 编辑框内容变化时候,下面标签同步显示编辑框内容--><input type="text" v-model:="username"><P>{{ username }}</P><!-- 编辑框内容变…

go Hello World

安装 参考 Windows上安装 Go 环境并配置环境变量 (超详细教程) 安装过程 在 https://golang.google.cn/dl/ 下载对应的安装包 添加环境变量GOROOT : go 跟目录,并将bin目录添加到 PATH 执行如下命令 #开启mod模式(项目管理需要用到) go env -w GO111MODULE=on #重新设置成七…

USB协议详解第1讲(核心概念通俗理解)

0.概括 USB协议学习中最重要几个概念如下,没有提及的就是对USB协议学习中不重要的或者编程不需要用到的。大家也不用着急,概念必须要学会,否则都不知道下面这些东西是什么还学什么通用串行总线协议,大家也不用怕,其实也没有那么高深莫测。 1.USB传输(Transfer) 2.USB传输…

java流程控制:用户交互Scanner

1.首先输入new Scanner 然后Alt+回车 建立一个扫描器2.选择使用next方式或者nextLine方式进行接收3.使用if判断用户是否输入字符串,有hasNext和hasNextLine两种4.定义一个变量为next或nextLine方式5.输出该方式6.关闭IO类,防止占用资源next和nextLine方式的区别 next方式在输…

014.Vue3入门,style属性的几种绑定方法

1、代码如下:<template><div :style="{color:activeColor,fontSize:fontsize+px}">Style绑定1</div><div :style="styleObject">Style绑定2</div><div :style="[styleObject]">Style绑定3</div> <…

ABC366

A [link](https://atcoder.jp/contests/abc366/tasks/abc366_a]判断一下少的那个人加上剩下的所有票是否会超过另一个人,如果超过,不确定,否则目前票多的必胜。神奇的代码 #include<bits/stdc++.h>using namespace std;signed main(){int n,a,b;cin >> n >&g…

012.Vue3入门,class属性的几种绑定方法

1、代码如下:<template><h3>class绑定</h3><div :class="{ active:isActive , text-danger:hasError }">Class样式绑定1</div><div :class="classObject">Class样式绑定2</div><div :class="[arrActiv…