1144697597 发表于 2024-3-18 10:11:03

stm32f103c8t6 使用usb读取w25q64模拟U盘,并且移植fatfs文件系统过程中出现的问题

请问各位前辈,我现在做一个小项目,1.使用主控芯片通过USB接口将SPIW25Q64模拟成U盘,此步骤单独移植已经实现。2.继续移植fatfs文件系统,使之能够用程序实现对U盘内内容的读取和写入,此步骤单独移植也好像能成功。

现在碰到的主要问题是,我将这两项一起移植的时候,烧录后就会识别不到U盘。按复位键,会显示文件系统创建成功。如图内容。然后我将fatfs测试程序注释掉后,重新烧录,系统就可以识别到U盘,但是不能再创建文件系统了。
   请问各位前辈,这是什么问题?找了好久,优先级什么的都试过了,还是没有解决。

eric2013 发表于 2024-3-18 15:49:49

设置NVIC优先级分组为4,

调整USB和SDIO优先级试试,USB比SDIO高测试下,反之也测试下。

1144697597 发表于 2024-3-19 08:28:32

eric2013 发表于 2024-3-18 15:49
设置NVIC优先级分组为4,

调整USB和SDIO优先级试试,USB比SDIO高测试下,反之也测试下。

您好,硬汉哥,我尝试了一下,还是不行。并且我的工程里面好像没有开启sdio,我大概过程是用hal库开启了USB和FATFS,配置SPI读取flash,然后用串口打印信息。移植了网上对fatfs里面diskio.c的内容和一些相关配置,还有usbd.storage_if.c里面的相关配置。现在问题还是没有解决。

eric2013 发表于 2024-3-19 15:31:08

1144697597 发表于 2024-3-19 08:28
您好,硬汉哥,我尝试了一下,还是不行。并且我的工程里面好像没有开启sdio,我大概过程是用hal库开启了U ...

看错了,你的是SPI Flash。

可以这样试试,在USB的基础上,先仅添加FatFS,底层文件diskio.c不做接口处理,看看正常不。

1144697597 发表于 2024-3-20 08:24:47

eric2013 发表于 2024-3-19 15:31
看错了,你的是SPI Flash。

可以这样试试,在USB的基础上,先仅添加FatFS,底层文件diskio.c不做接口 ...

您好,我试过了,好像没有修改那个文件也能使用文件系统,好奇怪,但是就是识别不了U盘。

eric2013 发表于 2024-3-22 09:36:43

1144697597 发表于 2024-3-20 08:24
您好,我试过了,好像没有修改那个文件也能使用文件系统,好奇怪,但是就是识别不了U盘。
那只能笨办法了,逐步移植添加了。移植点验证一次,看看是那部分代码导致的。

1144697597 发表于 2024-3-25 09:17:00

eric2013 发表于 2024-3-22 09:36
那只能笨办法了,逐步移植添加了。移植点验证一次,看看是那部分代码导致的。

硬汉哥您好,我重新移植并调试,发现单独移植fatfs文件系统能够成功在w25q64flash中创建写入读取文件了,但是后来移植模拟U盘的时候,虽然可以识别到U盘了,但是U盘内却并没有我通过fatfs文件系统创建的文件夹。读也读取不出来,会显示没有文件,这是怎么回事呢?   (我模拟U盘的代码中加的接口都是w25q64的读写函数)

1144697597 发表于 2024-3-25 10:51:24

1144697597 发表于 2024-3-25 09:17
硬汉哥您好,我重新移植并调试,发现单独移植fatfs文件系统能够成功在w25q64flash中创建写入读取文件了, ...

已经解决了,谢谢硬汉哥。

eric2013 发表于 2024-3-26 10:52:11

1144697597 发表于 2024-3-25 10:51
已经解决了,谢谢硬汉哥。

最终原因是什么

zqm656993 发表于 2024-4-10 12:27:06

就是解决了,然后没有下文了
页: [1]
查看完整版本: stm32f103c8t6 使用usb读取w25q64模拟U盘,并且移植fatfs文件系统过程中出现的问题