GigaDevice Semiconductor Inc.
ARM® Cortex™ 32-bit MCU
USBFS/HS 固件库用户指南
1.0 版本
(2019 年 4 月)
GD32 USBFS/USBHS 固件库用户指南
目录
目录 ....................................................................................................................................... 2
图索引 ................................................................................................................................... 3
表索引 ................................................................................................................................... 4
1. 通用串行总线全速/高速接口(USBFS/USBHS) ........................................................ 5
1.1. 概述 .................................................................................................................................... 5
1.2. USBFS/USBHS 原理简介 ....................................................................................................... 5
USBFS 原理 ............................................................................................................................................ 5
USBHS 原理 ........................................................................................................................................... 8
1.2.1.
1.2.2.
1.3. USBFS/USBHS 模块固件库 ................................................................................................. 10
USBFS/USBHS 模块固件库架构.......................................................................................................... 10
1.3.1.
1.3.2. 底层文件及库函数说明 ..................................................................................................................... 11
USBFS 主机中间层文件及库函数说明 .............................................................................................. 11
1.3.3.
USBFS 设备中间层文件及库函数说明 .............................................................................................. 14
1.3.4.
1.3.5. 应用接口顶层文件及库函数说明 ..................................................................................................... 16
1.4. USBFS 主机状态机 ............................................................................................................. 19
1.5. 中断处理 ........................................................................................................................... 22
1.6. USB 例程 .......................................................................................................................... 26
USB 例程概述 ..................................................................................................................................... 26
1.6.1.
1.6.2. MSC 主机............................................................................................................................................. 26
HID 键盘设备 ...................................................................................................................................... 29
1.6.3.
2. 版本历史 ....................................................................................................................... 32
2
GD32 USBFS/USBHS 固件库用户指南
图索引
图 1-1. USBFS 结构框图 ..................................................................................................................................... 6
图 1-2. USBFS 作为主机或设备连接示意图 ...................................................................................................... 7
图 1-3. USBFS 作为 OTG 设备连接示意图 ....................................................................................................... 8
图 1-4. USBHS 结构框图 .................................................................................................................................... 9
图 1-5. 使用外部 ULPI PHY 的连接示意图 ....................................................................................................... 9
图 1-6. GD32F4xx 系列 MCU 的 USBFS/USBHS 接口模块固件库架构 ....................................................... 10
图 1-7. 用户回调函数结构体............................................................................................................................. 17
图 1-8. USBFS 主机状态机表 ........................................................................................................................... 19
图 1-9. USBFS 主机状态机流程图 ................................................................................................................... 20
图 1-10. 枚举状态机处理查询表 ....................................................................................................................... 20
图 1-11. USBFS 枚举状态机流程图 ................................................................................................................. 21
图 1-12. 控制传输状态机处理查询表 ............................................................................................................... 21
图 1-13. 控制传输状态机流程图 ....................................................................................................................... 22
图 1-14. OUT 端点中断处理函数 ...................................................................................................................... 24
图 1-15. IN 端点中断处理函数 .......................................................................................................................... 25
图 1-16. USBFS 例程示意图 ............................................................................................................................. 26
图 1-17. USBFS 主机接 U 盘例程主函数 ......................................................................................................... 27
图 1-18. USBFS 主机接 U 盘枚举信息 ............................................................................................................. 28
图 1-19. USBFS 主机接 U 盘实例现象 ............................................................................................................. 28
图 1-20. USBFS 设备主函数 ............................................................................................................................. 29
图 1-21. HID 键盘设备实验结果 ........................................................................................................................ 31
3
GD32 USBFS/USBHS 固件库用户指南
表索引
表 1-1. USB_FS 接口模块主要特性列表 ............................................................................................................ 6
表 1-2. USB 底层文件说明 ................................................................................................................................ 11
表 1-3. usb_core.h/.c 文件库函数说明列表 .................................................................................................... 11
表 1-4. USB_Host 中间层文件说明 ................................................................................................................. 11
表 1-5. usbh_core.h/.c 文件库函数说明列表 .................................................................................................. 12
表 1-6. usbh_ctrl.h/.c 库函数说明列表 ........................................................................................................... 12
表 1-7. usbh_hcs.h/.c 库函数说明列表 ........................................................................................................... 13
表 1-8. usbh_int.h/.c 库函数说明列表 ............................................................................................................. 13
表 1-9. usbh_std.h/.c 文件库函数说明列表 .................................................................................................... 13
表 1-10. USB_Device 中间层文件说明 ............................................................................................................ 14
表 1-11. usbd_core.h/.c 文件库函数说明列表 ................................................................................................ 14
表 1-12. usbd_int.h/.c 库函数说明列表 ........................................................................................................... 15
表 1-13. usbd_std.h/.c 文件库函数说明列表 .................................................................................................. 15
表 1-14. 应用接口顶层文件说明列表 ............................................................................................................... 16
表 1-15. main.c 文件函数说明列表 .................................................................................................................. 16
表 1-16. usr_cb 用户回调函数结构体函数说明列表 ....................................................................................... 17
表 1-17. usb_delay.c 文件函数说明列表 ......................................................................................................... 17
表 1-18. HID 和 MSC 主机类库函数 ................................................................................................................. 18
表 1-19. USB 全局中断 ..................................................................................................................................... 22
表 2-1. 版本历史 ................................................................................................................................................ 32
4
GD32 USBFS/USBHS 固件库用户指南
1.
通用串行总线全速/高速接口(USBFS/USBHS)
1.1.
概述
本文基于 GD32 MCU 通用串行总线全速接口、高速接口的结构,介绍 USBFS/USBHS 模块的
工作原理、固件库架构,简要描述了固件库函数的功能、主机状态机和 USB 中断的工作原理,
以 MSC 主机和 HID 设备为例,概括地说明 USB 主机和设备的实现过程。
1.2.
USBFS/USBHS 原理简介
目前,GD32F105/107/205/207/305/307/350/4xx/E103 系列 MCU 具有 USBFS 接口模块,且
这些系列中 USBFS 接口模块的架构及原理相同,在本指南中将为读者以 GD32F4xx 系列为例
介绍 USBFS 接口模块原理。另外,在 GD32F4xx 系列 MCU 中,也包括高速 USBHS 接口模
块,本指南将一并介绍。
USBFS 接口模块可以作为仅支持全速(FS,12Mbps)传输的的设备模式运行,也可以作为支
持全速(FS,12Mbps) 与低速(LS,1.5Mbps)传输的主机模式运行。USBFS 控制器实际
是一个双角色设备(DRD),它在点到点通信中既可以作为主机,也可以作为设备。在 OTG 模
式下,主机和从机的切换需遵从 OTG 标准的会话请求协议(SRP)和主机协商协议(HNP)。
USBHS 接口模块具有 USBFS 接口模块所有的特性及功能,并且在此基础之上,USBHS 接口
模块可支持 USB2.0 高速(480Mbps)主机或设备。
1.2.1.
USBFS 原理
USBFS 结构
如图 1-1. USBFS 结构框图所示,其中,Cortex-M 内核通过 AHB 从机总线对 USBFS 接口模
块寄存器进行读写操作;USBFS 寄存器可为 NVIC 产生相应 USB 中断;USBFS 包含一个
1.25KB Data FIFO,数据 FIFO 和串行接口引擎(SIE)相连,在设备模式下,数据 FIFO 可分为
一个接收 FIFO 和多个发送 FIFO,其中所有的 OUT 端点共享接收 FIFO,每个 IN 端点可独立
使用一个发送 FIFO,在主机模式下,数据 FIFO 分为三个部分,分别是:用于接收包数据的接
收 FIFO、用于非周期性发送包数据的非周期性发送 FIFO 和用于周期性发送包数据的周期性
发送 FIFO,所有的 IN 通道共享接收 FIFO,所有的周期性 OUT 通道共享周期性发送 FIFO,
所有的非周期性 OUT 通道共享非周期性发送 FIFO;USB 时钟域时钟来自 RCU 所配置的
48Mhz 时钟;USBFS 控制器通过 UIMI 多路器与 USBFS PHY 物理层相连,USBFS PHY 物
理层用于实现 USB 通信,其包括 USB 收发器和 USB 接口电路等。
5
GD32 USBFS/USBHS 固件库用户指南
图 1-1. USBFS 结构框图
USBFS 接口模块主要特性
USBFS 接口模块的主要特性如表 1-1. USB_FS 接口模块主要特性列表所示。
表 1-1. USB_FS 接口模块主要特性列表
主机特性
8 个主机通道
设备特性
4 个双向端点(包括端点 0)
周期性 TX_FIFO:存储需要传输的同
步和中断传输数据;非周期性
4 个独立的 TX_FIFO 对应于 4 个 IN
TX_FIFO:存储需要传输的批量和控
端点
制传输请求。
一个共享的 RX_FIFO 用以接收数据 一个共享的 RX_FIFO 用以接收数据
需要外接电源芯片为所连接的设备供
电
支持软件断开
支持 USB 2.0 全速( 12Mb/s) /低
支持 USB 2.0 全速( 12Mb/s) 设备
速( 1.5Mb/s)主机模式
周期性队列:管理最多 8 个同步和中
断传输请求;非周期性队列:管理最
多 8 个批量和控制传输请求。
模式
支持所有的 4 种传输方式:控制传输、批量传输、中断传输和同步传输
支持遵循 HNP(主机协商协议)和 SRP(会话请求协议)的 OTG 协议
USBFS 主机模式
USBFS 在以下四种情况下,作为主机使用:
⑴ 插入 USB A 电缆时的 USBFS 接口模块的默认状态(OTG A 器件);
⑵ 插入 USB B 电缆后的 USBFS 接口模块(OTG B 器件)被 HNP 切换为主机角色的状态;
6
USB Clock DomainDPDMIDVBUSUSB InterruptRegisterOTG ControlHost Port ControlDevice Bus ControlSIEUSB FS PHYData FIFOUTMI MUXTranscation SchedulerUSB Clock48MHz
GD32 USBFS/USBHS 固件库用户指南
⑶ OTG A 器件的全局 USB 配置寄存器中的 HNP 功能位清零(不可利用 HNP 切换为设备);
⑷ 仅作主机:全局 USB 配置寄存器中的强制主机模式位置位,强制 USBFS 仅作为主机,这
种情况下,将忽略 ID 线的状态,并且使能 DP 和 DM 上集成的下拉电阻。
USBFS 作为主机或设备的连接示意图如图 1-2 所示,若 USBFS 仅作为主机,则需要 5V 供电
电源,在此种情况下,5V 供电电源为外部 USB 设备供电。
USBFS 设备模式
USBFS 在以下四种情况下作为设备使用:
⑴ 插入 USB B 端电缆时 USBFS 接口模块的默认状态(OTG B 器件);
⑵ 插入 USB A 端电缆后 USBFS 接口模块(OTG A 器件)被 HNP 切换为设备角色后的状态;
⑶ OTG B 器件的全局 USB 配置寄存器中的 HNP 功能位清零(不可利用 HNP 切换为主机);
⑷ 仅作设备:全局 USB 配置寄存器中的强制设备模式位置位,强制 USBFS 仅作为设备,这
种情况下,将忽略 ID 线的状态。
USBFS 作为主机或设备的连接示意图如图 1-2. USBFS 作为主机或设备连接示意图所示。若
USBFS 仅作为主机,5V 供电电源不需要,VBUS 引脚用于检测 VBUS 电压,监测 OTG_FS
是否和主机断开连接;DP 和 DM 为 USB 通信的差分信号线。
图 1-2. USBFS 作为主机或设备连接示意图
USBFS OTG 模式
USBFS OTG 设备的连接示意图如
图 1-3. USBFS 作为 OTG 设备连接示意图所示。除正常 USB 接口的四根线外,还多出了
一根 ID 线,该线用于决定该 USBFS 接口模块的角色。若 USB 电缆 B 端连入,由于其 ID 线
悬空,设备在 ID 线上集成上拉电阻,设备将检测到 ID 线高电平,USBFS 将采取默认的从机
角色;若 USB 电缆 A 端连入,由于其 ID 线接地,则 OTG_FS 将发出 ID 线状态更改中断以初
始化主机软件,并自动切换为主机角色。
7
VBUSDMDPDPDMVBUS5V Supply Power (necessary in host mode)VDDUSB A/B connectorGPIOUSBFSGND
GD32 USBFS/USBHS 固件库用户指南
GPIO 口用于控制产生 5V 电源,该电源为外部输入电源,当 USBFS 作为 A 设备时,该电源
为另一设备供电和为 MCU 供电;VBUS 引脚用于监控 VBUS 电压。
图 1-3. USBFS 作为 OTG 设备连接示意图
1.2.2.
USBHS 原理
USBHS 接口模块内部包含一个嵌入式全速 USBFS PHY(物理层),该物理层比 USBFS 模块
物理层功能更强,可支持多达 6 个双向设备端点和 12 个主机通道,4K FIFO 空间。因此 USBHS
可利用内部嵌入式 USBFS PHY 实现全速和低速操作。如果 USBHS 连接到外部 ULPI 物理
层,则可实现 USB 高速通信,其数据传输速率可高达 480Mbps。当 USBHS 操作在高速主机
模式下时,USBHS 可支持 HUB 连接。另外,USBHS 内部还有一个 DMA 引擎,利用该引擎
可加速 USBHS 和系统之间的数据传输。
USBHS 结构
USBHS 结构框图如图 1-4. USBHS 结构框图所示,与 USBFS 相比,USBHS 结构框图中增
加了 DMA 传输引擎和 ULPI 接口,可用于 USBHS 高速通信。
8
DPIDDMVBUS5V Supply PowerVDDUSB Micro/Mini connectorGPIOUSBFSGNDVBUSDMDPID