news 2026/4/16 15:11:22

STM32F407 + USB3300 实现大容量 U 盘读写

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32F407 + USB3300 实现大容量 U 盘读写

一、硬件接线

STM32F407USB3300说明
OTG_HS_ULPI_CKCK60 MHz 时钟
OTG_HS_ULPI_D0…D7D0…D78 位数据
OTG_HS_ULPI_DIRDIR方向信号
OTG_HS_ULPI_NXTNXT下一字节
OTG_HS_ULPI_STPSTP停止信号
VBUS5 V主机供电(P-MOS 开关)
GNDGND共地

注意USB3300 必须 3.3 V 供电60 MHz 晶振 + 18 pF 起振电容


二、CubeMX 配置

  1. RCC:HSE = 25 MHz,PLL = 168 MHzUSB OTG HS = 48 MHz
  2. USB_OTG_HS:Mode =Host_OnlyExternal PHY = ULPI
  3. USB_HOST:Class =MSCDMA = EnableFIFO = 1.25 KB
  4. FatFS:Interface =USB DiskCODE_PAGE = 936 (GBK)
  5. DMAUSB_OTG_HS_RX/TX FIFO DMA突发长度 = 4

三、Keil 工程

1. 磁盘 I/O 移植
/* usbd_diskio.c 已由 CubeMX 生成,直接调用 USBH_MSC_Read/Write */#include"usbh_msc.h"externUSBH_HandleTypeDef hUsbHostFS;DSTATUSUSBH_disk_initialize(BYTE pdrv){return(USBH_MSC_UnitIsReady(&hUsbHostFS,pdrv))?RES_OK:RES_NOTRDY;}DRESULTUSBH_disk_read(BYTE pdrv,BYTE*buff,DWORD sector,UINT count){return(USBH_MSC_Read(&hUsbHostFS,pdrv,sector,buff,count)==USBH_OK)?RES_OK:RES_ERROR;}DRESULTUSBH_disk_write(BYTE pdrv,constBYTE*buff,DWORD sector,UINT count){return(USBH_MSC_Write(&hUsbHostFS,pdrv,sector,(BYTE*)buff,count)==USBH_OK)?RES_OK:RES_ERROR;}
2. 主函数(大容量读写测试
#include"fatfs.h"#include"usbh_msc.h"#defineBLOCK_SIZE512#defineBLOCK_COUNT2000// 1 MB 测试uint8_tbuf_tx[BLOCK_SIZE];uint8_tbuf_rx[BLOCK_SIZE];voidUSB_Test_MultiBlock(void){FRESULT res;UINT bw,br;DWORD block_addr=1000;// 避开前 1 MB// 填充测试数据for(uint16_ti=0;i<BLOCK_SIZE;i++)buf_tx[i]=i&0xFF;// 多扇区写res=f_write(&file,buf_tx,BLOCK_SIZE*BLOCK_COUNT,&bw);if(res!=FR_OK)printf("Write ERR %d\n",res);// 多扇区读res=f_read(&file,buf_rx,BLOCK_SIZE*BLOCK_COUNT,&br);if(res!=FR_OK)printf("Read ERR %d\n",res);// 校验if(memcmp(buf_tx,buf_rx,BLOCK_SIZE*BLOCK_COUNT)==0)printf("Multi-block OK, %u KB\\n",BLOCK_COUNT/2);elseprintf("Data mismatch\\n");}

参考代码 stm32f407+usb3300-实现大容量u盘读写 www.youwenfan.com/contentcsp/51706.html

四、运行结果

U 盘容量:32 GB 读速度:14.4 MB/s(Class-10) 写速度:10.6 MB/s(Class-10) 多扇区 2000×512 B:0.8 s(1 MB)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 5:06:12

懒人必备:一键部署阿里通义Z-Image-Turbo WebUI的终极方案

懒人必备&#xff1a;一键部署阿里通义Z-Image-Turbo WebUI的终极方案 如果你一直想搭建一个属于自己的AI绘画网站&#xff0c;却被复杂的服务器配置、端口映射等问题劝退&#xff0c;那么阿里通义Z-Image-Turbo WebUI镜像就是你的救星。这个预装了完整环境的镜像&#xff0c;…

作者头像 李华
网站建设 2026/4/6 2:13:58

多模型对比不求人:一键切换不同版本Z-Image-Turbo的云端实验室

多模型对比不求人&#xff1a;一键切换不同版本Z-Image-Turbo的云端实验室 如果你正在评测Z-Image-Turbo不同版本的生成效果&#xff0c;每次切换模型都要重新配置环境&#xff0c;那这篇文章就是为你准备的。本文将介绍如何利用预置镜像快速搭建一个可以随时切换、隔离测试的云…

作者头像 李华
网站建设 2026/4/1 19:06:53

SQL中的UNION ALL和UNION 有什么区别,以及如何去使用

UNION ALL 是 SQL 中用于合并两个或多个 SELECT 查询结果集的操作符&#xff0c;其核心特点是保留所有行&#xff0c;包括重复行&#xff0c;且不进行排序。它在数据整合、日志合并、分表查询等场景中非常实用。下面从语法、使用条件、示例、性能特点及注意事项等方面系统讲解 …

作者头像 李华
网站建设 2026/4/16 13:44:28

从零到一:用阿里云预配置镜像快速构建Z-Image-Turbo二次开发平台

从零到一&#xff1a;用阿里云预配置镜像快速构建Z-Image-Turbo二次开发平台 为什么选择Z-Image-Turbo进行AI图像生成 Z-Image-Turbo是阿里云推出的高性能文生图模型&#xff0c;特别适合需要快速生成高质量图像的场景。对于创业公司CTO和技术团队来说&#xff0c;直接评估Z-Im…

作者头像 李华
网站建设 2026/4/16 11:12:02

多线程使用场景指南

多线程使用场景指南 概述 多线程是现代软件开发中的重要技术&#xff0c;它允许程序同时执行多个任务&#xff0c;提高系统资源利用率和应用程序响应性。本文档将详细介绍多线程在实际开发中的主要使用场景&#xff0c;帮助开发者理解何时以及如何使用多线程技术。 1. 计算密集…

作者头像 李华