Emulación de tarjeta SD

Descripción del problema:

He construido un lector/grabador de etiquetas RFID 15693 basado en MSP430F2370. La placa principal tiene una placa secundaria, con forma de tarjeta SD, que se conecta a un soporte/lector de tarjetas SD.

Estábamos planeando comunicarnos con una computadora de mano con Windows Mobile 6 a través de una interfaz de tarjeta SD usando SPI. Nuestro equipo de software nos dijo que esto era técnicamente imposible, o al menos llevaría un par de meses implementarlo. Tenemos tres semanas para terminarlo todo.

Entonces, la pelota volvió a mí. Ahora me pidieron que emulara una tarjeta SD con el MSP. Esto incluye toda la comunicación SPI y la emulación FAT16 también. Esto se ha hecho antes , aunque no con un MSP.

Pregunta:

Después de algunas búsquedas, no pude encontrar trabajos anteriores que usaran MSP para emular tarjetas SD. ¿Hay alguna información/trabajo hecho al respecto? Además, tengo un puñado de archivos PDF de especificaciones de tarjetas SD gruesas, pero parece que no puedo encontrar diagramas de tiempo que indiquen qué debe enviar una tarjeta SD feliz a un host. Si alguien también pudiera dirigirse a mí para obtener una documentación más concisa y buena sobre esto, sería muy bueno.

Respuestas (5)

Su tarea ciertamente no es imposible, pero creo que tendría más de 90 horas a la semana durante esas tres semanas para obtener algo que pueda usar.

No hay una sola parte "ZOMG" del diseño; hay una serie de bloques más pequeños que están bastante compartimentados y son sencillos por sí solos. Por ejemplo, está la interfaz física: las tarjetas SD son esencialmente (hasta) buses SPI de "cuatro carriles", y puede limitarse al modo SPI para comenzar a facilitar las cosas. Esto no es terriblemente complejo de hacer, especialmente si tiene un periférico esclavo SPI en el hardware que puede usar. Admitir lo suficiente del protocolo SD para falsificar el lado de Windows probablemente tampoco sea difícil, especialmente si puede limitarse a emular una tarjeta MMC, que es menos compleja. Emular un sistema de archivos tampoco es terriblemente difícil.

Como dice el refrán... el diablo está en los detalles. Desde una perspectiva de alto nivel, esto es factible, aunque creo que su marco de tiempo no es realista. Nadie puede trabajar 90 horas a la semana y mantener el enfoque y la claridad de pensamiento.

Y como dice mi dicho favorito... La diferencia entre la teoría y la realidad es que, en teoría, no hay diferencia.

Jeje, siempre lo supe como: "En teoría no hay diferencia entre teoría y práctica, pero en la práctica sí".
Estoy de acuerdo con esta respuesta. Si puedes completar esto en 3 semanas, te mereces un Premio Nobel.
Mencionó que tiene un equipo de software para la parte de Windows Phone del proyecto. Con 3 o 4 personas trabajando en ello, su estimación de 270 horas en 3 semanas no está nada mal. Si son desarrolladores de Visual C# (para WP7), están a minutos de poder escribir un código C incorrecto si se lo pide. Además, tenga en cuenta que no es necesario implementar una tarjeta MMC genérica o un sistema de archivos; solo necesita emular una tarjeta de un solo tamaño, un sistema de archivos que contenga un archivo y ninguna carpeta, y un solo archivo cuyo tamaño no necesite cambiar.
A minutos de escribir un código C incorrecto... Me gusta eso. Suena como una idea terrible que demasiadas personas estarán dispuestas a asumir.
¡O el nombre de un excelente libro para principiantes en C!

Realmente no tengo una respuesta para usted, pero cuando trabajo con tarjetas SD y FAT16 en el MSP430, he encontrado útiles los siguientes dos recursos:

Tarjetas SD con el MSP430

FAT16 para el MSP430

Estábamos planeando comunicarnos con una computadora de mano con Windows Mobile 6 a través de una interfaz de tarjeta SD usando SPI.

Desafortunadamente, el host SD decide qué protocolo usar. Para un dispositivo móvil con Windows, esperaría que use el protocolo SD más rápido y no SPI. Por lo tanto, necesitaría implementar el protocolo SD, que es de 25 MHz: demasiado rápido para su MCU MSP, el que mencionó supera los 16 MHz.

Para implementar una tarjeta SD, necesitará una MCU rápida (generalmente basada en ARM) con soporte de protocolo SD de hardware o un reloj alto ridículo> 100 MHz.

O un pequeño FPGA para manejar la interfaz rápida y almacenarla en un MCU más lento. el protocolo SD tiene una limitación de velocidad incorporada para que pueda aprovechar eso.

Si hacerlo es más importante que cómo lo hace, entonces hacerlo con lo que sea más fácil (tal vez porque el código está disponible) y luego comunicarse entre su MSP430 y el sistema separado probablemente sea más fácil. En general, la tarea es más compleja, pero si ya has logrado la parte más difícil, ganas.

Se realizó una solución similar en 2006 como parte de un desafío de diseño de bodega de circuitos. Todo el software y hardware del proyecto se puede encontrar aquí . Esta solución bombea datos a un libro ilustrado, pero la suya es un concepto similar.

Esto debería ser un comentario sobre la respuesta a la que apuntas.
En el sistema SE, preferimos que las respuestas sean independientes y solo usen recursos externos. Si desea escribir una respuesta, resuma a qué se está vinculando, de modo que si ese enlace se rompe, su respuesta sigue siendo una respuesta. Cuando obtenga más reputación en el sitio, puede escribir comentarios y simplemente dejar algo como esto como un comentario para otra respuesta/pregunta.