2024年3月12日发(作者:)

USB Mass Storage学习笔记-STM32+FLASH实现U盘

USB Mass Storage学习笔记-STM32+FLASH实现U盘

一、 内容概述

采用STM32内部自带USB控制器外加大页NAND FLASH K9F1G08U0A实现一个

128M的U盘。

1、STM32的USB控制器

STM32F103的MCU自带USB从控制器,符合USB规范的通信连接;PC主机和微

控制器之间的数据传输是通过共享一专用的数据缓冲区来完成的,该数据缓冲区能被USB

外设直接访问。这块专用数据缓冲区的大小由所使用的端点数目和每个端点最大的数据分

组大小所决定,每个端点最大可使用512字节缓冲区,最多可用于16个单向或8个双向

端点。USB模块同PC主机通信,根据USB规范实现令牌分组的检测,数据发送/接收的

处理,和握手分组的处理。整个传输的格式由硬件完成,其中包括CRC的生成和校验。

每个端点都有一个缓冲区描述块,描述该端点使用的缓冲区地址、大小和需要传输的

字节数。

当USB模块识别出一个有效的功能/端点的令牌分组时,(如果需要传输数据并且端点

已配置)随之发生相关的数据传输。USB模块通过一个内部的16位寄存器实现端口与专用

缓冲区的数据交换。在所有的数据传输完成后,如果需要,则根据传输的方向,发送或接

收适当的握手分组。

在数据传输结束时,USB模块将触发与端点相关的中断,通过读状态寄存器和/或者利

用不同的中断来处理。

USB的中断映射单元:将可能产生中断的USB事件映射到三个不同的NVIC请求线上:

(1)USB低优先级中断(通道20):可由所有USB事件触发(正确传输,USB复位等)。

固件在处理中断前应当首先确定中断源。

(2)USB高优先级中断(通道19):仅能由同步和双缓冲批量传输的正确传输事件触

发,目的是保证最大的传输速率。

(3)USB唤醒中断(通道42):由USB挂起模式的唤醒事件触发。