USB中的传输和事务

news2024/9/20 21:33:22

文章目录

  • 一、USB中的四种事务
      • 1. **控制事务(Control Transaction)**
      • 2. **批量事务(Bulk Transaction)**
      • 3. **中断事务(Interrupt Transaction)**
      • 4. **等时事务(Isochronous Transaction,实时事务)**
      • 总结
  • 二、传输和事务的区别


一、USB中的四种事务

1. 控制事务(Control Transaction)

  • 用于设备配置和控制指令传输

  • 控制事务主要用于设备的初始化和配置,传输设备描述符或特定指令(如设备的查询、配置等)。它是所有设备都必须支持的事务类型,通常由控制端点(endpoint 0)执行。

    事务流程

    • 令牌阶段(Token Stage):主机发送一个 SETUP 包,告知设备要进行控制传输。
    • 数据阶段(Data Stage):主机或设备发送一个数据包,数据可能来自主机也可能来自设备。
    • 状态阶段(Status Stage):接收方确认收到数据,发送一个 ACK 包。

    关键特点

    • 数据可以从主机到设备(OUT)或从设备到主机(IN)。
    • 可靠性高,数据必须确认接收。
    • 应用场景:设备初始化、请求设备描述符、配置接口等。

setup事务:
在这里插入图片描述
批量传输:
在这里插入图片描述
状态阶段的返回:

在这里插入图片描述

2. 批量事务(Bulk Transaction)

  • 用于大量数据传输,但没有时间敏感要求。

  • 批量事务用于大规模、无时间限制的可靠数据传输。典型场景是打印机、存储设备等,这类事务不会固定分配带宽,而是利用总线空闲时传输数据。

    事务流程

    • 令牌阶段:主机发送 OUTIN 包,指示传输方向。
    • 数据阶段:主机或设备传输数据。
    • 握手阶段:接收方发送 ACK 确认数据成功接收,或 NAK 表示暂时无法接收。

    关键特点

    • 数据量大,传输可靠(通过 ACK 确认)。
    • 没有时间要求,传输速度取决于总线的空闲时间。
    • 应用场景:U盘、打印机、扫描仪等设备。

批量事务传输图:
在这里插入图片描述
发出多个批量读和批量写事务:
在这里插入图片描述

3. 中断事务(Interrupt Transaction)

  • 用于小数据量的定时传输,例如键盘、鼠标等设备的输入数据。

  • 中断事务主要应用于需要定期轮询的小数据传输,主机以固定的时间间隔轮询设备来检查是否有数据需要传输。

    事务流程

    • 令牌阶段:主机发送 INOUT 包,询问设备是否有数据要发送。
    • 数据阶段:设备返回数据(如鼠标位置或键盘按键状态)。
    • 握手阶段:主机接收数据后发送 ACK 确认。

    关键特点

    • 定时传输,适用于对时间敏感的小数据量传输。
    • 数据传输可靠,设备会反复被轮询。
    • 应用场景:键盘、鼠标、游戏手柄等。

中断事务传输图:
在这里插入图片描述

4. 等时事务(Isochronous Transaction,实时事务)

  • 用于时间敏感但不要求高数据完整性的传输,如音频、视频数据。

  • 等时事务适用于需要连续传输的实时数据,例如实时音频或视频流。与其他事务类型不同,它不提供错误重传或确认机制,专注于保证数据的及时性。

    事务流程

    • 令牌阶段:主机发送 INOUT 包,指示传输开始。
    • 数据阶段:设备发送或接收数据。
    • 没有握手阶段:传输过程中不提供 ACK 确认或 NAK 重传,设备只负责按时发送或接收数据。

    关键特点

    • 无重传机制,数据及时性优先于完整性。
    • 固定带宽,确保连续流数据不会被打断。
    • 应用场景:音频设备(麦克风、耳机)、视频摄像头等。

实时事务状态图:
在这里插入图片描述

总结

  • 控制事务:用于设备配置和控制指令传输,具备可靠性。
  • 批量事务:用于大量数据的可靠传输,适合无时间敏感的设备。
  • 中断事务:用于小数据量的定时传输,适用于键盘、鼠标等设备。
  • 等时事务:用于实时音视频传输,优先保证数据传输的时效性而非完整性。

这些事务类型构成了USB通信中的不同传输模式,满足了不同设备和应用的需求。

二、传输和事务的区别

1.层次不同:传输是高层次的概念,表示一个完整的数据交换过程;事务是低层次的概念,表示在传输过程中的一次具体数据交互。

2.复杂性不同:一个传输可以包含多个事务,而每个事务本身由数据包、握手包等组成。

3.应用场景不同:传输表示的是整体的通信类型(如控制传输、批量传输等),而事务指的是实际进行数据传输的操作单位(如 IN、OUT、SETUP 事务)。

4.时间跨度不同:传输通常是跨多个事务的长期过程,而事务是短时间内的单个数据交换。

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

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

相关文章

C++第五十弹---类型转换全解析:从静态到动态,一网打尽

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1. C语言中的类型转换 2. 为什么C需要四种类型转换 2.1、内置类型 -> 自定义类型 2.2、自定义类型 -> 内置类型 2.3、自定义类型 -&…

Suno新上线Covers翻唱新 - 实现音频风格任意转换

历史文章 Suno AI如何解决中文多音字的问题?耗费500积分,亲测有效 ,V4版本会不会直接支持呢? 上传音频,打造贴合您喜好的风格歌曲创作,这一波新玩法我打8分 Suno AI Noisee AI 做抖音冥想账号实操 音乐…

网络安全-利用 Apache Mod CGI

一、环境 蚁剑官网拉取 二、开始操作 蚁剑连接 一样终端命令不能执行 可以看到putenv已经禁用 我们开始一下,跳入一个新终端且可以执行命令 我们具体看一下干了什么事情 上传了一个htaccess这个文件的作用是让以后所有ant文件都以cgi去执行 三、总结 cgi文件可以…

【C++】C++的多态

目录 多态的使用 多态的概念 多态的定义和实现 虚函数 构成多态的条件 特殊情况:协变 析构函数的重写 怎么实现 为什么实现 override和final关键字 override final 重载/重写/隐藏的对比 纯虚函数和抽象类 纯虚函数 抽象类 多态的实现 虚函数表指针…

魔方财务安装指南

本文将详细介绍魔方财务的安装、升级和迁移过程,确保您能够顺利地部署和使用魔方财务系统。 服务器配置一览表 以下是魔方财务1.0.0及更高版本的最低和推荐系统要求: 需求名称推荐配置最低要求OSCentOS/Debian/UbuntuLinux(不要使用window…

IP协议及相关特性

IP协议负责地址管理和路由选择。它的组成为: 接下来我们将对其中较重要的部分进行介绍。 4位版本:这里的四位版本只有两个取值 分别为IPv4和IPv6,这两个额分别为不同的IP协议,但是现在主流的还是IPv4但是近年来IPv6在中国的普及率…

2022高教社杯全国大学生数学建模竞赛C题 问题一(1) Python代码演示

目录 问题 11.1 对这些玻璃文物的表面风化与其玻璃类型、纹饰和颜色的关系进行分析数据探索 -- 单个分类变量的绘图树形图条形图扇形图雷达图Cramer’s V 相关分析统计检验列联表分析卡方检验Fisher检验绘图堆积条形图分组条形图分类模型Logistic回归随机森林import matplotlib…

中秋之际,唱响工体!玛丽亚·凯莉2024演唱会北京站璀璨上演

续写传奇华章 启幕音乐盛典 中秋之际,全国数万乐迷翘首以待的音乐盛典如约而至。时隔多年,传奇天后玛丽亚凯莉惊艳开唱工体! 夜幕降临,圆月高悬,在不绝于耳的欢呼声中,玛丽亚凯莉以一袭流光溢彩的礼服优雅…

【LIO】FAST-LIO论文详解

FAST-LIO论文详解 1. 摘要2. 简介1. 相关工作A. LiDAR 里程计和地图绘制 2. 实现方法A. 基础知识1. 连续模型在这里插入图片描述 B. 激光雷达测量的预处理C. 状态估计1) 前向传播:2) 反向传播与运动补偿:3) 残差计算: 1. 摘要 提出了一种计算…

简单题21 - 合并两个有序链表(Java)20240917

问题描述: java代码: /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val…

Java 技巧 如何在IDEA2024 中快速打出System.out.println();

1.基本用法 键入sout回车 回车后变成: 2.打印变量 快速打印变量,以打印变量名为set为例,set.sout回车, 回车后变成

简单题26 - 删除有序数组中的重复项(Java)20240917

问题描述&#xff1a; java代码&#xff1a; class Solution {public int removeDuplicates(int[] nums) {if (nums.length 0) return 0; // 处理空数组情况int i 0; // 指向新数组中的最后一个不重复元素for (int j 1; j < nums.length; j) {if (nums[j] ! nums[i]) { …

室内灯具检测系统源码分享

室内灯具检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

从kaggle竞赛零基础上手CV实战(Deepfake检测)

关注B站可以观看更多实战教学视频&#xff1a;hallo128的个人空间 从kaggle竞赛零基础上手CV实战 从kaggle竞赛零基础上手CV实战&#xff08;Deepfake检测&#xff09; 目录 从kaggle竞赛零基础上手CV实战&#xff08;Deepfake检测&#xff09;背景介绍学习地址课程大纲课程特色…

方法引用(Java)

把已经有的方法拿过来用&#xff0c;当做函数式接口中抽象方法的方法体 1.引用处必须是函数式接口 2.被引用的方法必须已经存在 3.被引用的方法形参的返回值需要跟抽象方法保持一致 4.被引用方法的功能要满足当前需求 package function;import java.util.Arrays;public cl…

网络高级项目( 基于webserver的工业数据采集和控制项目)

目录 一、项目要求&#xff1a; 二、演示效果&#xff1a; 设备端&#xff1a; Modbus用户控制端&#xff1a; 服务器端&#xff1a; 网页端&#xff1a; 三、 项目代码&#xff1a; Modbus用户控制端代码&#xff1a; 服务器端代码&#xff1a; 网页端代码&#xff1…

C++3D迷宫

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #include <iostream> using namespace std; void printmaze(char strmaze[5][5][5]) {cout << "-----" << endl;int i 0;int ia 0…

pdf去水印怎么去掉免费?6个pdf去除水印的方法快码住,超级好用!

pdf去水印怎么去掉免费&#xff1f;您是否有一些带有水印的pdf文档&#xff0c;让您感觉到头疼&#xff1f;您又是否希望能够去除这些水印&#xff0c;或者想用其他水印来替换现有的水印&#xff1f;如果是这样的话&#xff0c;我非常推荐您继续阅读本篇文章。本文将为您提供一…

如何在Linux下升级R版本和RStudio

一、升级R版本 在Linux上&#xff0c;R的安装通常通过包管理器完成。不同的Linux发行版&#xff08;如Ubuntu、Debian、Fedora等&#xff09;可能略有不同。下面以Ubuntu为例&#xff0c;介绍如何升级R版本。如果你使用其他发行版&#xff0c;步骤可能类似。 二.更新步骤 2.…

Git:版本控制工具介绍

目录 全文概要版本控制工具介绍版本控制系统的概念**版本控制系统的历史****版本控制系统的分类****本地版本控制系统****集中式版本控制****分布式版本控制系统** Git 介绍Git 概念Git 与 SVN 对比**SVN的记录方式****Git 的记录快照** Git 安装Git 安装Bash、CMD与GUIGit 的配…