目前,我正在使用 Intel D2000 Quark 板写入 SD 卡。我正在使用标准的 FatFs 系统来建立 FAT16 标准。
问题:每当我写入 SD 卡时,SD 卡只有在文件中有内容时才会保存它。这意味着,我发送的文本将覆盖文件中的内容。当我将读/写指针设置为文件末尾时(这是最终的目标),我写入的数据会丢失。
我的主要:
int main(void)
{
QM_PRINTF("Starting: SPI\n\n");
FIL f;
char text1[512] ="Ik ben makelaar in koffi, en woon op de Lauriergracht No 37.\n "
"Het is mijn gewoonte niet, romans te schrijven, of zulke dingen, \n"
"en het heeft dan ook lang geduurd,";
f_mount(&FatFs, "", 0);
fr = f_open(&f, "DATA.TXT", FA_OPEN_ALWAYS | FA_WRITE);
QM_PRINTF("%d\n", (int)fr);
QM_PRINTF("Size: %d\n", f_size(&f));
fr = f_write(&f, text1, sizeof(text1), &bw);
f_sync(&f);
QM_PRINTF("write: %d count: %d\n", fr, bw);
QM_PRINTF("Size: %d\n", f_size(&f));
QM_PRINTF("%d\n", bw);
fr = f_close(&f);
f_mount(0,"",0);
QM_PRINTF("%d\n", fr);
QM_PRINTF("Finished: SPI\n");
QM_PRINTF("-----------------------------------\n");
}
当文件中有内容并且读/写指针位于文件开头时,我为控制台获得的结果。此时,数据被写入 SD 卡并保存(当我将 SD 卡放入笔记本电脑并打开文件时,我可以读取它)。
Starting: SPI
0
Size: 3362
write: 0 count: 512
Size: 3362
512
0
Finished: SPI
-----------------------------------
当读/写指针位于文件末尾(FA_OPEN_APPEND)时,我从控制台得到的结果:
Starting: SPI
0
Size: 3362
write: 0 count: 512
Size: 3874
512
0
Finished: SPI
-----------------------------------
之后,当我将 SD 卡放入笔记本电脑时,文本消失了。
有没有人遇到过同样的问题并找到了解决方案。当您需要更多信息时,请询问。