《stm32cubeusb 主机库》由会员分享,可在线阅读,更多相关《stm32cubeusb 主机库(44页珍藏版)》请在金锄头文库上搜索。
1、2014 年 5 月DocID025799 Rev 11/44 UM1720 用户手册用户手册 STM32Cube USB 主机库 前言前言 本文档描述 STM32Cube的 USB 主机库中间件模块。 众所周知,通用串行总线 (USB)是介于作为主机的个人计算机 (PC)与所连接的 USB 外 设之间的事实通信标准。目前嵌入式便携设备数量日益增多,USB 主机已不再局限于 PC,嵌 入式消费终端与工业设备作为主机已越来越普遍,而嵌入式主机功能有限,仅支持特定的 USB 类 (比如大容量存储类、虚拟通信端口等)或特定的供应商设备。 本文档详细描述了 STM32Cube USB 主机库,即在 S
2、TM32CubeF2 和 STM32CubeF4 软 件包中所提供的 USB 主机协议栈。它使用 STM32 微控制器作为 USB 嵌入式主机,与各种 USB 类的 USB 外设进行通信 (MSC、 HID、 CDC、音频和 MTP) 。 STM32Cube软件包是一款免费解决方案,可以从意法半导体网站下载: 目录目录UM1720 2/44DocID025799 Rev 1 目录目录 1STM32Cube 概述概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2简介
3、简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3USB 主机库架构与文件组织主机库架构与文件组织 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.1USB 主机库架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4、. . . . . . . . . 8 3.2USB 主机库文件组织 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2.1USB 主机内核文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2.2USB 主机类文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5、. . . . . . . . . . . 10 4主机库内核模块主机库内核模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.1内核功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 4.2内核 API,用户回调与数据结构 . . . . . . . . . . . . . . . . .
6、. . . . . . . . . . . . . . . .11 4.2.1应用的内核 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.2.2内核用户回调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.2.3类处理程序的内核 API . . . . . . . . . . . . . . . . . . . .
7、 . . . . . . . . . . . . . . . . . . 13 4.2.4主要的主机内核数据结构体与枚举类型定义 . . . . . . . . . . . . . . . . . . . . . 13 4.3内核状态机概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.4具备底层驱动的内核接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8、. 20 5USB 主机库类模块主机库类模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.1类实现模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.2USB 大容量存储类 (MSC). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9、 . . . 23 5.2.1MSC 类接口初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.2.2MSC 类相关控制请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.2.3MSC 类处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10、. . . . . . 24 5.2.4MSC 类专用 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.2.5MSC 类的典型使用流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.3USB HID 鼠标与键盘类 (HID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11、. 26 5.3.1HID 类接口初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.3.2HID 类请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.3.3HID 类过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12、 . . . . . . . . . . . 28 5.3.4HID 专用 API 与事件回调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.3.5HID 类的使用流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 DocID025799 Rev 13/44 UM1720目录目录 3 5.4USB 通信设备类 (CDC) . . . . . . . . . . .
13、. . . . . . . . . . . . . . . . . . . . . . . . . 29 5.4.1CDC 接口初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.4.2CDC 类请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.4.3CDC 类过程 . . . . . . . . . . . .
14、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.4.4CDC 专用 API 与回调函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.4.5CDC 类的使用流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.5USB 音频类. . . . . . . . . . . .
15、 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.5.1音频类接口初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.5.2音频类控制请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.5.3音频类过程 . . . . . .
16、. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.5.4音频类 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.5.5音频类的使用流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.6USB 媒体传输协议类 (MTP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.6.1MTP 接口初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.6.