USB协议层数据格式

本文详细介绍了USB协议层的数据格式,包括字节/位传输顺序、SYNC域、包格式以及各种类型的PID域。此外,还讨论了传输细节,如传输与事务的区别、批量传输、中断传输、实时传输和控制传输的工作原理,以及握手包的作用。文章旨在帮助读者理解USB设备如何通过不同类型的包进行数据交换和确认。

USB协议层数据格式



  1. 硬件拓扑结构
    在这里插入图片描述
  • compound device :多个设备组合起来,通过HUB跟Host相连
  • composite device :一个物理设备有多个逻辑设备(multiple interfaces)

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

在这里插入图片描述

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

在这里插入图片描述

2. 协议层

要理解协议层、理解数据如何传输,带着这几个问题去看文档、看视频:

  • 如何寻址设备?
  • 如何表示数据方向(读、还是写)
  • 如何确认结果?

提前罗列出来:

  • USB系统是一个Host对应多个设备,要传输数据首先要通知设备:
    • 发出IN令牌包:表示想读数据,里面含有设备地址
    • 发出OUT令牌包:表示想写数据,里面含有设备地址
  • 数据阶段:
    • Host想读数据:前面发出IN令牌包后,现在读取数据包
    • Host想发出数据:前面发出OUT令牌包后,现在发出数据包
  • 结果如何?有握手包
    • Host想读数据,设备可能未就绪,就会回应NAK包
    • Host想写数据,它发出数据后,设备正确接收了,就回复ACK包

2.1 字节/位传输顺序

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

2.2 SYNC域

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

在很多文档里,把SOP和SYNC统一称为"SYNC",它的意思是"SYNC"中含有"SOP"。

2.3 包格式

在这里插入图片描述

USB总线上传输的数据以包为单位。USB包里含有哪些内容(“域”)?

  • SOP:用来表示包的起始

  • SYNC:用来同步时钟

  • PID:表示包的类型

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

    • 发给所有设备:包里不含有设备地址
    • 发给某个设备:包里含有设备地址、端点号
  • 帧号、数据等跟PID相关的内容

  • CRC校验码

发起一次完整的传输,可能涉及多个包。那么,第1个包里含有设备地址、端点号,后续的包就没必要包含设备地址、端点号。

2.3.1 PID域

注意:所有的

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值