你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

USB Device + FatFS + SDIO 问题

[复制链接]
cntitan1982 提问时间:2018-8-6 10:37 /
又碰到了新的问题。

还是使用的是野火F429的开发板。现在想模拟一个U盘,通过USB Device接口,让PC直接读取开发板上SD卡的数据。

首先用一个SDIO + FatFS的工程,在SD卡里建立若干个文件,大小不定(从几十k到几百M)。

此时关电拔卡插入PC(PC自带读卡器),能正确识别到卡,打开后各个文件的大小和占用空间也都没问题。

此时把卡插回开发板,开发板程序烧写为USB Device + SDIO工程。PC上能正确识别到U盘,但是内容就有些问题了。第一是可用空间有偏差,显示已用空间为4个G,可所有文件加起来只有几百M。第二是文件个数少了很多,还出现了一个不存在的文件RrAA啥的。

我想问下这种情况是什么地方设置的不对吗?

先谢谢大家了。
收藏 评论11 发布时间:2018-8-6 10:37

举报

11个回答
maxtch 回答时间:2018-8-6 10:45:22
USB Device 模拟 U 盘的时候,你应该跳过 FATFS 直接让电脑访问到 SD 卡扇区。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

cntitan1982 回答时间:2018-8-6 12:09:04
maxtch 发表于 2018-8-6 10:45
USB Device 模拟 U 盘的时候,你应该跳过 FATFS 直接让电脑访问到 SD 卡扇区。

对的,就是这么处理的。

两个工程,USB的工程里没有FatFS相关文件。在usbd_storage_msd.c里面调用SDIO的接口函数。

另一个工程是SDIO + FatFS,把卡初始化成FatFS格式,并在里面建立一些文件。

现在USB能识别出来,卡容量也对,但是似乎一些格式参数识别有问题,文件个数不对,文件也打不开。是否PC通过USB无法识别FatFS?
huangyanga 回答时间:2018-8-6 13:23:19
之前遇到过SD卡读写时卡内出现乱码的问题,原因是文件系统读写时没有正确打开和关闭,楼主可从这方面查查看

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

cntitan1982 回答时间:2018-8-6 14:24:41
huangyanga 发表于 2018-8-6 13:23
之前遇到过SD卡读写时卡内出现乱码的问题,原因是文件系统读写时没有正确打开和关闭,楼主可从这方面查查看 ...

感谢回答!

但我认为是这个问题的可能性不大。

因为USB工程并不包含FatFS的代码,USB只是透传,对文件系统的识别和操作是PC进行的(我的理解)。

而此时SD卡中的文件系统数据并未损坏,因为卡直接插PC里没有发现任何问题。
feixiang20 回答时间:2018-8-7 00:06:19
看看你 初始化的设置是否有问题,硬件连接是否有问题,确定反复准确么

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

maxtch 回答时间:2018-8-7 00:16:18
cntitan1982 发表于 2018-8-6 12:09
对的,就是这么处理的。

两个工程,USB的工程里没有FatFS相关文件。在usbd_storage_msd.c里面调用SDIO的 ...

有可能问题出在 FatFS 上。换一个版本试试,或者说尝试一下把 SD 卡镜像下来在电脑上用 FatFS 读取一下。如果说后者可以成功,说明你用的 FatFS 和电脑上的 FAT 驱动程序不兼容,但 FatFS 可以自己兼容。
tanic 回答时间:2018-8-7 10:35:54
本帖最后由 tanic 于 2018-8-7 10:40 编辑

CUBEMAX 直接生成  然后修改下  那个xxxxxx_if.c文件里的接口即可
内部ram 模拟U盘  U盘大小可设置 反正假的
链接:https://pan.baidu.com/s/1_PrhfoeXW2O4lSCFu4vSew 密码:0e7h

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

cntitan1982 回答时间:2018-8-14 16:14:29
感谢大家的回答!

问题最后解决了,把MSC_MEDIA_PACKET修改成512就好了。

这个常量应该是对应存储器的扇区大小,原本例程里的值是4096,对应spi Flash。
289466080 回答时间:2019-4-19 10:49:14
tanic 发表于 2018-8-7 10:35
CUBEMAX 直接生成  然后修改下  那个xxxxxx_if.c文件里的接口即可
内部ram 模拟U盘  U盘大小可设置 反 ...

可以把你的发我看看吗?
289466080 回答时间:2019-4-19 10:49:37
tanic 发表于 2018-8-7 10:35
CUBEMAX 直接生成  然后修改下  那个xxxxxx_if.c文件里的接口即可
内部ram 模拟U盘  U盘大小可设置 反 ...

百度云链接失效了
wangertan 回答时间:2020-11-25 16:41:52
tanic 发表于 2018-8-7 10:35
CUBEMAX 直接生成  然后修改下  那个xxxxxx_if.c文件里的接口即可
内部ram 模拟U盘  U盘大小可设置 反 ...

老哥这个工程可以再发一下吗? 这个过期了。感谢!!

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版