Quiero comunicarme con una tarjeta microSD con un ATmega32 usando SPI . Hago un loopback SPI simple y funciona bien.
Ahora bien, ¿cómo puedo comunicarme con la tarjeta microSD para escribir y leer bytes simples o cadenas?
Estoy usando una placa personalizada, ATmega32 en una placa de prueba y un módulo de tarjeta SD de eBay . Estaba buscando si los ATmegas son compatibles con FatF y si pueden abrir, leer y escribir archivos de texto con caracteres ASCII . ¿Cómo puedo usar FatFs?
Independientemente de cómo intente continuar desde allí, su primer paso es claro: debe crear una función que lea un bloque (512 bytes) de datos de la tarjeta SD. Para ello, deberá ejecutar comandos SD (o MMC) para inicializar y seleccionar la tarjeta. Estos implican comandos como IR AL ESTADO DE VACÍO, IR AL ESTADO DE NO RIEGO, ENVIAR CONDICIONES DE FUNCIONAMIENTO. Luego, lea el registro OCR para ver si es una tarjeta de alta capacidad o no (estas se direccionan de manera diferente, para una tarjeta antigua, una dirección es una dirección de bytes; para una tarjeta HC, una dirección es un número de bloque (LBA)), y configure la longitud del bloque de 512 bytes. Luego puede dar el comando READ_BLOCK para obtener datos reales del disco. Esto parece complicado (y lo es), pero puede buscar en Google los nombres de los comandos para encontrar muchos códigos que inicialicen las tarjetas SD.
Primero lea el bloque 0 (primeros 512 bytes) de la tarjeta SD; termina con 0x55aa. Entonces continúa desde allí. Me dijeron que una biblioteca de código llamada fatfs puede hacer el trabajo de manejar discos FAT bastante bien, pero solo para leer archivos, el código para buscar y leer archivos de un sistema de archivos FAT no es tan complejo. Pero revise fatfs: me dijeron que solo necesita proporcionarle las funciones de bloque de lectura + bloque de escritura y se encargará del resto.
Eugenio Sh.
MrBit
Eugenio Sh.
davidcary