tarjeta memoria mega leer guardar escribir datos con como archivos adquisición arduino sd-card

memoria - sd arduino



Leer/escribir datos binarios en SD usando Arduino (1)

Es posible escribir datos binarios en bruto en una tarjeta SD. La mayoría de las personas hace esto usando la interfaz SPI de 4 pines compatible con la tarjeta SD. Lamentablemente, los datos no están direccionados en bytes, sino que están bloqueados (tamaño de bloque usualmente 512 bytes).

Esto significa que si quisiera escribir 4 bytes en el byte 516, tendría que leer en el bloque 0x00000001 (el segundo bloque), y luego calcular un desplazamiento, escribir sus datos y luego volver a escribir todo el bloque. (No puedo decir que esta limitación se aplique a la interfaz SD usando más pines, no tengo experiencia con eso)

Esta complicación es la razón por la cual muchas personas optan por utilizar bibliotecas que incluyen "gastos generales innecesarios".

Dicho esto, he tenido que hacer esto en el pasado, porque necesitaba una forma de registrar datos que era robusta frente a fallas de energía. Encontré el siguiente recurso muy útil:

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

Probablemente le resulte más fácil hacer sus pequeñas escrituras en un búfer de memoria y volcarlas en la tarjeta SD cuando tenga una cantidad de datos lo suficientemente grande como para que valga la pena.

Si miras a tu alrededor, encontrarás muchos códigos de código abierto que tratan con la interfaz SD SPI para usarlos directamente, o como referencia para implementar tu propio sistema.

Estoy trabajando en un proyecto con Arduino, y me gustaría poder guardar algunos datos persistentemente. Ya estoy usando un escudo Ethernet, que tiene un lector MicroSD.

Los datos que estoy guardando serán increíblemente pequeños. Por el momento, solo estaré guardando 3 bytes a la vez. Lo que realmente me gustaría es una forma de abrir la tarjeta SD para escribir comenzando en byte x y luego escribir y bytes de datos. Cuando quiero volver a leerlo, leo los bytes que comienzan en el byte x .

Sin embargo, todo el código que he visto implica trabajar con un sistema de archivos, lo que parece una sobrecarga innecesaria. No necesito que estos datos sean legibles en ningún otro sistema, el espacio de almacenamiento no es un problema, y ​​no hay otros datos en la tarjeta de los que preocuparse. ¿Hay alguna manera de simplemente escribir datos binarios directamente en una tarjeta SD?