[技术相关] 34s的usb设备

[复制链接]
1362|10
 楼主| zbx1981 发表于 2023-2-6 21:34 | 显示全部楼层 |阅读模式
在使用官方例子的usb massstorage每次重启这个都要提示格式化,是什么原因啊?用的spiflash
caigang13 发表于 2023-2-7 07:34 来自手机 | 显示全部楼层
你应该开启了插入格式化功能
 楼主| zbx1981 发表于 2023-2-7 08:09 来自手机 | 显示全部楼层
这个是设备端配置的吗?
XIVN1987 发表于 2023-2-7 10:50 | 显示全部楼层
USB MassStorage 例程从功能上可以划分成两个比较独立的部分:
USB通信部分,对应 MassStorage.c 中代码
Flash读写部分,对应 FlashDisk.c 中代码

现在现象是每次重启都要求格式化,那可能是 Flash 读写部分有问题,,

可以先不管 USB 通信部分,,按照“SFC_ReadJEDEC()、校验读回ID、SFC_Erase()、SFC_Read()、校验读回数据、SFC_Write()、SFC_Read()、校验读回数据”的流程,先验证一下SFC读写SPI Flash部分是否工作正常。。另外这部分调试可配合逻辑分析仪抓取通信过程,,查看SFC发出的命令 SPI Flash 是否支持、SPI Flash 是否被写保护等问题
XIVN1987 发表于 2023-2-7 11:02 | 显示全部楼层

补充一个我之前使用 SPI Flash W25Q64JV 遇到的问题,,

W25Q64JV 的 Status Register-2 有个 CMP (Complement Protect) 位,,当它为 1 的时候,,整个 SPI Flash 可能会被写保护,,如果遇到这种情况,,需要调用 SFC_ReadStatusReg、SFC_WriteStatusReg 把它清零
QQ截图20230207110836.png
QQ截图20230207110909.png

 楼主| zbx1981 发表于 2023-2-7 11:11 | 显示全部楼层
嗯嗯,好的,我先试试,非常感谢,有结果我随时发上来
 楼主| zbx1981 发表于 2023-2-7 11:14 | 显示全部楼层
本帖最后由 zbx1981 于 2023-2-7 12:56 编辑

刚试了下,是例子和我用的flash接法有差异,改完ok了,非常感谢
 楼主| zbx1981 发表于 2023-2-7 12:18 | 显示全部楼层
现在遇到个新问题,拷贝文件很慢怎么能够优化下呢
XIVN1987 发表于 2023-2-7 14:00 | 显示全部楼层
zbx1981 发表于 2023-2-7 12:18
现在遇到个新问题,拷贝文件很慢怎么能够优化下呢



以 W25Q64JV 为存储介质为例说明:

USBFS 传输速度是 12Mbps,即 1500KB/s,传输 4KB 数据最少需要 3ms,,W25Q64JV 擦除一个扇区需要 45~400ms,写入一个页需要 0.8~3ms,写入整个 4KB 需要 0.8~3ms * (4KB / 256) = 12.8~48ms,,因此写入4KB数据总共需要 3ms + 45~400ms + 12.8~48ms = 60.8~451ms,,按100ms计算,,使用 W25Q64JV 为存储介质时写入速度最快 40KB/s

另外可以发现,,整个操作过程中最耗时的是擦除操作,,SDNAND没有擦除操作,,可以直接写,,因此如果把存储介质从SPI Flash改成SDNAND,,写入速度应该会大幅提升。。

QQ截图20230207135711.png
WoodData 发表于 2023-2-7 15:20 | 显示全部楼层
每次格式化就是存储的数据没写进去。每当读存储器第一个page的数据不对就会格式化。就是MBR记录
 楼主| zbx1981 发表于 2023-2-7 17:23 | 显示全部楼层
WoodData 发表于 2023-2-7 15:20
每次格式化就是存储的数据没写进去。每当读存储器第一个page的数据不对就会格式化。就是MBR记录 ...

嗯嗯,是的,是接口模式没有配对,例子和我自己的设计的板子不匹配导致的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

98

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部