STM32-USB模块

一、USB应用范围

这里写图片描述

二、USB设备按供电类别分类

这里写图片描述

三、挂起模式

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

四、USB连接器

这里写图片描述

五、数据格式

这里写图片描述

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

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.1 控制传输
控制传输由Setup阶段、Data阶段和Status阶段三个阶段组成,每个阶段都由3个Packet组成一个单独的Transaction。
这里写图片描述

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

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

控制传输最大有效的数据长度:
- 低速设备:8字节
- 全速设备:8、16、32、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总线上获取的数据

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

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

七、帧格式

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

八、设备的状态

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

九、USB设备的插入检测

这里写图片描述

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

十、USB设备枚举

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

10.1 USB设备描述符

这里写图片描述

10.2 USB配置描述符

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

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

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

这里写图片描述

这里写图片描述

10.3 USB字符描述符

这里写图片描述

十一、USB模块和函数库

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

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

十二、实现一个USB设备的步骤

12.1 初始化

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

端点使能
这里写图片描述

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

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

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值