USB协议详解第7讲(补充-USB帧和微帧剖析)
1.概念
(1)USB2.0帧和微帧属于物理层时间基准的概念,低速和全速下每个帧时长为1ms,高速下每个帧又分为8个微帧,即每个微帧时长为125us。
(2)USB主机和设备控制器同步后,每个微帧起始点开始传输数据,如果没有数据,则SOF包发送完毕之后,总线进入空闲状态,一会下面看解析图。
(3)每一个帧(微帧)起始点会先发送一个SOF包(帧起始包),它以广播的形式发送,所有USB全速设备和高速设备都可以接收到SOF包。帧起始包之后可以是输出(OUT)、输入(IN)、建立(SETUP)等令牌包(核心:令牌包一定是主机发送的,后续详解),在令牌包中指定数据包去向或者来源的设备地址和端点(Endpoint),从而保证了只有一个设备对被广播的数据包/令牌包作出响应。
(4)再次强调,USB全速设备1ms产生一个帧,而高速设备每125us产生一个微帧。
下面我们来看看全速USB传输帧和高速USB传输微帧的解析图:
2.全速USB传输(帧)
全速USB传输每一个帧为1ms。首先我们看上一帧,首先会发送一个SOF包(帧起始包),此时USB主机检测到总线没有事务可以传输,则总线进入idel(空闲状态),这里的空闲时间996.917us,我们其实可以计算发送一个SOF包的总线有效带宽时间(1000us-996.917us),大概3us左右,大家可能会问,为什么是3us,那就给大家详细计算下。
为什么是3us,因为全速USB 12Mhz的时钟频率,SOF包长度为4字节(同步 1字节+SOF 1字节+Frame域和CRC域 2字节),4*8 = 32bit,传输时间 = 1/12M*32 + 250[EOP] = 83.3333ns*32+250ns = 2916ns = 3us,EOP是end of packet占用的时间,过瘾吧,提示大家下,包后面会详细讲解。
帧而复始,一直会这样一帧帧下去,主机就是用这种方式和各个设备数据传输的。

3.高速USB传输(微帧)
高速USB传输每一个微帧为125us,含义其实和上面的一样。首先我们看上一帧,首先会发送一个SOF包(帧起始包),此时USB主机检测到总线没有事务可以传输,则总线进入idel(空闲状态),这里的空闲时间124.804us,我们其实可以计算高速传输协议下发送一个SOF包的总线有效带宽时间(125us - 124.804us),大概0.2us左右,大家可能会问,为什么是0.2us,我只想告诉大家,高速USB传输的时钟为480Mhz,如果看到这里还不知道请百度下。
紧接着我们看下一帧,同样的首先会发送一个SOF包(帧起始包),等了17.4us后,可能有事务了,紧接着USB主机会发送一个SETUP令牌包,也就是请求哪个设备哪个端点进行传输,紧接着两个事务传输完成。我们这里一定要注意,第二个事务传输完毕之后,主机检测到没有事务了,总线同样会进入空闲状态,这里空闲了98.704us,大家自行计算。
微帧而复始,一直会这样一帧帧下去,主机就是用这种方式和各个设备数据传输的。
USB协议详解第7讲(补充-USB帧和微帧剖析)的更多相关文章
- bt协议详解 DHT篇(上)
bt协议详解 DHT篇(上) 最近开发了一个免费教程的网站,突然产生了仔细了解bt协议的想法,这篇文章是bt协议详解系列的第三篇,后续还会写一些关于搜索和索引的东西,都是在开发这个网站的过程中学习到的 ...
- 【转载】TCP /IP协议详解
首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...
- 高效开发之SASS篇 灵异留白事件——图片下方无故留白 你会用::before、::after吗 link 与 @import之对比 学习前端前必知的——HTTP协议详解 深入了解——CSS3新增属性 菜鸟进阶——grunt $(#form :input)与$(#form input)的区别
高效开发之SASS篇 作为通往前端大神之路的普通的一只学鸟,最近接触了一样稍微高逼格一点的神器,特与大家分享~ 他是谁? 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家 ...
- TCP /IP协议详解【转】
转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...
- HTTP协议详解(转)
转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...
- HTTP协议详解
Author :Jeffrey 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展. ...
- ASP.NET知识总结(3.HTTP协议详解)
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...
- 接口测试之HTTP协议详解
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...
- OSPF协议详解
CCNP OSPF协议详解 2010-02-24 20:30:22 标签:CCNP 职场 OSPF 休闲 OSPF(Open Shortest Path Fitst,ospf)开放最短路径优先协议,是 ...
- HTTP协议详解(真的很经典)
HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展.目前在WWW中使用的是HTTP/1.0 ...
随机推荐
- java8interface的新特性:default,static,funcation
default:默认方法 在类接口中可以直接定义的方法,实现接口的类可以直接使用 使用案例: public interface MyInterface { default void display() ...
- 如何对jar包修改并重新发布在本机
本人苦于jieba不能如何识别伊利丹·怒风,召唤者坎西恩这种名字,对jieba-analysis进行了解包和打包 步骤1:找到对应jar 步骤2:在cmd中输入jar -xvf xxx.jar解压包, ...
- Jmeter函数助手38-isVarDefined
isVarDefined函数用于判断变量是否存在. 变量的名称:填入变量名称.如果变量存在返回true,如果不存在返回false 1.先一些定义变量 ${__isVarDefined(now)},no ...
- 【Mybatis】04 官方文档指北阅读 vol2 配置 其一
https://mybatis.org/mybatis-3/zh/configuration.html 配置 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息. 配置文 ...
- ComfyUI插件:ComfyUI layer style 节点(四)
前言: 学习ComfyUI是一场持久战,而ComfyUI layer style 是一组专为图片设计制作且集成了Photoshop功能的强大节点.该节点几乎将PhotoShop的全部功能迁移到Comf ...
- NVIDIA具身机器人实验室 —— GEAR —— Generalist Embodied Agent Research —— NVIDIA机器人实验室
相关: https://www.youtube.com/watch?v=jbJPG2H8hn4
- [COCI 2023/2024 #2] Zatopljenje 题解
UPDATE on 2024.4.25 改掉奇怪压行码风,并稍作排版. 前言 题目链接:洛谷. 题目分析 首先发现区间中的个数等于 \(\texttt{高度大于 x 的位置的个数} - \texttt ...
- EF Core连接PostgreSQL数据库
PostgreSQL数据库介绍 PostgreSQL是一个功能强大的开源对象关系型数据库管理系统(RDBMS).最初于1986年在加州大学伯克利分校的POSTGRES项目中诞生,PostgreSQL以 ...
- devtools工具遇到的坑
下载devtools一定要下载5.1.1版本,其他版本要么就是下载依赖不行,要么就是打包不行,不清楚的同学会下载最新版,最新版的不能用,切记 地址放这里了: https://github.com/vu ...
- Unreal使用GooglePAD生成AAB包,并加在fast-follow资源
1.修改obbfilter,设置需要添加到obb的pak文件 2.修改项目设置,打AAB包 3.cook stage生成所有Paks文件 4.将部分pak文件拷贝到Intermediate/Andro ...