当前位置:网站首页>USB通讯原理
USB通讯原理
2022-08-06 17:16:00 【一口Linux】
USB是轮询总线,USB主机与设备之间的数据交换都是由主机发起的,设备端只能被动的响应。USB数据传入或传出 USB 设备中的端点。
USB 主机中的客户端将数据存储在缓冲区中,USB主机没有端点的概念。
USB Host 和外围 USB Device 有不同的层,如下图所示。各层之间的连接是每个水平层之间的逻辑主机-设备接口。在逻辑连接之间使用USB Pipes传输数据。

USB通讯过程
一次完整的通信分为三个过程:请求过程(令牌包)、数据过程(数据包)和状态过程(握手包),没有数据要传输时,跳过数据过程。
通信过程包含以下三种情况:

主机发送令牌包(Token)开始请求过程,如果请求中声明有数据要传输则有数据过程,最后由数据接收方(有数据过程)或从机(无数据过程)发起状态过程,结束本次通信。
与USB全速设备通信时,主机将每秒等分为1000个帧(Frame)。主机在每帧开始时,向所有从机广播一个帧起始令牌包(Start Of Frame,SOF包)。它的作用有两个:一是通知所有从机,主机的USB总线正常工作;二是从机以此同步主机的时序。
与USB高速设备通信时,主机将帧进一步等分为8个微帧(Microframe),每个微帧占125μ \muμs。在同一帧内,8个微帧的帧号都等于当前SOF包的帧号。
管道PIPE
管道分为两种类型:
- 消息管道具有已定义的 USB 格式并受主机控制。消息管道允许数据双向流动并且仅支持控制传输。
- 流管道没有定义的 USB 格式,可以由主机或设备控制。数据流具有预定义的方向,即IN或OUT。流管道支持中断传输、同步传输和批量传输。
当 USB 设备连接到 USB 总线并由 USB 主机配置时,大多数管道就会存在。管道源自主机客户端内的数据缓冲区,并在 USB 设备内的端点处终止。
传输
传输(数据流类型)可以由一个或多个事务组成。管道仅支持以下传输类型之一:
- 控制传输通常用于设置 USB 设备。他们总是使用 IN/OUT 端点 0。
- 中断传输可用于定期发送数据的地方,例如状态更新。
- 同步传输传输实时数据,例如音频和视频。它们有保证的固定带宽,但没有错误检测。
- 批量传输可用于在时间不重要的情况下发送数据,例如发送到打印机。
事务
数据在所谓的事务中传输。通常,它们由三个数据包组成:
- 令牌包是定义事务类型和方向、设备地址和端点的标头。
- 数据以数据包的形式传输。
- 交易的最终状态是握手包中的确认。

在事务中,数据从 USB 主机传输到 USB 设备,反之亦然。传输方向在从 USB 主机发送的令牌包中指定。然后,源发送一个数据包或指示它没有数据要传输。一般情况下,目的地会以握手包进行响应,指示传输是否成功。
数据包
数据包可以被认为是数据传输的最小元素。每个数据包以当前传输速率传输整数个字节。数据包以同步模式开始,随后是数据包的数据字节,并以数据包结束 (EOP) 信号结束。所有 USB 数据包模式都先传输最低有效位。数据包前后,总线处于空闲状态。

一个特殊的数据包是将 USB 总线分成时间段的帧起始数据包 (SOF)。每个管道在每个帧中分配一个时隙。Start-of-Frame 数据包在全速链路上每 1ms 发送一次。在高速下,1ms 帧被分成 8 个微帧,每个微帧 125μs。Start-of-Frame 数据包在每个微帧的开头使用相同的帧号发送。帧号每 1ms 递增一次。
端点
端点可以描述为数据源或接收器,并且仅存在于 USB 设备中。存储在端点的数据可以从 USB 主机接收或等待发送到 USB 主机。端点可以配置为支持USB 规范中定义的四种传输类型(控制传输、中断传输、同步传输和批量传输)。在硬件限制范围内,端点可以使用 USB 中间件进行配置(例如,将端点限制为某种传输类型)。
端点充当一种缓冲区。例如,USB 主机的客户端可以向端点 1 发送数据。来自 USB 主机的数据将被发送到OUT 端点 1. 微控制器上的程序将在准备好后立即读取数据。返回数据必须写入IN Endpoint 1,因为程序无法自由访问 USB 总线(USB 总线由 USB 主机控制)。IN Endpoint 1 中的数据一直保留在那里,直到主机向 Endpoint 1 发送 IN 数据包请求数据。
这些规则适用于所有微控制器设备:
- 一个设备最多可以有16 个 OUT和16 个 IN端点。
- 每个端点只能有一个 传输 方向。
- 端点 0仅用于控制传输,不能分配给任何其他功能。
端点的总数和每个端点的数据大小由底层硬件定义。
- OUT总是指从主机指向设备的方向。
- IN总是指指向主机的方向。
¥打赏
边栏推荐
- word2vec原理
- windows7激活产品密钥最新免费2022大全(含旗舰版、专业版、家庭版、通用版)
- How to turn on the wireless screen mirroring function in win7
- 下一个十年,什么样的测试最吃香?
- 王学岗——H265编码原理详解与码流分析
- 【kali-漏洞利用】(3.3)Metasploit后渗透(下):后渗透模块使用
- office2019永久密钥激活码最新_office2019激活密钥码终身激活(100%激活)
- 王学岗——————H265实现低延时投屏,从零实现高清无损投屏
- bin文件用什么软件打开 如何打开bin文件格式
- `数学` 一致连续性
猜你喜欢

王学岗——————H265实现低延时投屏,从零实现高清无损投屏

win7蓝牙怎么开启 电脑蓝牙在哪里打开win7

2022 华数杯 C 题 插层熔喷非织造材料的性能控制研究

SourceTree使用技巧

方舟开服配置教程服务器怎么开

IDEA03:数据库CDC、Kafka和连接器Debezium配置

win7打印机共享设置(详细图文步骤)

win7旗舰版64位万能激活码 windows7旗舰版激活产品密钥

Win7 and win10 which takes up less resources Win7 and win10 take up resources in detail

0x0000001a蓝屏代码是什么意思 0x0000001a蓝屏代码怎么解决
随机推荐
CMake教程Step7(安装打包)
win7旗舰版64位万能激活码 windows7旗舰版激活产品密钥
win7打印机共享设置(详细图文步骤)
win7彻底重置清除所有软件 win7怎么重置系统
win7激活密钥大全2021 win7最新激活密钥
启牛中信证券下载是可以开户吗?开户安全吗
FP6601AAP6 CPC-16L Type-A-HVDCP控制器与插入/输出自动检测
TCP的三次挥手、四次握手
QWT下载、安装、配置教程
快捷方式指向的驱动器或网络连接不可用怎么解决
王学岗————从零实现手写音视频通话(H265)
win7怎么设置屏幕不休眠 win7关闭休眠功能
What software is cdr? What software does cdr format use?
为什么企业不愿意升级ERP系统
2020最新office产品密钥永久激活码_office激活密钥永久key免费(附激活方法)
win7资源管理器反复停止工作 win7资源管理器已停止工作不断重复
win7旗舰版强行删除开机密码 win7开机密码忘了怎么解除
2022 华数杯 C 题 插层熔喷非织造材料的性能控制研究
Commonly used CMD commands
win7升级win10数据会丢失吗 win7升级win10怎么备份数据

