你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32+FATFS 读内存卡不稳定问题(小概率出错)

[复制链接]
下弦月-339376 提问时间:2017-8-31 10:23 /
本帖最后由 下弦月-339376 于 2017-8-31 10:34 编辑

背景:我一个脱机的类似雕刻机的控制板,STM32F103+SDIO+FATFS,G代码(也就是文本文件,跟TXT一样)是提前放在内存卡中的,所以单片机只需去读数据(用FATFS里边的 f_gets()函数读),然后客户反映说,运行个几十次,可能就会出现一次坐标跑飞的情况……
探索:因为是小概率事件,我只能大量的重复运行。发现出问题时,机器会突然朝着规划之外的一个坐标点跑去,然后又能反回来,继续正常运行。所以我判断,可能是从内存卡拿某一行坐标时,数据读错。

然后我把每一行数据,都连续读取两遍,判断,如果两行一模一样,我才认为是读取成功,想着这样总能过滤掉突然的数据拿错了吧。结果还不行……

实时监测:我现在在上边基础上,判断连续两次读取一模一样后,通过串口把数据发送到电脑上监测,抓到了问题所在:

的确读回来的数据偶尔会出错,开始出错的一行,会错的比较严重,具体如图。然后紧接着底下大概十余行的坐标,都会跑偏一点点,再然后恢复正常。

三个错误数据记录,,第三次抓到的记录,好像错了一行之后,接下来的十余行坐标偏差,并不是读错,而是读取的位置跑飞了。但十余行之后恢复正常,难道出错一次导致文件读取指针跑飞了?然后十余行后,又正常了,难道跟内存卡的最小存储单元有关系?我不懂,瞎猜……

希望遇到的朋友帮忙分析……多谢多谢……
底下的数据,左侧是正常的代码。右侧是单片机读出来的代码。从红色箭头那一行出错,到绿色箭头那一行恢复正常。



出错数据记录1

出错数据记录1

出错数据记录2

出错数据记录2

出错数据记录3

出错数据记录3
收藏 评论5 发布时间:2017-8-31 10:23

举报

5个回答
moyanming2013 回答时间:2017-8-31 13:52:52
你这么只说现象,我有1万种不同的可能出错的怀疑点。
既然看到了错误数据位置,添加一个断点,然后看看数据是否越位?各种栈、堆是否没问题?中断是否处理的也没问题?

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

下弦月-339376 回答时间:2017-8-31 16:03:03
moyanming2013 发表于 2017-8-31 13:52
你这么只说现象,我有1万种不同的可能出错的怀疑点。
既然看到了错误数据位置,添加一个断点,然后看看数据 ...

这个问题是随机的,有时候我要连着跑四五十次(近两个小时),才能出现一次,并且每次出现问题的地方都不固定……所以就问问,有没有大佬遇到过类似的情况,大概给我指个方向,感激不尽……
BH7KQK 回答时间:2017-9-1 01:06:52
换卡吧,用最普通的低速卡,4G的最好。我试过8G很多都这样子。
FARtw 回答时间:2017-9-2 17:31:05
可否私訊發一份你程序的文件給我,我想看看是否有哪邊出問題?
yukaigogogo 回答时间:2017-9-4 15:44:33
SDIO 的时钟降低看看
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版