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

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
收藏 评论6 发布时间:2017-8-31 10:23

举报

6个回答
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 的时钟降低看看
随意xx 回答时间:2024-10-14 09:33:04

您好,请问您解决这个问题了吗,我想请教下您是哪里出错了呢,我现在也有这个现象

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版