yaowei 发表于 2015-12-29 15:13:16

关于Fatfs文件系统的请教

各位,大家好,小弟最近在做文件系统存储相关的工作,就是用Cubemx生成文件系统和SDIO,那么我的问题来了
在向文件写内容的时候

result= f_write(&File_Element.fil,File_Element.Fatfs_Buf,sizeof(File_Element.Fatfs_Buf), &File_Element.bwee);       
printf("f_write1=%d\r\n",result);


循环多次向文件写内容,那么就可能会出现f_write返回值为1的情况,而且是没有规律的
我看了这个错误的解释是:FR_DISK_ERR,                        /* (1) A hard error occurred in the low level disk I/O layer */
说是底层硬件错误,

有没有人做过这方面的工作,大神给点指点
在线等

moyanming2013 发表于 2015-12-29 15:33:27

中间加个小延时试试

yaowei 发表于 2015-12-29 15:34:49

moyanming2013 发表于 2015-12-29 15:33
中间加个小延时试试

加了,每次写了之后都加了HAL_Delay(30),还是不起作用

moyanming2013 发表于 2015-12-29 15:38:45

yaowei 发表于 2015-12-29 15:34
加了,每次写了之后都加了HAL_Delay(30),还是不起作用

单次的传输是不是太大?看看频率最多支持多少,从底往上都要看

yaowei 发表于 2015-12-29 15:57:00

moyanming2013 发表于 2015-12-29 15:38
单次的传输是不是太大?看看频率最多支持多少,从底往上都要看

情况是这样的传输字节几百的话是没有问题的,现在传输的每次是4000多字节 就会出现这种错误的情况,你说的频率指的是哪个的频率

moyanming2013 发表于 2015-12-30 12:29:44

SDIO有频率,CPU有主频,速度过快也不行啊,你最好折中速度,比如试试2000,再试试1000,或者3000等等。

yaowei 发表于 2016-1-13 09:33:27

moyanming2013 发表于 2015-12-30 12:29
SDIO有频率,CPU有主频,速度过快也不行啊,你最好折中速度,比如试试2000,再试试1000,或者3000等等。 ...

是的,就是速度问题,但是现在又有问题了,就是连续写4个小时之后,可能write函数就会出现错误,这是啥原因

zhangbolily 发表于 2016-1-13 10:55:59

我觉得堆内存大小不够的可能性还是有的,你可以调一下堆内存的大小试试。

yaowei 发表于 2016-1-13 11:10:00

zhangbolily 发表于 2016-1-13 10:55
我觉得堆内存大小不够的可能性还是有的,你可以调一下堆内存的大小试试。 ...

都改成0x1000,现在又来问题来:用文件系统操作sdio,cubemx里配置的生成的工程,现在的问题就是,每秒写2500字节左右,连续写4个小时的时候,f_mount或者f_open或者f_write就会返回错误说是错误信息:FR_DISK_ERR,这个错误的意思说是(1) A hard error occurred in the low level disk I/O layer */就是底层硬

moyanming2013 发表于 2016-1-13 11:14:48

yaowei 发表于 2016-1-13 11:10
都改成0x1000,现在又来问题来:用文件系统操作sdio,cubemx里配置的生成的工程,现在的问题就是,每秒写 ...

如果是很有规律的4个小时,那么还是程序上哪有问题,没有好的办法,只有自己再看看程序、调试下
页: [1] 2
查看完整版本: 关于Fatfs文件系统的请教