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的工作原理,后期会讲解。

USB协议详解第2讲(协议核心学习要点)的更多相关文章

  1. SSL/TLS协议详解(下)——TLS握手协议

    本文转载自SSL/TLS协议详解(下)--TLS握手协议 导语 在博客系列的第2部分中,对证书颁发机构进行了深入的讨论.在这篇文章中,将会探索整个SSL/TLS握手过程,在此之前,先简述下最后这块内容 ...

  2. Telnet协议详解(远程登陆协议)

    1. 概述 Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议.Telnet协议的目的是提供一个相对通用的,双向的,面向八位字节的通信方法,允许界面终端设备和面向终 ...

  3. linux高性能服务器编程 (三) --TCP协议详解

    第三章 IP协议详解 TCP协议是TCP/IP协议族中的另外一个重要的协议,与IP协议相比,TCP协议更高进应用层.一些重要的socket选项都和TCP协议相关.这一章主要从如下方面学习: 1)TCP ...

  4. TCP协议详解

    TCP协议详解 一.TCP协议 1.TCP 通过以下方式提供可靠性: ·  ◆ 应用程序分割为TCP认为最合适发送的数据块.由TCP传递给IP的信息单位叫做报文段. ·  ◆ 当TCP发出一个报文段后 ...

  5. 转 OAuth 2.0授权协议详解

    http://www.jb51.net/article/54948.htm 作者:阮一峰 字体:[增加 减小] 类型:转载 时间:2014-09-10我要评论 这篇文章主要介绍了OAuth 2.0授权 ...

  6. bt协议详解 DHT篇(上)

    bt协议详解 DHT篇(上) 最近开发了一个免费教程的网站,突然产生了仔细了解bt协议的想法,这篇文章是bt协议详解系列的第三篇,后续还会写一些关于搜索和索引的东西,都是在开发这个网站的过程中学习到的 ...

  7. 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  8. HTTP协议详解以及URL具体访问过程

    1.简介 1.1.HTTP协议是什么? 即超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准.从 ...

  9. (转)HTTP 协议详解(基础)

    HTTP 协议详解 作者: 小坦克  来源: 博客园  发布时间: 2012-02-14 13:32  阅读: 95523 次  推荐: 99   原文链接   [收藏]   相关文章:HTTP 协议 ...

  10. Java web 入门知识 及HTTP协议详解

     Java  web  入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...

随机推荐

  1. RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anything-LLM,以及更多推荐

    RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB.Dify.FastGPT.RagFlow.Anything-LLM,以及更多推荐 1.MaxKB MaxKB = Max Kn ...

  2. Python+selenium编写第一个UI自动化脚本

    python UI自动化前提:①python需要安装selenium模块  ②下载浏览器驱动 1.安装selenium模块 先确认本地是否安装selenium模块,没有的话点击右边的添加按钮" ...

  3. AI的发展需要有应用和落地场景 —— 李开复:传统公司看不懂技术,大模型落地B端阻碍多

    引自:https://baijiahao.baidu.com/s?id=1801826206644007472&wfr=spider&for=pc "我们投了七八家机器人企业 ...

  4. gpg 密钥的导入、导出

    参考: gpg 密钥生成.导入.导出.自动输入密码 How do I delete secret subkeys correctly? 注意: 本文不对GPG的操作做详细介绍,有深入了解者自行参考:g ...

  5. configure: error: Can't find GL/gl.h. Look for Mesa devel packages for your distro.

    1. 安装文件查询工具 sudo apt install plocate 2. 查询头文件地址,shell命令: locate GL/gl.h 3. 为编译时指定其他的头文件查询地址: export ...

  6. linux终端如何加上时间,添加时间戳到终端提示?

    方法: 在 .bashrc 文件中加入: export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\\] " 这样便可以在每次输入命令 ...

  7. mybatis-plus系统化学习之查询专题

    1.背景 查询在实际生产中用得最多,也最灵活. 2.查询案例 表结构: CREATE TABLE `sys_user` ( `id` int(32) NOT NULL AUTO_INCREMENT C ...

  8. Linux的netns使用总结

    转载请注明出处: Linux的netns(Network Namespace)是Linux内核提供的一项强大的网络隔离功能,它能够创建多个独立的网络空间,每个空间都拥有自己独立的网络协议栈,包括网络接 ...

  9. 手把手教你掌握SeaTunnel k8s运行Zeta引擎本地模式的技巧

    转载自小虾米0.0 导读:随着Kubernetes的普及和发展,越来越多的企业和团队开始使用Kubernetes来管理和部署应用程序.然而,Kubernetes的默认工作方式可能不是最佳的选择,尤其是 ...

  10. .NET 8 中利用 MediatR 实现高效消息传递

    前言 MediatR 是 .NET 下的一个实现消息传递的库,轻量级.简洁高效,用于实现进程内的消息传递机制.它基于中介者设计模式,支持请求/响应.命令.查询.通知和事件等多种消息传递模式.通过泛型支 ...