1 USB 介绍
Universal Serial Bus,通用串行总线
1.1 USB 系统组成
- 主机:提供USB接口和接口管理功能的硬件、软件、固件的复合体。PC机或者 OTG 设备。一个 USB 系统只能有一个主机。
- 设备:(1)集线器 HUB:扩展主机接口,设备可以通过其接入主机;(2)功能设备
- 物理连接:USB使用差分信号传输数据,全速或者高速模式的电缆必须外层屏蔽和铜漏线,且差分数据线双绞。D+ 和 D- 是差分输入线,使用的是 3.3v 电压。
1.2 拓扑结构
2 STM32 的 USB 操作步骤
- 根据应用选择合适的USB 类实现;
- 根据所选择的的USB类协议,完成各个描述符,包括设备描述符、配置描述符、接口描述符,断点描述符和字符描述符;
- 根据描述符,初始化端点数目,分配各端点所需使用的 Packet Buffer;
- 初始化所使用的端点,配置端点的传输类型、方向、Packet Buffer 地址,和初始状态;
- 在需要发送或者接受数据的时候,使能端点;
- 在该端点的中断回调函数中,处理数据,如果需要则使能下一次传输;
3 STM32 的USB类
4 USB的设备端
- 接口:用于描述特定功能,每个接口都有一个端点集,用于实现接口功能
5 STM32 的USB库函数
stm32f10x_it.c
: 包含 USB 中断服务程序,由于USB中断有很多情况。这里的中断服务程序只是调用usb_istr.c
文件中的USB_Istr
函数,由 这个函数做轮询处理usb_istr.c
:该文件中只有一个函数,即USB中断的USB_Istr
,该函数对各类引起USB中断的事件作轮询处理;usb_prop.c
:实现相关设备的USB 协议,例如 初始化、SETUP 包、IN包、OUT包等等。usb_pwr.c
包含上电、掉电、挂起和恢复事件的函数hw_config
: 系统配置函数