3

我有一张通过 SPI 模式连接到微控制器的 SD 卡(或 SDHC 卡)。我正在使用Chan 的 FAT库。我向它写入来自 8192 字节缓冲区的数据(由于 RAM 不足,缓冲区不能更大)。这种写入是定期执行的。通常,在缓冲区再次填充之前,写入已准备好。但是偶尔(也取决于缓冲区填充速度)会出现问题,并且在必须写入新缓冲区之前写入尚未准备好,从而导致数据丢失。

顺便说一句,扇区大小也设置为 8192 字节,但其他似乎没有影响。

可以用范围监控写作,并表明有时写作需要很长时间。例如,比平时长四倍。

这里发生了什么,也许我该如何防止这种情况发生?这与读取、修改、写入序列有关吗?我需要外部 RAM 缓冲区吗?还是有更好的方法来提高性能?

4

1 回答 1

2

不是软件原因,但闪存从根本上具有不同的写入时间。原因是执行写入所需的电压经过仔细平衡。太高会造成永久性损坏,太低可能无法改变数值。后者是自动处理的,结果只是“轻微”的口吃。然而,这种口吃对你来说似乎太长了,因为你的缓冲区很小。

解决方案?我们过去使用过昂贵的单级(SLC) SD 卡。即使是现在,我们仍坚持对所有固件版本进行认证。我们当然不会在现货市场上购买 SD 卡。

于 2012-08-31T14:38:42.077 回答