Problema de FatFs con f_write y f_sync

1

Estoy intentando configurar un PIC18F67K22 para registrar datos en una tarjeta SD, pero tengo algunos problemas para que los FatF funcionen correctamente. Implementé un código de bajo nivel siguiendo la API diskio.c que se proporciona, y puedo monitorear el flujo de datos SPI utilizando un Analizador lógico de Saleae. Todo lo que veo yendo y viniendo es sensato, pero no puedo escribir datos en el archivo.

Puedo crear un archivo, pero el archivo siempre está vacío. Después de crear el archivo, mi código ya ni siquiera intenta comunicarse con la tarjeta SD (la línea de selección de chip SD nunca baja durante una grabación).

¿Estoy usando las funciones f_write y f_sync de FatFs correctamente aquí? ¿Cuáles son algunas de las razones por las cuales las funciones devolverían FR_OK, aunque nunca escriban en el disco?

FIL file;
char text[64];

void update_record() {

static unsigned long timer;

if (record == 0 || ms - timer < 1000)
    return;

timer = ms;

UINT bw, i;
FRESULT fr;
f_write(&file, "test", 4, &bw);

text[9] = ',';
text[10] = '\n';

for(i = 0; i < 8; i++) text[i] = 0x20;
floatToString(Values[0].d_double, "");
fr = f_write(&file, &text, 8, &bw);
fr = f_write(&file, &text[9], 1, &bw);

for(i = 0; i < 8; i++) text[i] = 0x20;
floatToString(Values[1].d_double, "");
fr = f_write(&file, &text, 8, &bw);
fr = f_write(&file, &text[9], 1, &bw);

fr = f_write(&file, &text[10], 1, &bw);

fr = f_sync(&file);

}
    
pregunta kingcoyote

0 respuestas

Lea otras preguntas en las etiquetas