SPI模式下SD卡的写入速度

3

我有一个SD卡(或SDHC卡),通过SPI模式连接到微控制器。我正在使用Chan's FAT库。我将来自8192字节缓冲区的数据写入其中(由于内存不足,缓冲区不能更大)。这种写入是定期执行的。通常在新缓冲区再次填充之前即已准备就绪。但是偶尔会出现问题(还取决于缓冲区填充速度),在新缓冲区必须进行写入之前,写入未准备好,导致数据丢失。

BTW,扇区大小也设置为8192字节,但其他设置似乎没有影响。

可以使用示波器监视写入,并显示有时写入需要很长时间。例如,比平时长四倍。

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

1个回答

2
不是软件原因,但Flash基本上具有不同的写入时间。原因是执行写入所需的电压需要仔细平衡。电压过高会导致永久性损坏,电压过低可能无法改变值。后者会自动处理,只会导致“轻微”的卡顿。然而,由于您的缓冲区很小,这种卡顿似乎太长了。
解决方案?我们过去使用昂贵的单级(SLC)SD卡。即使现在,我们也坚持对所有固件版本进行资格认证。我们肯定不会在现场市场购买SD卡。

所以电压处理引起了延迟,对吗?使用SLC SD卡即使在SPI模式下也不会有这种问题吗? - wlamers
SPI只是总线,不是物理写入,而后者可能会导致卡顿。SLC效果更好,因为您只需要写入“1”,而不是“01”、“10”或“11”。 - MSalters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接