1、USB传输、传输事务、包

1、USB传输分类

USB传输分类

  • 控制传输是每个USB设备都会用到的一种传输,在枚举过程中主机和端点0交互所使用的传输方式。
  • 大容量数据传输常见的例子便是U盘(CDC其中的两个端点也使用了bulk传输)
  • 同步传输,常用于音视频灯USB应用
  • 中断传输,常用于键鼠
    在ST的官方培训手册里对这个描述已经很清楚了。

2、USB分包机制

  • 上述的四种传输其实都是一次Transfer.
  • 每个Transfer由若干的Transaction组成.
  • 每个Transaction由2-3个Packet组成.
    但是每种传输的Transfer都是有不同的细微的变化的。这个后续需要专门来说。
    在这里插入图片描述

2.1、USB Packet

USB定义了数据在总线上传输的基本单位是包,所有的包都是由以下的四部分组成,分别为起始包同步域包的具体内容结束包组成.
其中,除了包的具体内容,其余的都是硬件USB总线上的变化,由硬件IC做好,软件方面只需要关注Packet Content.
USB Packet其中,Packet Content又分为以下几部分,如下图所示.
Packet Content

2.1.1 USB Packet Content PID

Packet根据PID的不同可以分为四大类,如下图所示.
在这里插入图片描述在开发过程中,最经常见到的就是SETUP,IN,OUT,DATA了.

PID功能描述
SETUP只用在控制传输中,和输出令牌包作用一样,也是通知设备将要输出一个数据包,两者区别在于:SETUP令牌包后只使用DATA0数据包,且只能发送到设备的控制端点,并且设备必须要接收,而OUT令牌包没有这些限制。
IN定义从设备到主机的数据事务
OUT定义从主机到设备的数据事务
DATA定义从主机到设备的数据事务,usb2.0里面只有DATA0和DATA1

pid只使用了高四位,低四位是将前四位数据取反后用于校验了。
在这里插入图片描述

2.1.2 USB Packet Content addr

地址分为两个地址,分别为设备地址和端点地址。
在这里插入图片描述

2.1.3 USB Packet Content 帧号

在这里插入图片描述

2.1.4 USB Packet Content Data

在这里插入图片描述

2.2 USB 包分类

2.2.1 Token Packet

在这里插入图片描述在这里插入图片描述在Token包里面,一共三个字节,24bit被拆分为4种含义,如上图所示.

2.2.2 SOF Packet

在这里插入图片描述SOF同上,一共三个字节,只是中间的11位含义不一样.

2.2.3Data Packet

在这里插入图片描述这个地方根据传输类型的不同,大小不同,但是在FS设备中只能在0-1023Byte中取值.具体长度看看2.1.4.

2.2.4Handshake Packet

在这里插入图片描述

2.3 USB Transaction

Transaction 可以分为三类。

  • Setup Transaction 控制事务
  • Data In Transaction 主机用来从设备读取数据
  • Data Out Transaction 主机用来向设备发送数据

Transaction一般由2-3个包组成:令牌包、数据包和握手包。

  • Token Packet总是由主机发出的.
  • Data Packet包含此次的数据负载
  • 可选的Handshake packet
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值