打印
[STM32F2]

STM32F205 MSC虚拟U盘的奇怪问题:无法识别TF卡

[复制链接]
1339|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MOn51|  楼主 | 2017-3-6 13:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
原来用W25Q64+STM32F205 做过MSC虚拟U盘操作很好。现在要添加一个SD卡,使用了STM32_USB-Host-Device_Lib_V2.1.0库。但是发现:第二个虚拟U盘(SD卡)使用512M的卡测试没有问题,交到用户手上后,使用8G的TF卡发现虚拟的U盘无法格式化,可以枚举成功,但不认识U盘,一直提示没有插卡。经过追踪测试发现:
1:用4G的TF卡格式化时,选用每一个扇区512字节,可以认识虚拟U盘。但在win7,win10下默认格式化是4096字节,则无法识别。此时TF卡的物理第一个扇区只有一个MBR的跳转扇区数。
此时PC机无法根据跳转扇区数去查找到逻辑第一个扇区。追踪数据:PC机反复发出读一个物理扇区的指令,STM32F205也将512个字节发回给PC机,但无响应。是PC机端驱动有问题?
2:查看USBD_MSC_SCSI.c 文件发现:块地址的变量定义有问题:uint32_t  SCSI_blk_addr;但程序中却有: SCSI_blk_addr *= SCSI_blk_size; 当用4G以上的卡这样计算必定会溢出。
但是改成:uint64_t  SCSI_blk_addr; 结果也一样,PC机无法继续执行。因此问题不在这里。
3:用W25Q64和小容量的SD,一切正常说明程序没有问题,但为何用4G以上的卡就出问题?
4:系统中有FATFS,无论什么TF(1G,4G,8G,16G)均可以认识,并可以读写数据,说明TF也没有问题。用f_mkfs (1,1,512)格式化后的TF可以虚拟成U盘,用f_mkfs (1,1,4096)格式化的TF,虚拟U盘不成功!

沙发
MOn51|  楼主 | 2017-3-7 13:06 | 只看该作者
终于解决了。



使用特权

评论回复
评论
isjiangnan 2019-3-6 23:50 回复TA
是什么原因呢 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

121

主题

472

帖子

7

粉丝