打印
[应用相关]

学习笔记+STM32访问U盘的应用

[复制链接]
617|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
【学习笔记+STM32访问U盘的应用】
查看官网的文档发现U盘、读卡器、移动硬盘都是MSC类。而MSC (Mass Storage Class) 是 USB 规范提供的一种 USB 大容量存储设备类, 允许一个 USB 接口的设备与 USB 主机相连接, 以便在两者之间传输文件。 USB MSC 传输协议分为 CBI (Control / Bulk / Interrupt) 和 BOT (Bulk-only Transfer)。 BOT协议在不影响功能的情况下省去了对 Interrupt 端点的需求,被存储设备广泛支持。STM32 提供的 USB 库支持 USB MSCBOT 协议。
硬件支持:

不同的 STM32 系列, 对 USB 的支持情况如下。对于 STM32F105/107、 STM32F2、 STM32F4、 STM32F7 和STM32H7 系列, 部分型号支持 USB OTG,能够实现 USB 主机和从机。 U 盘作为 USB MSC 设备,需要 STM32 作为 USB MSC 主机,实现两者间的访问。
对于 STM32 OTG, 配置为仅主机模式时, 不需使用 OTG_ID,可将其引脚用于其他功能。 并且在不使用 SRP (SessionRequest Protocol) 和 HNP (Host Negotiation Protocol) 时,可不连接 VBUS 至 PA9。 电路简化如下图。

软件支持:
1、开发流程
            
在不考虑 SRP 和 HNP 时,访问 U 盘,只需要 STM32 的 USB OTG 的 USB 数据正负线即可。根据硬件情况, 选择调试接口、 外部时钟、 USB OTG FS 和 USB 中间件 。

在STM32cube上选择对应的 IDE 和希望基于的 STM32Cube 软件包位置。实例简单,堆栈占用小,堆栈配置保持默认即可。  
2、添加 U 盘访问实现。
STM32CubeMX 生成的工程,调用 STM32Cube USB 主机库。在库中, 软核将 USB 事件传输至用户层,并执行回调用户函数。方便在用户层的回调函数中添加应用实现。 用户回调事件如下表、USB软核状态如下图所示。


在工程中添加/修改对 U 盘的写读访问操作和相关源码

usb_host.c:          

usb_host.h:
3、编译生成的应用固件。利用 IDE 进行编译、链接、下载到目标板,实现 U 盘信息获取和读写操作。  



使用特权

评论回复
沙发
mmuuss586| | 2020-1-16 11:57 | 只看该作者
感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

438

帖子

3

粉丝