Tarjeta MicroSD SPI con ATmega32 [cerrado]

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?

¿Está utilizando Arduino con el escudo SD? Si no, especifique el hardware. En caso afirmativo, tiene la biblioteca SD para arduino.
Estoy usando una placa personalizada, atmega32 en una placa de pruebas y un módulo sd de ebay. Estaba buscando que atmega sea compatible con fatfs y que puedan abrir, leer y escribir archivos txt con caracteres ascii. ¿Cómo puedo usar fatfs?
Antes de ingresar a cosas de nivel superior, como sistemas de archivos, asegúrese de poder comunicarse e inicializar la tarjeta como se describe en el protocolo, por ejemplo aquí: alumni.cs.ucr.edu/~amitra/sdcard/Additional/…
¿ Ha intentado utilizar alguna de las bibliotecas SD o MultiMediaCard ?

Respuestas (1)

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.

Encontré una biblioteca FATFS pero funciona con pines GPIO. Quiero trabajar con módulo SPI de atmega32
Luego, debe implementar las funciones f_read y f_write que usan el módulo SPI, y hacer que fatFS use esas funciones para acceder a la tarjeta. Hmm, creo que alguien ya habría implementado esas funciones. No lo sabría, he escrito mi propio controlador de sistema de archivos gordo desde cero. Lo siento, no puedo ser de más ayuda.
Estoy buscando fatfs que usen funciones spi para acceder a la tarjeta. algún ejemplo?