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):仅能由同步和双缓冲批量传