STMCU小助手
发布时间:2022-7-23 21:39
|
前言 本文档描述 STM32Cube™ 的 USB 主机库中间件模块。 众所周知,通用串行总线 (USB)是介于作为主机的个人计算机 (PC)与所连接的 USB 外设之间的事实通信标准。目前嵌入式便携设备数量日益增多,USB 主机已不再局限于 PC,嵌入式消费终端与工业设备作为主机已越来越普遍,而嵌入式主机功能有限,仅支持特定的USB 类 (比如大容量存储类、虚拟通信端口等)或特定的供应商设备。/ h: p: d- f# W+ u# q" P 本文档详细描述了 STM32Cube™ USB 主机库,即在 STM32CubeF2 和 STM32CubeF4 软件包中所提供的 USB 主机协议栈。它使用 STM32 微控制器作为 USB 嵌入式主机,与各种USB 类的 USB 外设进行通信 (MSC、 HID、 CDC、音频和 MTP)。 STM32Cube™ 软件包是一款免费解决方案,可以从意法半导体网站下载:! I- c% {) r/ J7 ]* x1 \# ` 1 STM32Cube™ 概述 STMCube™ 计划源自意法半导体,旨在通过减少开发的工作量、时间与成本,使开发者受益。 STM32Cube™ 将涵盖 STM32 全线产品组合。) F( r6 ~1 M7 @* e% p% j STM32Cube™1.x 版包括:8 E: ^3 U6 W5 w9 l a, t( ], y5 ] • 图形软件配置工具 STM32CubeMX,可通过图形向导生成初始化 C 代码。* G3 W5 i5 E$ f9 X • 针对每个系列提供综合的嵌入式软件平台,(比如用于 STM32F4 系列的 STM32CubeF4)- R1 P$ F' o" Y- J" k – STM32 抽象层嵌入式软件 STM32Cube HAL,确保用户应用在 STM32 各个产品之间实现最大限度的可移植性。 – 一套中间件组件,比如 RTOS、 USB、 TCP/IP、图形处理。 – 一整套例程用于演示所有嵌入式软件功能。 / M& \( V V/ ~. v1 U! L1 c. o, \( s- M( k+ D
2 简介7 l$ f! E' g' g4 S3 ] 本文档描述 STM32Cube 的 USB 的主机库中间件模块。 USB 主机库处于 STM32Cube USB 主机 HAL 驱动之上。该库提供用于访问各类 USB 设备的 API。- y2 b8 Y8 v" o USB 主机模块可用于实现主要的 USB 类。 • 大容量存储类 (MSC) • 人机接口鼠标与键盘类 (HID) • 通信设备类 (CDC) • 音频类 (AUDIO) • 媒体传输协议类 (MTP)2 v# Q5 d Z& e4 u9 Y* M1 S. G# p 除了以上所列的类以外,用户还能通过库提供的 API 来实现自己的应用类别。/ n e# A% x2 m& ^9 n& d: i 该库可单独运行也可以运行在 RTOS 模式之下。该库还支持多实例,比如可以在两个或更多的 USB 主机模块上工作。/ _4 [) o- w0 V. |& K. ? 0 w! b# Z, h6 r& V7 @ D
# a% T i; D( T, S9 h/ D! q$ s 3 USB 主机库架构与文件组织. i5 T q' g( A 3.1 USB 主机库架构
. A* P5 h; [& e# s3 ~ 如 图 3 所示, USB 主机库分为两个主要部分:内核部分和类相关的驱动部分。1 w9 x& }4 Q2 r3 `( P 主机内核用于处理库的内核服务,这些服务主要用于:1 m; @( }3 v7 g; ], W. U • 设备的连接 / 断连管理与标准枚举。# X H3 g* m. x0 U • 主机管道控制与 USB 传输管理 (控制、中断、批量、同步)。. r* D* w: j- H7 ?2 `8 N3 m 内核数据块被细分为两个主要子数据块: • 被用户应用或类驱动所调用的内核 API。 • 处理主机状态机的内核过程。类驱动用于实现各种 USB 类。2 E7 H/ @! m) p0 Q3 C9 ^# ^ 0 @8 k2 P7 T( c" X' W3 h1 Z 这些类驱动包括:4 L$ o) e8 M+ }) a7 I% n • 一套类专用的 API (比如 disk_read、 disk_write),可在应用层调用。/ i, s+ g3 X# [" y2 q8 ~ • 一个类处理程序,由内核主机状态机 (内核过程)所调用,用于处理类操作 (类的初始化、解除初始化、类过程)。 主机内核和类驱动在经历某些已定义事件 (比如设备的连接 / 断连,数据接收)后,会调用用户回调函数。 USB 主机库利用接口层与 STM32Cube HAL 驱动相连接。% z) B8 F+ v6 [8 h* X' R, L& \% T) ~ 库中提供了实现底层接口层的模板文件。用户可以定制文件中与板支持包要求有关的内容部分。7 n$ F* A' t8 v1 q8 j , i6 C2 f8 z. Y 3.2 USB 主机库文件组织 3.2.1 USB 主机内核文件3 L# E) ]& g8 |/ z9 [ USB 主机内核文件位于 Core 文件夹 (STM32_USB_Host_Library\Core)中。 表 1 列出了 ; _2 J- r" X* E7 v6 P 内核文件。 , L q' l: M5 v6 D/ H5 E) Z1 R
3.2.2 USB 主机类文件 表 2 列出了位于 Class 文件夹 (TM32_USB_Host_Library\Core)中的类文件 & e( r; g7 F, g/ \% \
完整版请查看:附件 |
DM00105256_ZHV1.pdf
下载687.54 KB, 下载次数: 11
最全USB HID开发资料,悉心整理一个月,亲自测试
【源码】STLINK-V3MINI 高速USB仿真器,成功改刷【高速CMSIS-DAP】
STM32 USB CDC 虚拟多串口
实战经验 | 选择USBX模块生成USB CDC ACM无PD的项目
STM32 USB HID键盘例程
刘氓兔的杂谈【001】-片上USB 高速PHY
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
在线直播|无需编写任何代码即可在STM32上实现USB-C Power Delivery
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
USB Audio设计与实现
微信公众号
手机版