STM32 - TARJETA SD QUE USA FATFS

3

Estoy intentando leer y escribir en una tarjeta clase 10 - 2GB SD de STM32 con la ayuda de FATFS R0.11, pero la función f_mount() está devolviendo el código de error FR_NO_FILESYSTEM . He probado el mismo código en una clase 4 - 2 GB y clase 10 - 16 GB tarjeta SD , y funcionó perfectamente. ¿Qué estoy haciendo mal aquí para esta tarjeta SD específica?

Código:

FIL filTest;
FATFS fs;

FRESULT initSD()
{

    disk_initialize(0);
    FRESULT res;

    res = f_mount(&fs, "", 1);

    if(res != FR_OK)
    {

        return res;

    }

    res = f_open(&filTest, "test.txt", FA_OPEN_ALWAYS | FA_WRITE | FA_READ);
    return res;

}
    
pregunta Pudi

2 respuestas

3

Obtendrá un código de retorno FR_NO_FILESYSTEM si no existe un sistema de archivos ( LINK ) . Simplemente formatea la tarjeta SD y debería estar bien. Estoy asumiendo que estás usando la implementación gratuita de FAT de Elm Chan.

Más cosas divertidas: Si profundiza lo suficiente en ff.c puede ver que llamamos check_fs () dentro de find_volume (). Está en check_fs () verificamos si la tarjeta SD o flash o cualquier memoria tiene un sistema de archivos FAT. Necesitamos un sistema de archivos para montar un disco. Puede usar f_mkfs para formatear un sistema en FAT. ( LINK )

    
respondido por el clmno
0

Tuve el problema de que una de mis 4 tarjetas SD se encontraba cerca. En los otros obtuve FR_NO_FILESYSTEM al montar con f_mount. Si verifica su tarjeta con HxD en el sector 0, los últimos 2 bytes deben ser 0x55 y 0xAA cuando se formatea FAT.

Mis tarjetas se formatearon correctamente pero no se reconocieron como Formato FAT y el error estaba realmente en la implementación de bajo nivel.

En STM32 (con la biblioteca spi HAL) al leer desde la tarjeta SD, se debe enviar un 0xFF (MOSI debe ser ALTO para cada bit) y, por lo tanto, tuve que usar la función HAL_SPI_TransmitReceive () para enviar un 0xFF mientras se recibe .

Después de eso las otras cartas funcionaron sin problema.

Supongo que algunas cartas pueden vivir sin él.

    
respondido por el NELO

Lea otras preguntas en las etiquetas