USB ,是英文 Universal Serial BUS(通用串行总线)的缩写,而其中文简称为“通串线,
是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。
USB 接口支持设备的即插即用和热插拔功能。USB 是在 1994 年底由英特尔、康柏、IBM、
Microsoft 等多家公司联合提出的。
USB 发展到现在已经有 USB1.0/1.1/2.0/3.0 等多个版本。目前用的最多的就是 USB1.1 和
USB2.0,USB3.0 目前已经开始普及。STM32F407 自带的 USB 符合 USB2.0 规范。
标准 USB 共四根线组成,除 VCC/GND 外,另外为 D+和 D-,这两根数据线采用的是差分
电压的方式进行数据传输的。在 USB 主机上,D-和 D+都是接了 15K 的电阻到地的,所以在没
有设备接入的时候,D+、D-均是低电平。而在 USB 设备中,如果是高速设备,则会在 D+上接
一个 1.5K 的电阻到 VCC,而如果是低速设备,则会在 D-上接一个 1.5K 的电阻到 VCC。这样
当设备接入主机的时候,主机就可以判断是否有设备接入,并能判断设备是高速设备还是低速
设备。接下来,我们简单介绍一下 STM32 的 USB 控制器。
STM32F407 系列芯片自带有 USB OTG FS(全速)和 USB OTG HS(高速),其中 HS 需
要外扩高速 PHY 芯片实现,我们这里不做介绍。
STM32F407 的 USB OTG FS 是一款双角色设备 (DRD) 控制器,同时支持从机功能和主机
功能,完全符合 USB 2.0 规范的 On-The-Go 补充标准。此外,该控制器也可配置为“仅主机”
模式或“仅从机” 模式,完全符合 USB 2.0 规范。在主机模式下,OTG FS 支持全速(FS,12
Mb/s)和低速(LS,1.5 Mb/s)收发器,而从机模式下则仅支持全速(FS,12 Mb/s)收发器。
OTG FS 同时支持 HNP 和 SRP。
STM32F407 的 USB OTG FS 主要特性可分为三类:通用特性、主机模式特性和从机模式特
性。
1,通用特性
经 USB-IF 认证,符合通用串行总线规范第 2.0 版
集成全速 PHY,且完全支持定义在标准规范 OTG 补充第 1.3 版中的 OTG 协议
1,支持 A-B 器件识别(ID 线)
2,支持主机协商协议(HNP)和会话请求协议(SRP)
3,允许主机关闭 VBUS 以在 OTG 应用中节省电池电量
4,支持通过内部比较器对 VBUS 电平采取监控
5,支持主机到从机的角色动态切换
可通过软件配置为以下角色:
1, 具有 SRP 功能的 USB FS 从机(B 器件)
2, 具有 SRP 功能的 USB FS/LS 主机(A 器件)
3,USB On-The-Go 全速双角色设备
支持 FS SOF 和 LS Keep-alive 令牌
1,SOF 脉冲可通过 PAD 输出
2,SOF 脉冲从内部连接到定时器 2 (TIM2)
3,可配置的帧周期
3, 可配置的帧结束中断
具有省电功能,例如在 USB 挂起期间停止系统、关闭数字模块时钟、对 PHY 和 DFIFO
电源加以管理
具有采用高级 FIFO 控制的 1.25 KB 专用 RAM
1,可将 RAM 空间划分为不同 FIFO,以便灵活有效地使用 RAM
2,每个 FIFO 可存储多个数据包
3,动态分配存储区
4,FIFO 大小可配置为非 2 的幂次方值,以便连续使用存储单元
一帧之内可以无需要应用程序干预,以达到最大 USB 带宽
2,主机(Host)模式特性
通过外部电荷泵生成 VBUS 电压。
多达 8 个主机通道(管道):每个通道都可以动态实现重新配置,可支持任何类型的
USB 传输。
内置硬件调度器可:
1,在周期性硬件队列中存储多达 8 个中断加同步传输请求
2,在非周期性硬件队列中存储多达 8 个控制加批量传输请求
管理一个共享 RX FIFO、一个周期性 TX FIFO 和一个非周期性 TX FIFO,以有效使用
USB 数据 RAM。
3,从机(Slave/Device)模式特性
1 个双向控制端点 0
3 个 IN 端点 (EP),可配置为支持批量传输、中断传输或同步传输
3 个 OUT 端点(EP),可配置为支持批量传输、中断传输或同步传输
管理一个共享 Rx FIFO 和一个 Tx-OUT FIFO,以高效使用 USB 数据 RAM
管理多达 4 个专用 Tx-IN FIFO(分别用于每个使能的 IN EP),降低应用程序负荷支持
软断开功能
STM32F407 USB OTG FS 框图如图 56.1.1 所示: