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

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

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

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

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

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

这种复杂性是很多人选择使用包含“不必要的开销”的库的原因.

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

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

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

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

转载注明原文:使用Arduino在SD上读/写二进制数据 - 代码日志