Невозможно использовать f_read() и f_lseek() в Fatfs
Я пытаюсь подключиться к SD-карте 2 ГБ класса 6 с микроконтроллером stm32f091cctx через SPI. Использование библиотеки fatFs ver. R0.13a Я могу смонтировать диск и открыть файл с помощью функций f_mount и f_open. Но когда дело доходит до чтения из файла, он просто останавливается где-то в функции f_read. Также, когда я пытаюсь изменить положение указателя с помощью f_lseek, он снова зависает. f_lseek работает только тогда, когда я пишу это как: f_lseek(&MyFile, 0). Эта часть моего кода, как показано ниже:
if(FATFS_LinkDriver(&SD_Driver, SDPath) == 0)
{
f_mount(&SDFatFs, (TCHAR const*)SDPath, 1);
f_open(&MyFile, "SAMPLE1.WAV", FA_READ);
f_lseek(&MyFile, 200);
f_read(&MyFile, rtext, 1000, (UINT*)&bytesread);
}
1 ответ
Вы, вероятно, исчерпали размер кучи и переходите к исключению HardFault.
Вы можете увеличить размер HEAP из CubeMX -> Project Setting или непосредственно из файла **_startup.s.
PS: Напечатайте что-нибудь в функциях HardFault_Handler и Error_Handler, чтобы увидеть, когда что-то пойдет не так.