USB通讯原理

网友投稿 334 2022-09-16

USB通讯原理

USB是轮询总线,USB主机与设备之间的数据交换都是由主机发起的,设备端只能被动的响应。USB数据传入或传出 USB 设备中的端点。

USB 主机中的客户端将数据存储在缓冲区中,USB主机没有端点的概念。

USB Host 和外围 USB Device 有不同的层,如下图所示。各层之间的连接是每个水平层之间的逻辑主机-设备接口。在逻辑连接之间使用USB Pipes传输数据。

USB通讯过程

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

管道PIPE

管道分为两种类型:

消息管道具有已定义的 USB 格式并受主机控制。消息管道允许数据双向流动并且仅支持​​控制传输​​。流管道没有定义的 USB 格式,可以由主机或设备控制。数据流具有预定义的方向,即​​IN​​​或​​OUT​​​。流管道支持​​中断传输​​​、​​同步传输​​​和​​批量传输​​​。当 USB 设备连接到 USB 总线并由 USB 主机配置时,大多数管道就会存在。管道源自主机客户端内的数据缓冲区,并在 USB 设备内的端点处终止。

传输

传输(数据流类型)可以由一个或多个​​事务​​组成。管道仅支持以下传输类型之一:

​​控制传输​​​通常用于设置 USB 设备。他们总是使用​​IN​​​/​​OUT​​ 端点 0。​​中断传输​​可用于定期发送数据的地方,例如状态更新。​​同步传输​​传输实时数据,例如音频和视频。它们有保证的固定带宽,但没有错误检测。​​批量传输​​可用于在时间不重要的情况下发送数据,例如发送到打印机。

​​事务​​

数据在所谓的​​事务​​中传输。通常,它们由三个数据包组成:

数据包

数据包可以被认为是数据传输的最小元素。每个数据包以当前传输速率传输整数个字节。数据包以同步模式开始,随后是数据包的数据字节,并以数据包结束 (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总是指指向主机的方向。

¥打赏

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:PR人:离开佳琦直播间的270天:小助理成为付鹏!
下一篇:HDU 4254 A Famous Game
相关文章

 发表评论

暂时没有评论,来抢沙发吧~