STM32 USB RamDisk
phpskycn2016/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 89次下载
来自:计算机科学 / 软件综合
3
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
amo
8年10个月前 IP:浙江
812821
不错!有没有实测过读、写速度分别能达到多少?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
金坷居士
8年10个月前 IP:澳大利亚
813943
和窝那个U盘很像、、、读取速度估计 100K左右吧...
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
phpskycn
专家 老干部 学者 机友 笔友
文章
402
回复
4591
学术分
8
2009/03/15注册,3个月3天前活动

CV

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}