STM32F10xxx全速USB设备开发套件用户手册孙旭朋译简介STM32全速USB设备开发套件是一个完整的固件和软件开发包,包括例子和演示所有USB传输类型(控制,中断,批量和同步)。它支持所有的STM32微控制器系列。STM32全速USB设备开发套件旨在让每个USB传输类型的设备库至少有一个固件演示程序。该文件提出了一个描述的STM32全速USB设备的所有组件的开发工具包,包括:■STM32USB-FS设备库:默认端点和标准请求有关的所有进程■设备固件升级(DFU)演示:控制传输■操纵杆鼠标演示:中断传输■自定义HID演示:中断传输■大容量存储演示:批量传输■虚拟COM端口演示:中断和批量传输■USB音频扬声器演示(USB扬声器):同步传输■USB音频流演示:同步传输表1:使用产品类型产品子类微控制器STM32F1主流产品STM32L1超低功耗产品目录简介...............................................................0目录...............................................................11STM32微控制器系列综述............................................32STM32USB-FS-设备固件库..........................................32.1USB应用层次....................................................42.2USB-FS设备外围接口.............................................52.3OTG-FS设备外围接口...........................................102.4USB-FS设备驱动程序介质层......................................132.5应用程序接口...................................................172.6使用STM32USB-FS-设备库实现USB-FS设备应用程序。...............213操纵杆鼠标例程...................................................233.1描述...........................................................233.2STM32在挂起模式下的低功耗管理.................................243.3远程唤醒.......................................................244自定义HID例程...................................................254.1描述...........................................................254.2描述符的拓扑结构...............................................254.3自定义HID的实现...............................................265大容量存储例程...................................................275.1描述...........................................................275.2大容量存储例程概述.............................................285.3大容量存储设备协议.............................................295.4大容量存储例程的实现...........................................325.5如何自定义大容量存储范例.......................................376虚拟COM端口例程................................................406.1描述...........................................................406.2虚拟COM端口范例方案...........................................406.3软件驱动程序的安装.............................................416.4实现..........................................................427USB音频扬声器例程..............................................437.1描述...........................................................437.2同步传输综述...................................................437.3音频设备类综述.................................................447.4STM32USB扬声器范例...........................................4518USB音频流例程..................................................548.1概述...........................................................548.2STM32USB音频流例程...........................................5521STM32微控制器系列综述在此文件中,STM32是指以下设备:■小容量设备:STM32F101xx,STM32F102xx和STM32F103xx微控制器,flash大小在16-32KB之间。■中容量设备:STM32F101xx,STM32F102xx和STM32F103xx微控制器,flash大小在64-128KB之间。■大容量设备:STM32F101xx和STM32F103xx微控制器,flash大小在256-512KB之间。■超大容量设备:STM32F101xx和STM32F103xx微控制器,flash大小在512-1024KB之间。■互联型设备:STM32F105xx和STM32F107xx微控制器。■中容量低功耗设备:STM32L15xx微控制器,flash大小在64-128KB之间。■增强型低功耗中容量设备:STM32L15xx和STM32L162xx微控制器,flash大小为256KB。■低功耗大容量设备:STM32L15xx和STM32L162xx微控制器,flash大小为384KB。2STM32USB-FS-设备固件库本节主要介绍了STM32USB2.0全速设备和USB2.0OTG全速设备外设的固件接口(USB-FS-设备库)。在文章的其余部分,分别介绍了USB_FS_Device外设和OTG_FS_Device。USB-FS_Device的设备库支持低,中,高容量器件,同时支持USB2.0全速设备开发。OTG-FS_Device是OTG-FS外设库的一部分,可用于互联性设备,并支持主机,从机和双重角色。USB-FS-设备库支持USB-FS_Device的外设和OTG-FS_Device的外设,无论是在设备模式下,还是硬件抽象层。这个固件库的主要目的是为基于STM32微控制器的USB-FS_Device和OTG-FS_Device的外围设备提供资源,使其应用程序的开发更加容易。32.1USB应用层次图1展示了一个典型的USB应用与USB-FS-Devicelibrary的关系图。图1:典型的USB应用与USB-FS-Devicelibrary的关系图USB-FS-设备库分为两层:●STM32_USB-FS_Device_Driver:该层管理USB外设(USB-FS_Device外设及OTG-FS_Device外设)和USB标准协议的直接通信。STM32_USBFS_Device_Driver是符合USB2.0规范的,它与STM32的标准外设库是分开的。●ApplicationInterfacelayer(应用程序接口层):该层为用户提供了一个完整的固件库内核和最终应用之间的接口。当使用STM32互联性产品时,OTG-FS_外围设备接口层被加载(通过在编译时定义)和作为外设接口层。USB-FS外围层的功能函数不会被加载。当使用其它STM32设备,只有USB-FS_外围设备接口层被加载(通过在编译时定义)和作为外设接口层。4然而,核心的库(usb_core(C,h),usb_istr(h):C,...)是常见的,保持不变。警告:在互联型设备中任何引用“_USB-FS_Device外设”的声明是无效的,在所有其他设备中任何引用“OTGFS_Device外设”的声明也是无效的。注:应用程序接口层和最终应用可以与标准外设库通信来管理应用程序的硬件需求。在接下来的章节中将对这些层和编码规则进行详细描述。图2显示了USB-FS-设备库范例和子文件夹的所有内容。图2:USB-FS-设备库范例和子文件夹2.2USB-FS设备外围接口表2列出了USB-FS设备外围接口模块。5表2:USB-FS设备外围接口模块文件描述usb_reg(.h,.c)硬件抽象层usb_int.c端点传输中断服务程序usb_mem(.h,.c)数据传输管理(内存区域)2.2.1usb_reg(.h,.c)Usb_reg模块实现了硬件抽象层的基本功能,它提供了一组用于访问USB-FS外设寄存器。注:函数有两种调用方式:–Asamacro:thecallis:_NameofFunction(parameter1,...)–Asasubroutine:thecallis:NameofFunction(parameter1,...)通用寄存器的函数这些功能可以用来设置或得到不同的常见的USB-FS外设寄存器。表3:通用寄存器函数寄存器函数CNTRvoidSetCNTR(uint16_twValue)uint16_tGetCNTR(void)ISTRvoidSetISTR(uint16_twValue)uint16_tGetISTR(void)FNRuint16_tGetFNR(void)DADDRvoidSetDADDR(uint16_twValue)uint16_tGetDADDR(void)BTABLEvoidSetBTABLE(uint16_twValue)uint16_tGetBTABLE(void)端点寄存器的功能所有端点寄存器的操作,可以得到的SetENDPOINT和GetENDPOINT功能。然而,许多功能都源于这些直接作用于特定的字段可提供的优势。(a)设置/获取端点值SetENDPOINT:voidSetENDPOINT(uint8_tbEpNum,uint16_twRegValue)bEpNum=Endpointnumber,wRegValue=ValuetowriteGetENDPOINT:uint16_tGetENDPOINT(uint8_tbEpNum)6bEpNum=Endpointnumberreturnv