前言
STM32F4芯片自带了USB OTG FS(FS,即全速,12Mbps)和USB OTG HS,支持USB Host和USB Device。
1. USB简介
USB,是英文Universal Serial BUS(通用串行总线)的缩写,是一个外部总线标准,用以规范电脑与外部设备的连接和通讯。应用在PC领域的接口技术上。USB接口技术支持设备的即插即用和热插拔功能。USB是在1994年底由因特尔、康柏、IBM、Microsoft等多家公司联合提出的。USB发展到现在已经有了USB1.0/1.1/2.0/3.0等多个版本。目前USB3.0 已经开始普及。
标准的USB共四根线组成,除VCC/GND外,还有的就是D+和D-,这两根线采用的是差分电压的方式进行数据传输的。在USB主机上,D-和D+都是接了15K 的电阻到地的,所以在没有设备接入时,D+和D-都是低电压。在USB设备中,如果是高速设备,则会在D+上接一个1.5K的电阻到VCC,如果是低速设备,则会在D-接一个1.5K的电阻到VCC。当设备接入主机的时候,主机可以判断是否有设备接入,并且还能判断设备是高速设备还是低速设备。
STM32F4芯片中自带有USB OTG FS(全速)和USB OTG HS(高速),其中HS需要外扩高速PHY芯片实现。
STM32F4的USB OTG FS是一款双角色设备(DRD)控制器,同时支持从机功能和主机功能,完全符合USB 2.0规范的On-The-Go(就是OTG,实现在没有Host主机的情况下,实现设备间的数据传送)补充标准。并且该控制器还可以配置为 “仅主机” 模式或 “仅从机” 模式。主机模式下,OTG FS支持全速(FS,12Mb/s)和低速(LS,1.5Mb/s)收发器,在从机模式下仅支持全速(FS,12Mb/s)收发器。
STM32F4的USB OTG FS主要特性可以分为:通用特性、主机模式特性和从机模式特性。
1. 通用特性
- 支持A-B器件识别(ID线)
- 支持主机协商协议(HNP)和会话请求协议(SRP)
- 允许主机关闭VBUS,以保证在OTG应用中节省电池电量
- 支持通过内部比较器对VBUS电平采取监控
- 支持主机到从机的角色动态切换
2. 主机 Host 模式特性
- 通过外部电荷泵生成VBUS电压
- 多达8个主机通道:每个通道都可以动态实现重新配置,可以支持任何类型的USB传输
- 内置硬件调度器可: 1,在周期性硬件队列中存储多达 8 个中断加同步传输请求 2,在非周期性硬件队列中存储多达 8 个控制加批量传输请求
- 管理一个共享 RX FIFO、一个周期性 TX FIFO 和一个非周期性 TX FIFO,以有效使用USB 数据 RAM。
3. 从机 Slave 模式特性
- 1个双向控制端点0
- 3个 IN 端点EP,可配置为支持批量传输、中断传输或同步传输
- 3 个 OUT 端点(EP),可配置为支持批量传输、中断传输或同步传输
- 管理一个共享 Rx FIFO 和一个 Tx-OUT FIFO,以高效使用 USB 数据 RAM
- 管理多达 4 个专用 Tx-IN FIFO(分别用于每个使能的 IN EP),降低应用程序负荷支持 软断开功能。
USB 拓扑结构:
USB总线基于分层的星状拓扑结构;USB 总线以Hub为中心,连接周围设备;总线上最多可连接127个设备;Hub串联数量最多5个;线缆长度最长5米;
连接和断开连接:
没有设备连上主机时
D+和D-数据线上的下拉电阻起作用,使得两根数据线在空闲状态下都处于低电平;主机端看来就是SE0状态;同样的,当数据线上的SE0状态持续一段时间了,就认为主机处于断开状态;
设备连上主机时
根据之前的学习,我们知道如果是高速设备,那么D+上会接一个1.5K的上拉电阻到VCC,如果是低速设备,那么D-上会接一个1.5K的上拉电阻到VCC;那么当设备连上主机时,主机检测到某一数据线电平拉高并保持了一段时间,此时就认为有设备连上来啦;主机在驱动SE0状态复位设备之前,采样总线状态来判断设备的速度(究竟是高速设备还是低速设备)。
USB传输:Packet、Transaction、Transfer
Packet的组成:SOP、SYNC、Packet Content、EOP
Packet主要分为四类:命令(Token)Packet、帧首(Start of Frame)Packet、数据(Data)Packet、握手(Handshake)Packet
2. USB U盘(Host)
U盘,全称 USB 闪存盘,英文名 “USB flash disk”。它是一种使用 USB 接口的无需物理驱动器的微型高容量移动存储产品,通过USB接口和主机连接,实现即插即用,是最常用的移动存储设备之一。