STM32F407通过cube模拟U盘
STM32F407通过cube模拟U盘
- 前言
- 一、使用cubemx配置USB MASS STORAGE DEVICE
- 1、添加USB组件
- 二、遇到的问题
- 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盘相关推荐
- stm32USB之模拟U盘
STMF0+W25Q32模拟U盘 1.第一次写博客,如有错误,请及时指正,如有表达不通顺的地方,敬请谅解. 2.本篇文章主要描述如何使用STM32cube配置USB,使用的主控为STM32F072,F ...
- 基于STM32F407+RFID的模拟公交车刷卡收费系统小项目
BusChargeSystem 项目介绍 基于STM32F407+RFID的模拟公交车刷卡收费系统 开源仓库地址: github:https://github.com/DaXiongRen/BusCh ...
- linux 开发板模拟u盘,S5P4418开发板Linux下实现模拟U盘教程飞凌嵌入式
飞凌嵌入式ARMCortex-A9 S5P4418开发板上能否满足U盘的功能?其实可通过修改内核配置和文件系统相关内容,在OK4418开发板上实现模拟U盘功能,模拟U盘可以帮助我们实现开发板与Wind ...
- HC32F460 实现模拟U盘导入python脚本在19264点阵屏上绘图--RTthread移植
一.项目简介 该项目涉及到的知识包括: 1.华大M4内核单片机HC32F460的使用 2.国产嵌入式系统RTThread的应用 3.超轻量级且超容易移植的嵌入式python脚本解释器pikascrip ...
- 使用teensy 2.0++ 开发板模拟U盘
Teensy 开发板简介 teensy 是一种基于AVR或ARM处理器的USB开发板, 可以用来开发或试验各种USB应用, 我购买的为TEENSY 2.0++开发板, 因为这是在国内所有TEENSY ...
- STM32CubeMX | STM32基于HAL实现USB模拟U盘
STM32CubeMX | STM32基于HAL实现USB模拟U盘 目录 STM32CubeMX | STM32基于HAL实现USB模拟U盘 (1)工程配置 (2)代码修改 环境说明: win10 S ...
- STM32外挂FLASH模拟U盘(基于HAL库)
STM32外挂FLASH模拟U盘(基于HAL库) 1.背景 1.1这篇文章能给你带来什么 1.2根据你要解决的问题,精确快速跳转到相应位置 1.3我在做完这个后还有不明白的地方,希望能有大触解答困惑 ...
- USB Gadget iMX6UL开发板模拟U盘
iMX6UL开发板模拟U盘 参考资料: 内核源码内:/{内核目录}/Documentation/usb/目录下 gadget-testing.txt mass-storage.txt 文件 网址:Ba ...
- USB Gadget iMX6U LL开发板模拟U盘
IMX6ULL开发板模拟U盘 Linux版本:4.1.15 使用开发板:IMX6ULL 编译环境:Ubuntu 14.04 步骤如下: 1. 首先配置内核 进入 Device Drivers ---& ...
最新文章
- 洛谷 P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib
- C#的UInt64.MaxValue和C语言的0xffffffffffffffc5ull
- 第166天:canvas绘制饼状图动画
- Valve CEO:脑机接口技术可加强游戏体验远超“肉体外设“
- 第 30 章 lvs-rrd
- redis 用中文做key_推荐一款Redis客户端工具
- 计算机模块怎么算,计算基础
- windows中使用scrapyd遇到的问题
- python文件重命名加日期_Python文件创建日期和重命名 - 批评请求
- 利用junit对springMVC的Controller进行测试
- ERP+WMS信息一体化案例:汽车钢板弹簧企业【神风弹簧】
- 学习笔记:基于模型的协同过滤推荐算法简述
- python识别图片中数字_使用Python程序识别图像中的数字
- C#计算wgs84大地坐标转换为空间直角坐标
- 关于微信公众号文章编辑器不能直接编辑html样式的处理方法
- iOS应用程序的辅助功能:语音识别
- Linux命令 - head命令
- HLOJ 2026 猴子吃桃
- 利用canvas制作时钟表
- 【香蕉oi】Game(SAM,SG函数,假题)