STM32-USB模块

1、USB应用范围web

这里写图片描述

2、USB设备按供电类别分类svg

这里写图片描述

3、挂起模式函数

当USB总线无活动超过3ms时,USB设备就能够进入挂起模式。
高功耗设备挂起模式下耗电不能超过2.5mA。
低功耗设备挂机模式下耗电不能超过500uA。大数据

4、USB链接器.net

这里写图片描述

5、数据格式xml

这里写图片描述

在USB总线上传输的叫作Transfer,一个Transfer由多个Transaction组成,一个Transaction由多个Packet组成。blog

Packet格式
这里写图片描述
- SOP:包的起始
- SYNC:包的同步
- Packet Content:包内容
- EOP:包的结束接口

5.1 Packet Content的组成
这里写图片描述图片

PID:共8位,低四位表示PID,高四位是对低四位取的补码,PID的类型以下图:
这里写图片描述
Data类型的 PID的Toggle用于数据的同步和重发。正确的数据传输流程:
这里写图片描述
数据被破坏或者没有正确接收的传输流程:
这里写图片描述
ACK的传输被破坏:
这里写图片描述同步

地址:分为两类,设备地址和端点地址,对于低速设备最多支持3个端点,对于全速和高速设备最多支持16个IN和OUT端点。
帧号:共11位,主机每发出一个帧,帧号都会自加1,当帧号达到7FFH时,将归零从新开始计数,仅在每一个SOF帧的帧首传输帧号。
数据:根据传输类型的不一样,数据域的数据长度从0到1024字节不等。
CRC:分为两类,Token CRC和Data CRC。

  • Token CRC:计算IN,OUT和SETUP Token地址域的CRC,计算SOF Token的帧号域的CRC。
  • Data CRC:计算全部数据域的CRC。

5.2 Packet的类型
这里写图片描述
Token类的Packet:
这里写图片描述
Start of Frame类的Packet:
这里写图片描述
SOF包,帧首包,带有当前帧的帧号
Data类的Packet:
这里写图片描述
Handshake类的Packet:
这里写图片描述

6、传输类型

这里写图片描述

6.1 控制传输
控制传输由Setup阶段、Data阶段和Status阶段三个阶段组成,每一个阶段都由3个Packet组成一个单独的Transaction。
这里写图片描述

USB分析仪从USB总线上获取的数据

控制传输的特性和方向:
这里写图片描述
这里写图片描述

控制传输最大有效的数据长度:
- 低速设备:8字节
- 全速设备:八、1六、3二、64字节
- 高速设备:64字节
带宽:
对于低速和全速设备,10%的帧带宽将保留给控制传输,对于高速设备,20%的微帧带宽将保留给控制传输。
- 低速设备:在每一个帧内只能有少于4个的任意数据长度的控制传输
- 全速设备:在每一个帧内能有最多32个的1字节长度的控制传输,和最多13个64字节长度的控制传输
- 高速设备:在每一个微帧内能有最多43个1字节长度的控制传输,和最多31个64字节长度的控制传输

6.2 中断传输

这里写图片描述
USB分析仪从USB总线上获取的数据

中断传输的特性和方向:
这里写图片描述
这里写图片描述

中断传输最大的有效数据长度:
- 低速设备:8字节
- 全速设备:64字节
- 高速设备:1024字节
带宽:
对于低速和全速设备,有90%的帧带宽是保留给中断传输和同步传输的,对于高速设备,有80%的微帧带宽是保留给中断传输和同步传输的。
- 低速设备:每一个帧内能够有最多8个1字节长度的中断传输,或者有最多6个8字节长度的中断传输
- 全速设备:每一个帧内能够有最多107个1字节长度的中断传输,或者有最多19个64字节长度的中断传输
- 高速设备:每一个微帧内能够有最多199个1字节长度的中断传输,或者有最多63个字节长度的中断传输

6.3 同步传输

同步传输没有握手包(Handshake)不支持出错重传。
这里写图片描述

同步传输的特性:
同步传输用于传输那些须要保证带宽,而且不能忍受延迟的信息。整个带宽都将用于保证同步传输的数据完整,而且不支持出错重传。
方向:
同步传输老是单向的,能够使用单向的同步端点来实现某个方向上的同步传输。

同步传输的最大有效数据长度:
- 不支持低速设备
- 全速设备:1023字节
- 高速设备:1024字节
带宽:
对于全速设备,有90%的帧带宽是保留给中断传输和同步传输的,对于高速设备,有80%的微帧带宽是保留给中断传输和同步传输的。
- 全速设备:在每一个帧内,能够有最多150个1字节长度的同步传输,或者有最多1个1023字节长度的同步传输。
- 高速设备:在每一个微帧内,能够有最多192个1字节长度的同步传输,或者有最多7个1024字节长度的同步传输。

6.4 大容量数据传输

这里写图片描述
USB分析仪从USB总线上获取的数据

大容量数据传输的特性:
大容量数据传输适用于那些须要大数据量传输,可是对实时性,对延迟性和带宽没有严格要求的应用。大容量传输能够占用任意可用的数据带宽。
方向:
大容量传输是单向的,能够用单向的大容量传输端点来实现某个方向的大容量传输。

大容量数据传输最大的有效数据长度:
- 低速设备:不支持
- 全速设备:八、1六、3二、64字节
- 高速设备:512字节
带宽:
没有专门的带宽会为大容量传输保留,只要当前帧有空间米有被其余传输占用,就能够被大容量传输占用。
- 全速设备:在每一个帧内,能够有最多107个1字节长度的大容量传输或最多19个64字节长度的大容量数据传输。
- 高速设备:在每一个微帧内,能够有最多133个1字节长度的大容量传输,或最多13个512字节长度的大容量数据传输。

7、帧格式

对于全速设备,帧间隔时间为1ms,也就是每隔1ms就会有一个SOF Packet传输;对于高速设备,帧间隔时间为125us,也就是每隔125us就会有一个SOF Packet传输。
这里写图片描述

8、设备的状态

这里写图片描述
这里写图片描述

9、USB设备的插入检测

这里写图片描述

主机或HUB将经过上拉电阻所处位置(D+线 or D-线)来判断插入的USB设备是全速设备仍是低速设备。

10、USB设备枚举

当一个USB设备插入主机后,会有如下活动:
这里写图片描述

10.1 USB设备描述符

这里写图片描述

10.2 USB配置描述符

配置描述符的内容以下:
这里写图片描述

其中的配置描述符具体以下:
这里写图片描述
当配置所支持的接口数目超过1时,代表该设备为复合设备,用于描述多于一项的功能。

这里写图片描述
此配置中的端点数目1表示当前设备除了须要端点0的两个方向外还须要1个端点来实现当前接口。

这里写图片描述

这里写图片描述

10.3 USB字符描述符

这里写图片描述

11、USB模块和函数库

11.1 USB模块特性
这里写图片描述

11.2 USB模块中断源
这里写图片描述

12、实现一个USB设备的步骤

12.1 初始化

端点初始化
这里写图片描述

端点使能
这里写图片描述

12.2 处理中断
IN传输
OUT传输
这里写图片描述
这里写图片描述
这里写图片描述

十3、总结
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述