OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3883|回复: 4

SD卡高速存储时写入时间不确定问题

[复制链接]

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2015-6-2
在线时间
24 小时
发表于 2017-9-4 22:23:09 | 显示全部楼层 |阅读模式
10金钱
移植FAT文件系统,可以正常读写,但是当写入一段时间(5分钟左右)后,就会有掉数的情况。按照原子的方法,加入了FIFO,在主循环中不断读取FIFO的数据,有数据即写入SD卡,但是效果不明显。通过示波器观察,正常读写一次9KB的数据在10ms以内,但是会偶尔出现2-3s的写入时间(写入SD卡停顿),从而导致数据的丢失。
网上查了SD 卡内部的存储器是 AND Flash。擦写是比较慢的。SD 卡的名义块大小是 512 byte。但实际上,它所用的 Flash 页长度,如果比较新的话,是 8KB 或 16KB。SD 卡接口中的缓存积攒到一个页时,就发生了写入操作(停顿)。当 SD 卡存储容量已经较大时,还可能需要 Flash 块的擦除和合并(Merge),需要更长的时间。
SD卡写入时间不稳定 ,有过类似项目经历的大神说下该怎么解决吗?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-9-5 00:45:40 | 显示全部楼层
要2-3s,应该不会这么久啊
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2015-6-2
在线时间
24 小时
 楼主| 发表于 2017-9-5 11:35:26 | 显示全部楼层
正点原子 发表于 2017-9-5 00:45
要2-3s,应该不会这么久啊

是啊  原子哥  我也觉得时间过长了。我是8路串口DMA接收,每路的数据量大概是36KB/S,发送端每秒发送9KB的数据,我在每路的DMA接收完成中断中写入FIFO,再在while循环中分8次查询每一路的FIFO值,有即写入SD卡。我在想会不会是我打开关闭文件过于频繁。。另外,这个仿真也没法找原因,单步的话都是正常。
回复

使用道具 举报

68

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2017-3-2
在线时间
156 小时
发表于 2017-9-5 12:34:20 | 显示全部楼层
SD卡首选的方式是 4bit模式 +DMA,SDIO作为DMA的流控制器,关闭 SDIO的硬件流,SDIO_CK = 48M/2=24M
挂载的FatFs文件系统,连续测试1个月,无任何问题,最快写入速度 8.3MB/s。
回复

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
849
金钱
849
注册时间
2017-6-18
在线时间
166 小时
发表于 2017-9-5 23:12:27 来自手机 | 显示全部楼层
直接用官方,写半个月没问题。不过用UCOS, 得把中断换成查询法。不要用寄存器库初始化主时钟,要不然只能在168M下稳定,寄存器库主时钟不稳定
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-18 08:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表