使用Arduino在SD上读/写二进制数据

时间:2014-09-14 19:52:59

标签: arduino sd-card

我正在使用Arduino开展项目,我希望能够持久保存一些数据。我已经使用了带有MicroSD读卡器的以太网屏蔽。

我节省的数据将非常小。目前,我一次只能节省3个字节。我真正喜欢的是一种打开SD卡以便从字节x开始写入然后写入y字节数据的方法。当我想要读回来时,我只是从字节y开始读取x个字节。

然而,我所见过的所有代码都涉及使用文件系统,这似乎是一种不必要的开销。我不需要在任何其他系统上读取此数据,存储空间不是问题,并且卡上没有其他数据需要担心。有没有办法直接将二进制数据写入SD卡?

1 个答案:

答案 0 :(得分:5)

可以将原始二进制数据写入SD卡。大多数人使用SD卡支持的4针SPI接口来完成此操作。不幸的是,数据不是字节寻址,而是块寻址(块大小通常为512字节)。

这意味着如果要在字节516处写入4个字节,则必须在块0x00000001(第二个块)中读取,然后计算偏移量,写入数据,然后将整个块写回。 (我不能说这个限制适用于使用更多引脚的SD接口,我没有经验)

这种复杂情况是许多人选择使用包含"不需要的开销"。

的库的原因。

话虽如此,我过去必须这样做,因为我需要一种记录数据的方法,这些数据在电源故障时非常强大。我发现以下资源非常有用:

http://elm-chan.org/docs/mmc/mmc_e.html

您可能会发现更容易对内存缓冲区进行较小的写入操作,并在数据量足够大时将其转储到SD卡中。

如果您环顾四周,您会发现大量有关SD SPI接口的开源代码,可以直接使用,也可以作为参考来实现您自己的系统。