硬汉嵌入式论坛

 找回密码
 立即注册
查看: 82|回复: 2
收起左侧

[USB] SD卡模拟U盘的一些问题

[复制链接]

51

主题

103

回帖

256

积分

高级会员

积分
256
发表于 3 天前 | 显示全部楼层 |阅读模式



我用STM32H7 + FreeRTOS + SD卡+ FATFS + USB MSC模拟U盘,现在已经可以成功和电脑连接,但是有3个问题如下,

1,在电脑上打开模拟的U盘,打开里面的文件没问题,但是删除的时候很怪异,电脑上显示已经删除了,但是重启板子重新连接后,发现SD卡里的文件居然还在。
拔掉USB线,直接用MCU去读取里面的文件,发现可以读取,证明确实还存在。
我实验了多次,发现电脑上无论你怎么删除,他都能显示删除成功,但实际根本就没删除。
也就是说,电脑上显示已经删除了,但是实际删不掉。
这是什么原因呢,为什么电脑上显示删除了,但实际还存在?

2,我用了硬汉哥的程序,就是我的板子上通过一个图形UI来控制USB MSC的打开和关闭,打开用usbd_OpenMassStorage();, 关闭用usbd_CloseMassStorage();。
在测试过程中,我很快速的通过UI开关来测试USB的打开和关闭,也就是不断的测试打开->关闭->打开->关闭。。。如此循环,USB都能正常连接,电脑上盘符也能正常出现。
但是当我先打开一次后(此时USB正常连接,电脑也出现盘符),然后我等个几分钟再关闭,也没问题,但是如果我等个几分钟再关闭然后再立即打开,系统立马死机,USB无法连接,盘符也无法正常显示。
也就是你不能等很长时间后关闭后立即打开,请问这是什么原因呢?

3,在我的板子上如果通过UI来快速打开USB和关闭USB,还算是比较稳定,但是如果我在电脑上直接操作盘符,比如鼠标点击弹出设备,或者安全删除硬件之类的,电脑上也能正常显示盘符消失。
因为电脑上删除后,其实我的板子上的UI开关还是打开的状态,所以我必须把板子上的UI开关再拨到usbd_CloseMassStorage(),这样也没问题,但是如果立即再打开一次,系统又立即死机了。

以上是我遇到的几个问题,各位有遇到吗,总感觉很不稳定,不确定是不是我哪里没配置对
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119430
QQ
发表于 前天 10:22 | 显示全部楼层
1、出现这种情况,说明你的移植实现有问题,注意USB的底层接口调用SD卡的非DMA方式API试试
2-3、是一个问题,看下是不是还没有完全关闭,你就立即操作了。
回复

使用道具 举报

51

主题

103

回帖

256

积分

高级会员

积分
256
 楼主| 发表于 前天 12:12 来自手机 | 显示全部楼层
eric2013 发表于 2025-11-20 10:22
1、出现这种情况,说明你的移植实现有问题,注意USB的底层接口调用SD卡的非DMA方式API试试
2-3、是一个问 ...

硬汉哥,第一个问题我找到原因了,我买了个读卡器测试了下,发现我的sd卡被写保护了,所以无法写入任何文件!这个sd卡用着用着就自己写保护了,不知道为什么,看网上说的是寿命可能到了!这个卡是三星32G的,用了确实很多年了!我的程序是直接抄的你的,用的也是非DMA方式。所以应该不会有什么问题。2-3问题,我再看一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-11-22 00:24 , Processed in 0.038551 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表