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

2023-12-11 19:20

本文主要是介绍浅谈 USB Bulk 深入浅出 (1) - USB 传输模式 及 何谓 USB bulk,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来源:大大通【阿福的随笔】浅谈 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在线答疑解惑!

这篇关于浅谈 USB Bulk 深入浅出 (1) - USB 传输模式 及 何谓 USB bulk的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/481828

相关文章

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

SQL Server身份验证模式步骤和示例代码

《SQLServer身份验证模式步骤和示例代码》SQLServer是一个广泛使用的关系数据库管理系统,通常使用两种身份验证模式:Windows身份验证和SQLServer身份验证,本文将详细介绍身份... 目录身份验证方式的概念更改身份验证方式的步骤方法一:使用SQL Server Management S

Redis高可用-主从复制、哨兵模式与集群模式详解

《Redis高可用-主从复制、哨兵模式与集群模式详解》:本文主要介绍Redis高可用-主从复制、哨兵模式与集群模式的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Redis高可用-主从复制、哨兵模式与集群模式概要一、主从复制(Master-Slave Repli

浅谈Redis Key 命名规范文档

《浅谈RedisKey命名规范文档》本文介绍了Redis键名命名规范,包括命名格式、具体规范、数据类型扩展命名、时间敏感型键名、规范总结以及实际应用示例,感兴趣的可以了解一下... 目录1. 命名格式格式模板:示例:2. 具体规范2.1 小写命名2.2 使用冒号分隔层级2.3 标识符命名3. 数据类型扩展命

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子