简介
USB(Universal Serial Bus,通用串行总线)是 STM32 单片机中用于与外部设备进行高速数据通信的外设,支持 USB 2.0 全速(12Mbps)和高速(480Mbps)模式,广泛应用于数据传输、设备枚举、人机交互等场景。STM32F407 系列芯片配备了 2 个 USB OTG 接口(USB OTG FS 和 USB OTG HS),支持主机、从机和 OTG 模式,可连接各种 USB 设备。本文从 USB 的基本原理出发,详细讲解 STM32F407 USB 的配置方法、代码实现、通信协议以及实际应用案例,帮助你快速掌握 USB 的使用技巧。
一、USB核心概念与分类
1.1 基本概念
USB 是一种通用的串行总线接口,其主要特点包括:
- 高速传输:支持 USB 2.0 全速(12Mbps)和高速(480Mbps)模式
- 即插即用:支持热插拔,无需重启系统
- 多种模式:支持主机、从机和 OTG 模式
- 多设备支持:一个主机可连接多达 127 个设备
- 统一供电:支持 5V 电源供电
关键参数:
- 传输速率:全速 12Mbps,高速 480Mbps
- 传输模式:控制传输、批量传输、中断传输、同步传输
- 端点数量:支持多个端点
- 供电方式:总线供电或自供电
1.2 STM32F407 的 USB 资源
STM32F407 系统芯片配备了 2 个 USB OTG 接口:
| USB 接口 | 引脚 | 速度 | 适用场景 |
|---|---|---|---|
| USB OTG FS | PA11(DM), PA12(DP) | 全速 12Mbps | USB鼠标、键盘、U盘等 |
| USB OTG HS | PB14(DM), PB15(DP) | 高速 480Mbps | 高速数据传输、视频等 |
关键特性:
- 支持主机、从机和 OTG 模式
- 支持多种传输模式
- 支持多个端点
- 支持 DMA 传输
二、USB工作原理
2.1 基本工作原理
USB 的基本工作原理是通过差分信号线进行数据传输。
通信流程:
- 主机枚举设备
- 主机发送请求到设备
- 设备响应请求
- 数据传输
2.2 传输模式
USB 支持四种传输模式:
控制传输:
- 用于设备枚举和配置
- 保证数据传输的可靠性
- 适用于控制命令和状态查询
批量传输:
- 用于大量数据传输
- 不保证实时性
- 适用于文件传输、打印机等
中断传输:
- 用于少量数据传输
- 保证实时性
- 适用于鼠标、键盘等
同步传输:
- 用于实时数据传输
- 不保证可靠性
- 适用于音频、视频等
2.3 USB 描述符
USB 设备使用描述符来描述设备信息。
描述符类型:
- 设备描述符:描述设备的基本信息
- 配置描述符:描述设备的配置信息
- 接口描述符:描述设备的接口信息
- 端点描述符:描述设备的端点信息
三、USB配置与代码实现
3.1 标准库配置步骤
以 USB OTG FS 从机模式为例,使用标准库配置 USB 的基本步骤:
- 使能 USB 时钟和 GPIO 时钟
- 配置 GPIO 为复用功能
- 配置 USB 基本参数
- 配置 USB 描述符
- 使能 USB
3.2 代码实现(USB OTG FS,从机模式)
#include"stm32f4xx.h"/** * @brief 初始化USB OTG FS * @param 无 * @retval 无 */voidUSB_OTG_FS_Init(void){GPIO_InitTypeDef GPIO_InitStructure;// 1. 使能时钟RCC_AHB1PeriphClockCmd