STM32F407通过cube模拟U盘

  • 前言
  • 一、使用cubemx配置USB MASS STORAGE DEVICE
    • 1、添加USB组件
  • 二、遇到的问题
    • 1、格式化失败
  • 源码连接
  • 总结

前言

  1. 在学习USB协议中,学习到mass storage device的时候,想要通过stm32cubemax配置stm32f407的模拟U盘并且通过源码学习相关协议。前期很顺利,window能够正常识别U盘,但是总是无法格式化,网上看了很多例程,配置步骤都是一模一样都无法正常格式化。搞了2天左右,突然灵光一现,是不是U盘容量设置太小了,导致格式化的时候有些映射表之类的无法正常写入。由于是通过RAM模拟U盘的,因此一开始只是配置了20×512的大小,后来改为64×512=32k后就正常了。因此记录下具体操作过程和问题点。

一、使用cubemx配置USB MASS STORAGE DEVICE

1、添加USB组件

选择USB设备

选择st自己的第三方组件,Mass Storage class,都采用默认选项即可,有特殊需要可以自己根据说明配置

配置时钟,USB的总线频率一定要是48MHZ

生成keil工程,栈配置大一些

配置mass storage的盘符数量、块数量、块大小

在usbd_storage_it.c文件中,把需要自己实现的接口补充完整。我这边为了偷懒,直接用单片机自身的RAM模拟U盘的,因此只需要实现这两个函数。如果用单片机内部flash或外部flash,需要把这个文件中其他函数自己实现。

PC识别到U盘后,提示需要格式化


格式化完成后,在线仿真可以看到数据区域写入了一些数据。应该是磁盘头部信息,映射表之类的,具体没有细究,有空研究一下。

二、遇到的问题

1、格式化失败

由于一开始太抠门,怕RAM不够,块数量配置的太小,导致PC识别到的U盘容量太小,格式化的时候总是失败。我估计是磁盘格式化的时候对最小容量有要求,需要写入头部信息,因此无法正常格式化。一开始配置的磁盘容量如下:


导致格式化失败

实际也没有写入任何数据

后面把块数量改为64,块大小还是512,总容量32k后,就正常了

源码连接

源码

总结

遇到问题,有时候虽然会灵光一闪解决了,但这是建立在之前不放弃,不断找资料、看代码、思考解决方法的基础上的。

STM32F407通过cube模拟U盘相关推荐

  1. stm32USB之模拟U盘

    STMF0+W25Q32模拟U盘 1.第一次写博客,如有错误,请及时指正,如有表达不通顺的地方,敬请谅解. 2.本篇文章主要描述如何使用STM32cube配置USB,使用的主控为STM32F072,F ...

  2. 基于STM32F407+RFID的模拟公交车刷卡收费系统小项目

    BusChargeSystem 项目介绍 基于STM32F407+RFID的模拟公交车刷卡收费系统 开源仓库地址: github:https://github.com/DaXiongRen/BusCh ...

  3. linux 开发板模拟u盘,S5P4418开发板Linux下实现模拟U盘教程飞凌嵌入式

    飞凌嵌入式ARMCortex-A9 S5P4418开发板上能否满足U盘的功能?其实可通过修改内核配置和文件系统相关内容,在OK4418开发板上实现模拟U盘功能,模拟U盘可以帮助我们实现开发板与Wind ...

  4. HC32F460 实现模拟U盘导入python脚本在19264点阵屏上绘图--RTthread移植

    一.项目简介 该项目涉及到的知识包括: 1.华大M4内核单片机HC32F460的使用 2.国产嵌入式系统RTThread的应用 3.超轻量级且超容易移植的嵌入式python脚本解释器pikascrip ...

  5. 使用teensy 2.0++ 开发板模拟U盘

    Teensy 开发板简介 teensy 是一种基于AVR或ARM处理器的USB开发板, 可以用来开发或试验各种USB应用, 我购买的为TEENSY 2.0++开发板, 因为这是在国内所有TEENSY ...

  6. STM32CubeMX | STM32基于HAL实现USB模拟U盘

    STM32CubeMX | STM32基于HAL实现USB模拟U盘 目录 STM32CubeMX | STM32基于HAL实现USB模拟U盘 (1)工程配置 (2)代码修改 环境说明: win10 S ...

  7. STM32外挂FLASH模拟U盘(基于HAL库)

    STM32外挂FLASH模拟U盘(基于HAL库) 1.背景 1.1这篇文章能给你带来什么 1.2根据你要解决的问题,精确快速跳转到相应位置 1.3我在做完这个后还有不明白的地方,希望能有大触解答困惑 ...

  8. USB Gadget iMX6UL开发板模拟U盘

    iMX6UL开发板模拟U盘 参考资料: 内核源码内:/{内核目录}/Documentation/usb/目录下 gadget-testing.txt mass-storage.txt 文件 网址:Ba ...

  9. USB Gadget iMX6U LL开发板模拟U盘

    IMX6ULL开发板模拟U盘 Linux版本:4.1.15 使用开发板:IMX6ULL 编译环境:Ubuntu 14.04 步骤如下: 1. 首先配置内核 进入 Device Drivers ---& ...

最新文章

  1. 洛谷 P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
  2. C#的UInt64.MaxValue和C语言的0xffffffffffffffc5ull
  3. 第166天:canvas绘制饼状图动画
  4. Valve CEO:脑机接口技术可加强游戏体验远超“肉体外设“
  5. 第 30 章 lvs-rrd
  6. redis 用中文做key_推荐一款Redis客户端工具
  7. 计算机模块怎么算,计算基础
  8. windows中使用scrapyd遇到的问题
  9. python文件重命名加日期_Python文件创建日期和重命名 - 批评请求
  10. 利用junit对springMVC的Controller进行测试
  11. ERP+WMS信息一体化案例:汽车钢板弹簧企业【神风弹簧】
  12. 学习笔记:基于模型的协同过滤推荐算法简述
  13. python识别图片中数字_使用Python程序识别图像中的数字
  14. C#计算wgs84大地坐标转换为空间直角坐标
  15. 关于微信公众号文章编辑器不能直接编辑html样式的处理方法
  16. iOS应用程序的辅助功能:语音识别
  17. Linux命令 - head命令
  18. HLOJ 2026 猴子吃桃
  19. 利用canvas制作时钟表
  20. 【香蕉oi】Game(SAM,SG函数,假题)

热门文章

  1. 看英语引出来的人生思考
  2. 调用阿里API实现银行卡实名认证
  3. Android Studio3.0没有Launch Standalone SDK Manager
  4. 虚拟机flink webui无法访问
  5. 2007高校BBS上20个睿智的冷笑话 (转载:csdn论坛;楼主:cuta)
  6. 看不懂NFT,了解这几幅画就好了
  7. js 弹出QQ对话框
  8. menuconfig 语法
  9. 亚马逊云服务(AWS)与Formula 1共同宣布 2020赛季新增六项赛车性能统计数据
  10. Mysql新增用户并且添加权限