dabendan001 发表于 2019-5-12 10:39:34

STM32F105RB通过FATFS0.12C写U盘失败!

本帖最后由 dabendan001 于 2019-5-12 10:43 编辑

从github上搬来的FATFS v0.12c代码;往U盘里文本文件写任意写符串(不超过30个字符)。第一次插入U盘失败,拔掉U盘再插入,就能写成功。
何故??
FATFS v0.12c源码:http://github.com/stm32duino/FatFs/tree/master/src

char *STR = "aa132cv41654654464rtyrryryrydfgs";
fr = f_open(&fil ,"0:t123.txt",FA_OPEN_ALWAYS|FA_WRITE|FA_READ);

                        if(fr == FR_OK)
                        {
                              printf("文件打开成功!\r\n");
                //__disable_irq();
                              fr = f_write(&fil,STR,strlen(STR),(UINT*)fw);
                //__enable_irq();
                              if(fr == FR_OK)
                              {
                                        printf("数据写入完成!\r\n");
                              }
                              else
                              {
                                        printf("数据写入失败!\r\n");
                              }
                              
                //HAL_Delay(200);

                              fr = f_close(&fil);                        //首次加电,写入U盘失败时,此处返回 1 ;
                              
                              if(fr == FR_OK)
                              {
                                        printf("\r\n文件关闭成功.\r\n");
                                        printf("打印关闭文件代码:%d\r\n",fr);
                              }
                              else
                              {
                                       
                  printf("\r\n文件关闭失败!\r\n");
                  printf("打印关闭文件代码:%d\r\n",fr);

                              }
                              
                        }

maxtch 发表于 2019-5-14 14:43:44

给我的感觉好像问题在于 USB。检查一下你的代码对于 USB 插入的处理,特别是上电时就已经有 USB 设备这个情况。

dabendan001 发表于 2019-5-19 23:13:15

maxtch 发表于 2019-5-14 14:43
给我的感觉好像问题在于 USB。检查一下你的代码对于 USB 插入的处理,特别是上电时就已经有 USB 设备这个情 ...

谢谢!

之前用的fatfs v0.11正常。
但这个版本不支持exFAT格式,所以才换v0.12版本。遇到上述问题。

maxtch 发表于 2019-5-19 23:35:37

dabendan001 发表于 2019-5-19 23:13
谢谢!

之前用的fatfs v0.11正常。


你这是要多大啊,连 exFAT 都用上了。如果写入的文件这么大,改走网络也许可以更靠谱一点。(数据不滞留在设备上,随时采集随时上传。)而且 exFAT 还有专利授权问题,商用产品里面尽量别用。

dabendan001 发表于 2019-5-23 12:00:16

maxtch 发表于 2019-5-19 23:35
你这是要多大啊,连 exFAT 都用上了。如果写入的文件这么大,改走网络也许可以更靠谱一点。(数据不滞留 ...

其实不需要往U盘里写大文件,支持exFAT的目的只有一个:能扫描枚举出U盘里的文件名,即可。

maxtch 发表于 2019-5-23 12:17:48

dabendan001 发表于 2019-5-23 12:00
其实不需要往U盘里写大文件,支持exFAT的目的只有一个:能扫描枚举出U盘里的文件名,即可。 ...

如果是这样的话根本用不到支持 exFAT 啊?

dabendan001 发表于 2019-5-23 12:36:12

maxtch 发表于 2019-5-23 12:17
如果是这样的话根本用不到支持 exFAT 啊?
??似乎是需要呢。
目前64GB以上的U盘,格式化时(win10),只能选择NTFS 或exFAT格式。
页: [1]
查看完整版本: STM32F105RB通过FATFS0.12C写U盘失败!