Драйвер SD-карт и файловая система MIK32FAT
Общая информация
Репозиторий проекта: https://github.com/Barsy-Barsevich/SDxMIK32
Формат проекта: PlatformIO IDE Фреймворк: framework-mik32v2-sdk
Драйвер SD-карт
Реализовано взаимодействие по SPI с поддержкой:
-
Инициализации карты с определением типа
-
Отправки команд
-
Операций с секторами (512 байт):
-
Чтение
-
Запись
-
Стирание
Файловая система MIK32FAT
Особенности
-
Поддержка FAT32
-
Ограничения:
-
Только 8.3 имена (8 символов + 3 расширение)
-
Только заглавные латинские буквы и цифры
-
Без поддержки длинных имен (LFN)
Инициализация
FAT_Descriptor_t fs;
if (MIK32FAT_Init(&fs) == FAT_OK) {
printf("FS initialized successfully\n");
}
При инициализации:
|
Работа с файлами
Открытие файлов
FAT_File_t file;
FAT_Status_t status = MIK32FAT_FileOpen(&file, &fs, "FOLDER/FILE.TXT", 'W');
Режимы:
-
'R'
- чтение -
'W'
- дозапись (создает файл если не существует) -
'A'
- перезапись (удаляет и создает заново)
Пути должны использовать |
Чтение файлов
char buffer[256];
uint32_t bytes_read = MIK32FAT_ReadFile(&file, buffer, sizeof(buffer));
Возвращает: количество прочитанных байт
Примеры использования
Полный цикл работы
FAT_Descriptor_t fs;
FAT_File_t file;
// Инициализация
if (MIK32FAT_Init(&fs) != FAT_OK) {
printf("FS init failed\n");
return;
}
// Создание и запись
if (MIK32FAT_FileOpen(&file, &fs, "TEST.TXT", 'W') == FAT_OK) {
MIK32FAT_WriteFile(&file, "Test data", 9);
MIK32FAT_FileClose(&file);
}
// Чтение
if (MIK32FAT_FileOpen(&file, &fs, "TEST.TXT", 'R') == FAT_OK) {
char buf[10];
MIK32FAT_ReadFile(&file, buf, 9);
buf[9] = '\0';
printf("Read: %s\n", buf);
MIK32FAT_FileClose(&file);
}