没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示


试读
44页
本文档描述 STM32Cube ™ 的 USB 主机库中间件模块。 众所周知,通用串行总线 (USB)是介于作为主机的个人计算机 (PC)与所连接的 USB 外 设之间的事实通信标准。目前嵌入式便携设备数量日益增多,USB 主机已不再局限于 PC,嵌 入式消费终端与工业设备作为主机已越来越普遍,而嵌入式主机功能有限,仅支持特定的 USB 类 (比如大容量存储类、虚拟通信端口等)或特定的供应商设备。 本文档详细描述了 STM32Cube ™ USB 主机库,即在 STM32CubeF2 和 STM32CubeF4 软 件包中所提供的 USB 主机协议栈。它使用 STM32 微控制器作为 USB 嵌入式主机,与各种 USB 类的 USB 外设进行通信 (MSC、 HID、 CDC、音频和 MTP)。
资源推荐
资源详情
资源评论














2014 年 5 月 DocID025799 Rev 1 1/44
UM1720
用户手册
STM32Cube™ USB 主机库
前言
本文档描述 STM32Cube™ 的 USB 主机库中间件模块。
众所周知,通用串行总线 (USB)是介于作为主机的个人计算机 (PC)与所连接的 USB 外
设之间的事实通信标准。目前嵌入式便携设备数量日益增多,USB 主机已不再局限于 PC,嵌
入式消费终端与工业设备作为主机已越来越普遍,而嵌入式主机功能有限,仅支持特定的
USB 类 (比如大容量存储类、虚拟通信端口等)或特定的供应商设备。
本文档详细描述了 STM32Cube™ USB 主机库,即在 STM32CubeF2 和 STM32CubeF4 软
件包中所提供的 USB 主机协议栈。它使用 STM32 微控制器作为 USB 嵌入式主机,与各种
USB 类的 USB 外设进行通信 (MSC、 HID、 CDC、音频和 MTP)。
STM32Cube™ 软件包是一款免费解决方案,可以从意法半导体网站下载:
http://www.st.com/stm32cube。
www.st.com

目录 UM1720
2/44 DocID025799 Rev 1
目录
1 STM32Cube™ 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3USB主机库架构与文件组织 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1 USB 主机库架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 USB 主机库文件组织 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.1 USB 主机内核文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.2 USB 主机类文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4 主机库内核模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1 内核特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
4.2 内核 API,用户回调与数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
4.2.1 应用层调用的内核 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2.2 内核的用户回调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2.3 类处理程序的内核 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2.4 主要的主机内核数据结构体与枚举类型定义 . . . . . . . . . . . . . . . . . . . . . 13
4.3 内核状态机概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.4 内核的底层驱动接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5USB主机库类模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.1 类实现模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.2 USB 大容量存储类 (MSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2.1 MSC 类接口初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2.2 MSC 类相关控制请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.2.3 MSC 类处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.2.4 MSC 类专用 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.2.5 MSC 类的典型使用流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.3 USB HID 鼠标与键盘类 (HID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.3.1 HID 类接口初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3.2 HID 类请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3.3 HID 类处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.3.4 HID 类专用 API 与事件回调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.3.5 HID 类的使用流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

DocID025799 Rev 1 3/44
UM1720 目录
3
5.4 USB 通信设备类 (CDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.4.1 CDC 接口初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.4.2 CDC 类请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.4.3 CDC 类处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.4.4 CDC 专用 API 和回调函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.4.5 CDC 类的使用流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.5 USB 音频类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.5.1 音频类接口初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.5.2 音频类控制请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.5.3 音频类处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.5.4 音频类 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.5.5 音频类的使用流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.6 USB 媒体传输协议类 (MTP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.6.1 MTP 接口初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.6.2 MTP 类控制请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.6.3 MTP 类处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.6.4 MTP 用户应用 API 与回调函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.6.5 MTP 类的使用流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6 使用 USB 主机库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.1 USB 主机库配置选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.2 在单任务模式中使用主机库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.3 在 RTOS 模式中使用主机库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.3.1 RTOS 模式中的典型操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.4 定制底层接口文件 usbh_conf.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.4.1 USB 主机控制器 BSP 函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.4.2 USB 主机控制器 HAL 驱动回调函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.4.3 USB 主机库底层接口 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.5 FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7 修订历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

表格索引 UM1720
4/44 DocID025799 Rev 1
表格索引
表 1. USB 主机内核文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
表 2. 类驱动文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
表 3. 应用的内核 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
表 4. 内核用户回调事件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
表 5. 类处理程序的专用内核 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
表 6. 主机句柄结构体. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
表 7. 主机句柄结构体. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
表 8. USB 主机状态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
表 9. 底层接口 API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
表 10. 底层事件回调函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
表 11. 主机类句柄结构体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
表 12. 用于实现 USB MSC 的文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
表 13. USB 主机大容量存储类处理程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
表 14. SCSI 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
表 15. MSC 类专用 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
表 16. 用于实现 HID 类的文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
表 17. HID 类请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
表 18. HID API 与事件回调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
表 19. CDC 类请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
表 20. CDC 类 API 与回调函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
表 21. 音频类控制请求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
表 22. 音频类 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
表 23. MTP API 和回调函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
表 24. USB
主机库配置选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
表 25. USB 主机控制器 (HCD) HAL 驱动回调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
表 26. USBH_LL_Init 配置选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
表 27. 文档修订历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

DocID025799 Rev 1 5/44
UM1720 图片索引
5
图片索引
图 1. STM32Cube™ 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
图 2. STM32Cube USB 主机库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
图 3. USB 主机库架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
图 4. USBH_HandleTypedef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
图 5. 设备描述符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
图 6. 内核状态机 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
图 7. 类结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
图 8. BOT 状态机. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
图 9. USB MSC 类的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
剩余43页未读,继续阅读
资源评论


薄酒夜夏
- 粉丝: 1
- 资源: 4
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 学生成绩管理系统(C语言).txt
- 学生成绩管理系统(C语言).txt
- Screenshot_2023-12-10-12-52-34-127_net.csdn.csdnplus.jpg
- Screenshot_2023-12-10-12-50-49-374_net.csdn.csdnplus.jpg
- mxnet-cu111-1.9.0b20230903-py3-none-manylinux2014-x86-64.whl
- mxnet-cu110-2.0.0b20220324-py3-none-manylinux2014-x86-64.whl
- mxnet-cu110-1.9.1b20220823-py3-none-manylinux2014-x86-64.whl
- mxnet-cu110-1.9.0-py3-none-manylinux2014-x86-64.whl
- mxnet-cu110-1.9.0b20230903-py3-none-manylinux2014-x86-64.whl
- mxnet-cu110-1.8.0b20210324-py2.py3-none-manylinux2014-x86-64.whl
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
