Tengo una aplicación donde tengo un microcontrolador (NXP LPC1343 ) que está conectado a un FPGA mediante SPI de 16 bits. También hay una tarjeta SD que utiliza el mismo puerto SPI (MISO/MOSI) pero con un pin CS/SS diferente (ambos son activos bajos, según la especificación SPI). Una de las cosas que necesito hacer es escribir los datos de la FPGA en un archivo de la tarjeta SD usando FAT32 y este es el trabajo del microcontrolador. El microcontrolador funciona FatFS que he conseguido que funcione de forma fiable por sí mismo.
Dado que el microcontrolador sólo tiene una pequeña cantidad de RAM, sólo se puede almacenar una pequeña cantidad de datos a la vez. Por lo tanto, el micro tiene que leer un buffer de la FPGA, cambiar el modo SPI a 8 bits, y luego escribir esos datos en el FATFS. Recordemos que para configurar la tarjeta SD para el modo SPI, hay que enviar un comando mientras el bus SPI está funcionando a 400 kHz, y tiene que pasar una cierta cantidad de espera. Por lo tanto, me gustaría tener que realizar la inicialización sólo una vez.
Sin embargo, la realización de transacciones en la FPGA incluso mientras se mantiene el CS alto en la tarjeta SD parece poner la tarjeta SD en un estado extraño tal que necesita pasar por la inicialización de nuevo. Esto, por supuesto, no es deseable, ya que la inicialización puede tardar varios milisegundos, con el fin de escribir sólo 4 kB o así de datos (de nuevo limitado por la pequeña capacidad de RAM de mi micro). Como necesito escribir varios megabytes lo más rápido posible, esto reduce el rendimiento de unos 500 kB/s a menos de 100 kB/s.
Soy consciente de que las tarjetas SD no son técnicamente compatibles con SPI, pero ¿cómo se puede solucionar este problema?
0 votos
Debería honrarlo, por lo que sé. ¿Tal vez probar una tarjeta SD diferente?
0 votos
Esta es una gran pregunta. Gracias por plantearla (y responderla).