RK3568平台(USB篇)USB数据包的收发格式

本文详细探讨了USB硬件的复合设备结构,以及协议层中的寻址、数据方向指示、确认机制。重点介绍了IN/OUT令牌包、握手包、SYNC域和PID的作用,以及不同类型的事务和传输方式,如批量、中断、实时和控制传输在USB通信中的应用。
摘要由CSDN通过智能技术生成

一.USB硬件拓扑结构

  • compound device :多个设备组合起来,通过HUB跟Host相连
  • composite device :一个物理设备有多个逻辑设备(multiple interfaces)

在软件开发过程中,我们可以忽略Hub的存在,硬件拓扑图简化如下:

一个物理设备里面可能有多个逻辑设备,Hos可以外接多个逻辑设备,硬件拓扑图如下:

二.USB协议层

问题提出:

  ->如何寻址设备?

  ->如何表示数据方向(读、还是写)

  ->如何确认结果?

提前罗列出来:

USB系统是一个Host对应多个设备,要传输数据首先要通知设备:

   -> 发出IN令牌包:表示想读数据,里面含有设备地址

  -> 发出OUT令牌包:表示想写数据,里面含有设备地址

数据阶段:

   ->Host想读数据:前面发出IN令牌包后,现在读取数据包

   ->Host想发出数据:前面发出OUT令牌包后,现在发出数据包

结果如何?有握手包:

  ->Host想读数据,设备可能未就绪,就会回应NAK包

  ->Host想写数据,它发出数据后,设备正确接收了,就回复ACK包

字节/位传输顺序:

先传输最低位(LSB),描述数据时按照传输顺序从左到右列出来。

SYNC域:

Host发出SOP信号后,就会发出SYNC信号:它是一系列的、最大传输频率的脉冲,接收方使用它来同步数据。对于低速/全速设备,SYNC信号是8位数据(从做到右是00000001);对于高速设备,SYNC信号是32位数据(从左到右是00000000000000000000000000000001)。使用NRZI编码时,前面每个"0"都对应一个跳变。

包格式:

SOP:用来表示包的起始

SYNC:用来同步时钟

PID:表示包的类型

地址:在USB硬件体系中,一个Host对应多个Logical Device,那么Host发出的包,如何确定发给谁?

CRC:校验码

PID域:

 有哪些USB包?根据包数据里的PID的bit1, bit0可以分为4类:

  • 令牌包(Token):01B
  • 数据包(Data):11B
  • 握手包(Handshake):10B
  • 特殊包(Special):00B

传输和事务:

有四类事务:

批量事务:用来传输大量的数据,数据的正确性有保证,时效没有保证。

中断事务:用来传输周期性的、小量的数据,数据的正确性和时效都有保证。

实时事务:用来传输实时数据,数据的正确性没有保证,时效有保证。

建立事务:跟批量事务类似,只不过令牌包是SETUP令牌包。

有四类传输(Transfer):

批量传输:就是使用批量事务实现数据传输,比如U盘。

中断传输:就是使用中断事务实现数据传输,比如鼠标。

实时传输:就是使用实时事务实现数据传输,比如摄像头。

控制传输:由建立事务、批量事务组成,所有的USB设备都必须支持控制传输,用于"识别/枚举"

  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式_笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值