
前言 本文档描述 STM32Cube™ 的 USB 主机库中间件模块。 众所周知,通用串行总线 (USB)是介于作为主机的个人计算机 (PC)与所连接的 USB 外设之间的事实通信标准。目前嵌入式便携设备数量日益增多,USB 主机已不再局限于 PC,嵌入式消费终端与工业设备作为主机已越来越普遍,而嵌入式主机功能有限,仅支持特定的USB 类 (比如大容量存储类、虚拟通信端口等)或特定的供应商设备。 本文档详细描述了 STM32Cube™ USB 主机库,即在 STM32CubeF2 和 STM32CubeF4 软件包中所提供的 USB 主机协议栈。它使用 STM32 微控制器作为 USB 嵌入式主机,与各种USB 类的 USB 外设进行通信 (MSC、 HID、 CDC、音频和 MTP)。 STM32Cube™ 软件包是一款免费解决方案,可以从意法半导体网站下载: 1 STM32Cube™ 概述 STMCube™ 计划源自意法半导体,旨在通过减少开发的工作量、时间与成本,使开发者受益。 STM32Cube™ 将涵盖 STM32 全线产品组合。! y. x! H/ ~1 c STM32Cube™1.x 版包括: • 图形软件配置工具 STM32CubeMX,可通过图形向导生成初始化 C 代码。# n f2 x3 e( [, |. X: g- U, }8 ] • 针对每个系列提供综合的嵌入式软件平台,(比如用于 STM32F4 系列的 STM32CubeF4)5 o! K0 ~2 I, L$ l# Z – STM32 抽象层嵌入式软件 STM32Cube HAL,确保用户应用在 STM32 各个产品之间实现最大限度的可移植性。 – 一套中间件组件,比如 RTOS、 USB、 TCP/IP、图形处理。 – 一整套例程用于演示所有嵌入式软件功能。, l, b! q- @' Y" e% J/ [1 p6 `5 Z 2 j4 x1 ^) z' y& [2 I7 U ![]() * j3 z( k9 _3 H8 U* B9 ? ~; g0 Y : X9 l$ {7 {6 x; o' p5 f1 [9 A. [ 2 简介+ }/ ~/ U9 ] C- l" w) J 本文档描述 STM32Cube 的 USB 的主机库中间件模块。 USB 主机库处于 STM32Cube USB 主机 HAL 驱动之上。该库提供用于访问各类 USB 设备的 API。 USB 主机模块可用于实现主要的 USB 类。 • 大容量存储类 (MSC) • 人机接口鼠标与键盘类 (HID) • 通信设备类 (CDC) • 音频类 (AUDIO) • 媒体传输协议类 (MTP) 除了以上所列的类以外,用户还能通过库提供的 API 来实现自己的应用类别。0 Q& z/ @ D! J% [& K) P; K3 c) p( R 该库可单独运行也可以运行在 RTOS 模式之下。该库还支持多实例,比如可以在两个或更多的 USB 主机模块上工作。% j8 t# b, ^, ^$ a' M ![]() r/ c/ y$ ~% C 3 USB 主机库架构与文件组织 3.1 USB 主机库架构 " z& V0 j9 H9 b" ^; |8 g ![]() 6 ^; d k! S) N" N 如 图 3 所示, USB 主机库分为两个主要部分:内核部分和类相关的驱动部分。 主机内核用于处理库的内核服务,这些服务主要用于:" V4 o. t+ p$ S* w • 设备的连接 / 断连管理与标准枚举。 • 主机管道控制与 USB 传输管理 (控制、中断、批量、同步)。& j3 Y! O3 U+ I3 q4 ] 内核数据块被细分为两个主要子数据块:+ L7 U) k) \1 s • 被用户应用或类驱动所调用的内核 API。 • 处理主机状态机的内核过程。类驱动用于实现各种 USB 类。: O7 U* k, v9 { f 这些类驱动包括: • 一套类专用的 API (比如 disk_read、 disk_write),可在应用层调用。6 g7 a% n! j( P+ h% r • 一个类处理程序,由内核主机状态机 (内核过程)所调用,用于处理类操作 (类的初始化、解除初始化、类过程)。: t6 k4 L& F% @, n 主机内核和类驱动在经历某些已定义事件 (比如设备的连接 / 断连,数据接收)后,会调用用户回调函数。% u( ?2 U$ b( v0 I USB 主机库利用接口层与 STM32Cube HAL 驱动相连接。 库中提供了实现底层接口层的模板文件。用户可以定制文件中与板支持包要求有关的内容部分。# J! L6 n* }# o* F& z! j- e ' F k7 t; p# C 3.2 USB 主机库文件组织 3.2.1 USB 主机内核文件 USB 主机内核文件位于 Core 文件夹 (STM32_USB_Host_Library\Core)中。 表 1 列出了 2 z) F6 E" J3 `, n; } 内核文件。 0 P4 }5 ]6 _- F' a5 h ![]() 3.2.2 USB 主机类文件 表 2 列出了位于 Class 文件夹 (TM32_USB_Host_Library\Core)中的类文件: b% w/ ]# J0 \ 9 z2 A( K4 Q: b2 c0 E2 d0 v ![]() 完整版请查看:附件! H+ a' R1 d E* a5 u5 c- x |
DM00105256_ZHV1.pdf
下载687.54 KB, 下载次数: 7
最全USB HID开发资料,悉心整理一个月,亲自测试
实战经验 | 选择USBX模块生成USB CDC ACM无PD的项目
STM32 USB HID键盘例程
刘氓兔的杂谈【001】-片上USB 高速PHY
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
【源码】STLINK-V3MINI 高速USB仿真器,成功改刷【高速CMSIS-DAP】
在线直播|无需编写任何代码即可在STM32上实现USB-C Power Delivery
STM32 USB CDC 虚拟多串口
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
USB Audio设计与实现