首页 > 其他分享 >USB概述

USB概述

时间:2023-09-02 09:12:03浏览次数:32  
标签:事务 USB 批量 传输 描述符 概述 设备

USB概述

读《圈圈教你玩USB 第二版》,笔记。

USB

USB——Universal Serial Bus 通用串行总线

出现目的:简化个人计算机与外围设备连接,支持热插拔。

特点

协议 速度
USB1.0 1.5Mb/s低速 / 12Mb/s全速
USB1.0 1.5Mb/s低速 / 12Mb/s全速
USB2.0 1.5Mb/s低速 / 12Mb/s全速 / 480Mb/s高速

USB的开发难度大,调试难度大,传输的距离短。

USB的开发者网站:

www.usb.org

image-20230901110103436

USB logo

image-20230901110134029

拓扑结构

image-20230901111731727

插入检测

image-20230901111954399

描述符

描述符

image-20230901112336746

设备描述符

image-20230902080451603

image-20230902080511605

USB设备的枚举过程

枚举过程是调试USB的重要一环。枚举就是主机从设备读取各种描述符信息,通过这些信息来加载合适的驱动程序,从而知道设备是什么类型的,如何进行通信等。

枚举过程:

  1. 主机对设备复位,获取设备描述符。

  2. 主机对设备复位,设置设备地址。

  3. 主机对设备复位,获取新的设备描述符。

  4. 主句获取配置描述符。

USB包结构和传输过程

USB是串行总线,LSB方式传输。即先出来的是数据的最低位,最后是最高位。

USB总线数据要经过位填充,接着经过NRZI编码,才能输出到总线上。下面说的码没有说明都是位填充码,即NRZI编码前的数据。

一个USB的包,被分为了多个域(field),域的开头和结尾分别为LSB和MSB。

在传输数据时,USB主机到设备的数据称为输出,设备到主机的数据称为输入。(主体为USB主机)

域的共同点:以同步域开始,紧跟一个包标识符PID(Packet Idetifier),最终以包结束符结束。

同步域

同步域分类

设备 同步域码
全速/低速设备 00000001(8bit 2进制)
高速设备 00000000 00000000 00000000 00000001(32bit 2进制)

image-20230902082243237

包标识符

image-20230902082343658

image-20230902082355155

令牌包

令牌包用于启动一次USB传输。

image-20230902082707969

image-20230902082722305

令牌包的最后有一个CRC5校验,它只校验PID之后的数据,不包括PID本身。

image-20230902082828207

image-20230902082835024

数据包

数据包用于传输数据。

协议 数据包
USB1.1 DATA0包 DATA1包
USB2.0 DATA0包 DATA1包 DATA2包 MDATA包

包结构是统一的:一个同步域,后面跟整数字节的数据,然后是CRC16校验,最后是包结束符。

image-20230902083518979

握手包

握手包用来标识一个传输是否被对方确认。

握手包结构:同步域、PID和EOP。

image-20230902083723140

特殊包

image-20230902083830700

用到的时候再看吧。这里先放一下。

四种传输类型

在传输数据时,要将包组织成事务(Transaction)。

USB事务

image-20230902084228887

USB协议规定了4种传输类型:批量、等时、中断和控制。

批量、等时、中断每传输一次就是一个事务;但控制不是,它的建立和状态过程分别是一个事务,而数据过程则可能包括多个事务。

批量

批量传输使用批量事务(bulk transaction)传输数据。

一次批量事务有三个阶段:令牌包阶段,数据包阶段和握手包阶段。

批量传输分为批量读和批量写,批量读使用批量输入事务,批量写使用批量输出事务。

image-20230902084735754

中断

中断用于时间要求严格的设备中,保证查询频率。

等时

用于数据量大、实时性要求高的场合。

控制

端点类型和传输类型的关系

一个具体的端点,只能工作在一种传输模式下。

端点0是默认控制端点,所有的USB设备都有、非0端点只有在set config之后才能使用。

传输类型与最大包长

image-20230902085449729

标签:事务,USB,批量,传输,描述符,概述,设备
From: https://www.cnblogs.com/breakr-yu/p/17673196.html

相关文章

  • 01_概述
    概述博客中的图片内容全部采用github云存储,访问可能比较慢,可以想办法github加速。三个阶段第一阶段:建立编程思想第二阶段:提升编程能力第三阶段:分析需求,代码实现能力Java基础=JavaSE概述程序:计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。......
  • linux普通用户赋予USB设备访问权限
    新建规则文件,GROUP表示用户组.id查看用户$iduid=1000(huanhe)gid=1000(huanhe)组=1000(huanhe)$cat/etc/udev/rules.d/xxx_printer.rulesSUBSYSTEM=="usb",ATTRS{idVendor}=="0016",MODE="0666"SUBSYSTEM=="usb_device",ATTRS{idVe......
  • 关于 rk3568 yocto USB 鼠标不能使用的问题
    问题:发现rk3568yocto镜像出现 USB无法识别鼠标键盘的问题。 经测试发现: 1  1.2底板的yocto镜像,lvds屏幕的镜像是可以的,鼠标与触摸同时可用。   2 测试1.7底板的 yocto lvds影响是不是同样可用。 这说明只要是lvds就是可以用的。  3......
  • 计网(概述)
    网络、互联网和因特网的区别与关系若干节点和链路互连形成网络若干网络通过路由器互连形成互联网因特网是世界上最大的互联网电路交换、报文交换、和分组交换的对比若要连续传送大量的数据,并且数据传送时间远大于建立连接的时间,则使用电路交换可以有较好的传输效率。......
  • 分布式深度学习技术概述
    分布式深度学习技术有哪些?分布式深度学习技术是指将深度学习模型的训练过程分布在多个计算资源上进行加速的技术。这样可以充分利用集群中的多个GPU、CPU或者多台计算机,加快深度学习模型的训练过程,提高训练效率。以下是一些常见的分布式深度学习技术:数据并行:将训练数据划分成......
  • Badusb制作,远程别人电脑
    Badusb制作插一下U盘黑一台电脑,插了我的U盘你可就是我的脑了,(▽)理论准备我们要用它就应该知道他的工作原理是怎么样的,方便我们去发散思维去使用它。Badusb的原理是利用HID(HumanInterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)进行攻击,将USB设备伪装使电脑识......
  • 3.1 数据连接概述
    一、数据连接概述1.概述1.1应用场景在制作报表前,需要在FineReport中建立与数据库的连接,让FineReport能获取到数据库中的数据。1.2数据连接方式平台数据连接:在数据决策系统中建立数据连接,选择【服务器->报表平台管理】,打开数据决策系统,建立数据连接。连接步骤:https://he......
  • Ansible概述
    Ansible概述和模块解释,简单介绍一下ansible的基本知识,将模块的内容仔细演示。 目录一、Ansible概述二、Ansible安装部署三、inventory主机清单 四、Ansible命令行模块五、总结     一、Ansible概述1.Ansible介绍Ansible是一个基于Python开发的......
  • 关于 Vue.js v2 和 v3 生命周期的概述以及它们之间的区别
    Vue.jsv2的生命周期包括以下阶段:1、beforeCreate:在实例初始化之后、实例数据观测和事件配置之前被调用。2、created:实例已经创建完成,数据观测和事件配置已完成,但尚未挂载到DOM上。3、beforeMount:在挂载之前被调用,相关的render函数首次被调用。4、mounted:实例已......
  • 王道408---CO---计算机系统概述易混淆易遗忘知识点
    易混淆性能指标机器字⻓计算机进⾏⼀次整数运算所能处理的⼆进制的位数,⼀般与字⻓⻓度有关注意不是浮点数运算数据通路带宽外部数据总线⼀次能并⾏传送信息的位数,⾮CPU内部数据总线宽度MIPSMIPS:每秒执⾏多少百万条指令MFLOPS:每秒执⾏多少百万次浮点运算GFLOPS:每秒执⾏多......