浅谈 USB Bulk 深入浅出 (1) - USB 传输模式 及 何谓 USB bulk

news2024/10/6 0:32:19
来源:大大通【阿福的随笔】浅谈 USB Bulk 深入浅出 (1) - USB 传输模式 及 何谓 USB bulk

1. USB 传输模式有哪些

USB 是即插即用使用差动信号的装置界面,是以 端点 ( Endpoint ),做为传输装置的输出入端,透过不同的端点 ( Endpoint ) 和模式,来进行与装置的沟通,可从传输方块图来观看会比较好理解。从硬体的hot plug 通知 Host 端目前有装置连接的行为开始,到 USB波形交握,再到USB 命令沟通,取得 装置的描述符和之后如何传输规划的设定,这一切的规范都是来自 USB org 的 USB spec  所定义的。

下载链接如下:

USB 2.0 Specification | USB-IF

今天要主要是要探讨 USB Bulk 的传输架构,不过还是先从USB传输模式说明开始

USB 四种传输模式如下 :

  • 控制中断传输 ( Control )
  • 中断传输 ( Interrupt )
  • 批量资料传输 ( Bulk )
  • 同步传输 ( Isochronous )

后面会再详细说明。 

1.1 方块图

传输方块图,如‘图1.1.1’( 注1 )

图1.1.1注1 )

2. 传输模式说明

(1) 控制中断传输 ( Control ) : 一开始的 USB 命令控制,如 configuration ( 组态命令 ) ,用来取得传输速度或是设定传输速度及取得描述符… 等等,且一定是使用 Endpoint 0。因为控制传输是 USB装置一开始的命令,所以每个 USB装置一定都会有 Endpoint 0。

Full speed 控制框架为 63bytes  (9 SYNC bytes, 9 PID bytes, 6 Endpoint + CRC bytes, 6 CRC bytes, 8 Setup data bytes, and a 7-byte interpacket delay (EOP, etc.))

而 High speed 框架为 173bytes


(2) 中断传输 ( Interrupt ) : 使用中断方式来做传输 ,需要设定间隔时间 ,在Full speed 最小间隔时间为 1ms ,high Speed 最小间隔时间为 125us,中断传输通常是发生事件时才传输资料,或是固定在间隔时间上传资料,例如 : 一般的 USB HID 装置,USB键盘,鼠标,或自定义的传输,虽然在中断传输时,同一个端点可以同时设定 In 和 out ,但若是端点资源充足的话,还是建议分开来设定,若是 In  因为某种原因而卡住在 Still 时,因为同一个端点 busy 所以 out也一样会卡住。( 但在程式上还是需要分时来传 )

Full speed框架为 13 bytes

High speed 框架为 55 bytes

(3) 批量资料传输 ( Bulk ) : 需要大量资料传输时使用,且一个端点只能 bulk in 或是 bulk out,批量资料传输的装置有多,例如 : USBCDC ,USB mass storage,ADB,印表机 … 等等,一般自定义的 Bulk 是需要 driver 的,或是强制指定使用 windows 内建的 driver ,但强制指定的方式,可能只能用于 底层 driver 呼叫,例如 BUS hound ,若是使用 winUSB ( winUSB.sys or winUSB.dll ) 来当 base 的 driver 来说,会碰到 Windows API 无法指定使用的问题。这时候若是不想另外找 driver 来使用的话,可以先将 USB Bulk装置 ,改写成 USB CDC ,USB mass storage 或是 ADB 已经有人写好 driver 的USB 描述符宣告方式,但是这样就会受限于目前使用的 driver 了。若是 driver没有数位签章的认证的话,可另外找有包含数位签章的 driver 或是先停用数位签章来测试 USB bulk 装置是否能正常传输。

Full speed框架为 13 bytes

High speed 框架为 55 bytes
 

(4) 同步传输 ( Isochronous ) : 时间同步的资料传输,需要及时资料更新时使用,规划上可大量传输,但是资料不验证,若错误也不修正,资料丢失也不重送,也没有 CRC check,但是若是接收端不允许掉资料的话,建议就不要使用此方式传输,一般是使用在有一点错误也不影响的影像与声音传输,例如 : UVC ,UAC规范的装置,常见于 USB Camera,喇叭,麦克风或耳机…等。

Full speed框架为 9 bytes

High speed 框架为 38 bytes

3 参考资料

注1 : 作者: USB ORG ( Compaq ,Hewlett-Packard ,Intel ,Lucent,Microsoft,NEC,Philips );
出处 : USB 2.0 Specification | USB-IF

登录大大通,了解更多详情,查看更多相关文章,解锁1500+完整应用方案,更有大联大700+FAE在线答疑解惑!

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

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

相关文章

实现React18加TS,解决通用后台管理系统,实战方案落地有效实践经验

随着前端技术的不断发展和更新,使用React 18结合TypeScript(TS)来构建通用后台管理系统已成为一种常见的选择。本文将介绍如何在项目中应用React 18和TS,并分享一些实战方案的有效实践经验。 一、搭建React 18 TS项目 首先&…

科技提升安全,基于YOLOv5系列模型【n/s/m/l/x】开发构建商超扶梯场景下行人安全行为姿态检测识别系统

在商超等人流量较为密集的场景下经常会报道出现一些行人在扶梯上摔倒、受伤等问题,随着AI技术的快速发展与不断普及,越来越多的商超、地铁等场景开始加装专用的安全检测预警系统,核心工作原理即使AI模型与摄像头图像视频流的实时计算&#xf…

开箱即用的C++决策树简单实现

一个数据结构期末作业(有兴趣用的话可以高抬贵手star下⭐~)GitHub - mcxiaoxiao/c-Decision-tree: 决策树c简单实现 🌳 c-Decision-tree 附大作业/课设参考文档.doc 🌳 c-Decision-tree Introduction 🙌 c-Decision…

spider小案例~https://industry.cfi.cn/BCA0A4127A4128A4141.html

一、获取列表页信息 通过抓包发现列表页信息非正常返回,列表信息如下图: 通过观察发现列表页信息是通过unes函数进行处理的,我们接下来去看下该函数 该函数是对列表页的信息先全局替换"~"为"%u",然后再通过…

中伟视界:煤矿行业借力人工智能,防控灾害风险迈出新步伐 《“十四五”矿山安全生产规划》(应急(2022)64号),煤矿重大灾害风险防控系统

随着煤矿行业的发展,煤矿重大灾害风险防控成为了行业关注的重点之一。为了更好地预防和应对灾害风险,煤矿行业开始引入人工智能分析算法和检测场景,以提高灾害风险的识别和预警能力。 在煤矿的重大灾害风险防控中,AI算法发挥着重要…

【Regulatory Genomics】Part3 GENOMICS AT NVIDIA、ATACWORKS

文章目录 Enchancing epigenomic data with deep learningAtacWorks: Improving the quality of ATAC-seq signals1 model structure2 training strategy Performance of AtacWorks 来自Manolis Kellis教授(MIT计算生物学主任)的课 油管链接:…

MyBatis:缓存

MyBatis 缓存一级缓存二级缓存注 缓存 缓存,是数据交换的缓冲区(临时保存数据的地方)。即将数据(数据一般为频繁查询且不易改变)保存在计算机内存中,下次读取数据时直接从内存中获取,以避免频繁…

YOLOv8独家原创改进:轻量化自研设计双卷积,重新设计backbone和neck结构,完成涨点且计算量和参数量显著下降

💡💡💡本文自研创新改进:双卷积由组卷积和异构卷积组成,执行 33 和 11 卷积运算代替其他卷积核仅执行 11 卷积,YOLOv8 Conv,从而轻量化YOLOv8,性能如下表,GFLOPs 8.1降低至7.6,参数量6.3MB降低至5.8MB layers parametersGFLOPsMBYOLOv8n16830068188.16.3MByolov8_…

销售技巧培训之如何提升房地产销售技巧

在房地产销售这个竞争激烈的行业中,要想获得成功,不仅需要熟练掌握销售技巧,还需要不断地提升自己的能力。下面,我们将从以下几个方面探讨如何提升房地产销售技巧。 一、了解客户需求 倾听客户:在与客户沟通时&#x…

据房间Id是否存在,判断当前房间是否到期且实时更改颜色

重点代码展示&#xff1a; <template><el-col style"width: 100%;height: 100%;"><el-col :span"20"><el-card class"room_info"><avue-data-icons :option"option"></avue-data-icons></el-…

【截图版本】Linux常用指令详解

———————————————— 版权声明&#xff1a;本文为CSDN博主「小呆瓜历险记」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;https://blog.csdn.net/m0_58963318/article/details/134713282

亚信科技AntDB携手蓝凌软件,助推企业数字化办公转型升级

随着企业数字化转型的深入&#xff0c;企业对于协同办公、移动门户、数字运营、智能客服等方面的需求越来越高&#xff0c;数智化正成为催生新动能和新优势的关键力量。数字化的办公平台可以帮助企业实现各类信息、流程的集中化、数字化和智能化管理&#xff0c;为企业管理者提…

【代码随想录】算法训练计划48

dp 1、198. 打家劫舍 题目&#xff1a; 输入&#xff1a;[2,7,9,3,1] 输出&#xff1a;12 偷窃到的最高金额 2 9 1 12 。 思路&#xff1a; 只有两种情况&#xff0c;递推公式就好说了,dp[i]永远都是题意&#xff0c;就是当前偷到的最大金额 func rob(nums []int) int…

HarmonyOS自定义抽奖转盘开发(ArkTS)

介绍 本篇 Codelab 是基于画布组件、显式动画&#xff0c;实现的一个自定义抽奖圆形转盘。包含如下功能&#xff1a; 1. 通过画布组件 Canvas&#xff0c;画出抽奖圆形转盘。 2. 通过显式动画启动抽奖功能。 3. 通过自定义弹窗弹出抽中的奖品。 相关概念 ● Stack组件…

制作一个RISC-V的操作系统五-RISC-V汇编语言编程一

文章目录 RISC-V汇编语言入门汇编语言概念简介 汇编语言语法介绍&#xff08;GNU版本&#xff09; RISC-V汇编语言入门 汇编语言概念简介 高级&#xff1a;可以理解就是更贴近人的理解 低级&#xff1a;可以理解就是更贴近机器的 难移植&#xff1a;汇编指令基本上和机器指令…

线程安全的哈希表ConcurrentHashMap

1. HashTable 不推荐使用&#xff0c;无脑给各种方法加锁 2.ConcurrentHashMap 多线程下推荐使用 锁粒度控制 HashTable直接在方法上加synchronized&#xff0c;相当于对哈希表对象加锁&#xff0c;一个哈希表只有一把锁。多线程环境下&#xff0c;无论线程如何操作哈希表…

医疗设备智慧管理助力医院提质增效,阿基米德amp;健康界实践分享

近日&#xff0c;苏州阿基米德网络科技有限公司与医疗领域头部级媒体健康界&#xff0c;联合举办“数智为擎 提质增效——医学装备智慧管理创新发展论坛”的直播活动。 直播现场&#xff0c;来自上海交通大学医学院附属同仁医院、中华医学会航海医学分会、苏州阿基米德的专家们…

循序字符中插入数据(链表)

有一串已经从小到大排好序的数 2 3 5 8 9 10 18 26 32。现需要往这串数中插入 6 使其得 到的新序列仍符合从小到大排列。&#xff08;使用链表&#xff09;

Python:核心知识点整理大全14-笔记

目录 ​编辑 7.2.2 让用户选择何时退出 parrot.py 7.2.3 使用标志 7.2.4 使用 break 退出循环 cities.py 7.2.5 在循环中使用 continue counting.py 7.2.6 避免无限循环 counting.py 7.3 使用 while 循环来处理列表和字典 7.3.1 在列表之间移动元素 confirmed_user…

查询mysql服务器当前时区设置、session当前时区设置

使用命令SELECT global.time_zone;可以查询mysql服务器的当前时区设置&#xff0c;例如&#xff1a; 使用命令SELECT session.time_zone;可以查询session的当前时区设置&#xff0c;例如&#xff1a;