STM32F103使用FATFS文件系统读写SD卡稳定性不好的问题

2019-08-14 19:33发布

现在我用STM32F103VCT6,利用FATFS文件系统读写SD卡,因为是做测试,所以每隔1秒向SD卡写一次数据(实际使用时,肯定不会这么频繁),数据是可以写成功的,但是就这样,不停的写数据,偶尔会出现读数据超时的情况。程序会卡在读数据超时程序那里,因为屏蔽了中断,所以程序不能做任何事,只能等到判断超时结束,才能继续执行其他程序,这个等待时间长达几秒,导致我的看门狗复位。写数据没发现问题,没出现过数据超时,但是会卡在读数据那里,而且这个读数据是在打开需要写的那个文件时,卡死的。想要写数据,首先要打开文件,我试了很多次,都是在打开文件的时候,偶尔会读数据超时。请问各位前辈,碰到过这样的情况吗?怎样解决SD卡读写数据不会超时呢?是中断问题还是SD时钟问题?我现在减小SD卡时钟频率,正在测试,等会再来说测试结果
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
三三三
1楼-- · 2019-08-15 12:12
seabird624 发表于 2017-7-24 13:44
兄弟,找到原因了吗?

没有,还在弄
三三三
2楼-- · 2019-08-15 16:34
 精彩回答 2  元偷偷看……
闪电之舞
3楼-- · 2019-08-15 17:34
文件大了f_lseek不断的找簇   花时间自然越来越多
三三三
4楼-- · 2019-08-15 21:49
闪电之舞 发表于 2017-7-24 17:33
文件大了f_lseek不断的找簇   花时间自然越来越多

那增大扇区大小,还是增大簇?簇默认是32K。我也发现,TXT文件越大,超时的几率就越高,300K以上,出现超时的几率很大。但是,为啥有的时候会超时,有的时候不会超时呢?f_lseek函数在使用时,偶尔会出现在读数据函数里面,出现超时,会有几秒的等待。这是不正确的啊,找簇也不需要这么长的时间啊
三三三
5楼-- · 2019-08-16 01:57
正点原子 发表于 2017-7-22 23:30
你写了多久?数据量多大?

初始化一下SD卡,再操作就没有问题了,这是什么原因?上电初始化后,对SD卡的操作,把原来的配置改了?还是什么缓存文件太大?
正点原子
6楼-- · 2019-08-16 06:00
三三三 发表于 2017-7-25 11:23
初始化一下SD卡,再操作就没有问题了,这是什么原因?上电初始化后,对SD卡的操作,把原来的配置改了?还 ...

不知道你代码怎么搞的。
我们开发板测试没什么问题。

一周热门 更多>