文号
t79291
阅读
18874
回复
3
收藏
3
STM32 USB RamDisk
2016/03/18
IP:浙江
这是一个简单的STM32 USB设备驱动例子,利用片内SRAM和USB OTG实现了RamDisk。

使用
STM32F105/7xx, STM32F2xx and STM32F4xx USB On-The-Go Host and Device library V2.2.0
STM32F4xx DSP and Standard Peripherals Library V1.6.1


在STM32F4DISCOVERY Discovery kit(STM32F407VGT6)上使用Keil 5.16编译,测试通过
经过简单移植可以工作在STM32F105/F107/F2/F3/F4 MCU上),STM32F0和STM32F7系列的兼容性未知


仅支持USB OTG FS模式工作
仅支持连续的RAM地址,比如在STM32F407VG上只能使用第一块128kb的SRAM,如果需要使用多块的需要加入二级映射机制
在usbd_storage_sram.c中
通过#define USB_RAMDISK_SIZE  设置存储大小(单位:字节)
数据存储在uint8_t STORAGE_Pool[USB_RAMDISK_SIZE]中,可以通过强制设置该全局变量的位置修改存储位置


经过测试在Windows7/Windos10/Android 5.1的设备上可以正常被识别、读取、写入,但是在Android设备上的格式化操作会失败,
原因未知


NOTE:
使用了STM32标准库的模板工程,请确保USB库和固件库位于..\..\..\Libraries\下
因为STM32USB 固件库的一处bug(usbd_usr.h line 34-36):

#if ! defined (USE_STM32446_EVAL) && ! defined (USE_STM32469I_EVAL)
#include "lcd_log.h"


需要确保
..\..\..\Utilities\STM32_EVAL\Common
目录的存在(需要从上述任意固件库中复制出来)。可以自行修复这个bug后去掉这个依赖项。


attachment icon stm32ramdisk.zip 8.34MB ZIP 93次下载
10年9个月前IP:浙江
812821
1楼
不错!有没有实测过读、写速度分别能达到多少?
引用
评论
10年8个月前IP:澳大利亚
813943
2楼
和窝那个U盘很像、、、读取速度估计 100K左右吧...
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的