Administración de búfer para tarjeta SD en modo SPI

1

Estoy estudiando la implementación del almacenamiento de archivos de audio grandes en una tarjeta SD. Usaré SPI para acceder a la tarjeta y evitar las patentes de la mafia de la tarjeta SD. Estaré generando una gran cantidad de datos, aproximadamente 150 kbyte / s por segundo, y eso debe leerse desde un ADC y escribirse en un DAC + almacenado en la tarjeta.

Necesito usar algún búfer en la memoria externa (no sé si tendré suficiente RAM en alguna MCU pequeña, así que usaré algo con un bus externo). No tengo experiencia haciendo esto, así que apreciaré cualquier sugerencia sobre qué estrategia usar aquí.

    
pregunta user34920

2 respuestas

2

No temas a la grasa. Facilita mucho tu trabajo.

Lo único que tiene que hacer es, antes de comenzar a leer los valores en ADC, cree el sistema FAT 16 y un archivo de texto. Luego, una vez que comience a leer, simplemente envíe los datos a ese texto como un byte simple.

He hecho algo similar con PIC18F458 a una velocidad de reloj de 1Kb por segundo. Aquí hay un enlace con código de ejemplo para el mismo controlador Con generación de sistema FAT. Esto me ayudó mucho. Espero que te ayude también.

Este método fue el mejor para mí, ya que todos los valores se escribieron en un archivo de texto y fue fácil de convertir en cualquier otro formato o legible para otro software como MATLAB.

    
respondido por el Damon
2

Las tarjetas SD de nivel de consumidor pueden escribir a más de 2MB / s, por lo que 150kB / s no es un problema. Normalmente, la SPI en tarjetas SD puede comunicarse a 25MHz una vez que la tarjeta está en funcionamiento, por lo que, de nuevo, sus requisitos de rendimiento (desde el punto de vista de la tarjeta) son manejables. Aunque algunas tarjetas SD pueden incluir memorias RAM para la transmisión de datos, a solo 150 kB / s no necesitarías usarlas.

Los

Cortex-M4 generalmente tienen DMA multicanal muy capaz, un montón de RAM (100-200 kB) y son rápidos (120 a 200MHz), por lo que tendría todos los recursos necesarios para administrar todos los requisitos que ha enumerado: ADC, DAC, SPI / SD y transferencias de datos. No deberías necesitar RAM externa.

Debo agregar que muchos Cortex-M4 tienen un periférico SDIO que (presumiblemente ... no pretendo saber de una manera u otra) con licencia apropiada (¿el costo de la licencia incluido en el costo de la pieza?) y es capaz de mucho mayor rendimiento de comunicaciones que SPI (100 + MB / s).

    
respondido por el markt

Lea otras preguntas en las etiquetas