вот что говорит наш жестяной друг: При использовании SD-карты в режиме SPI, форматирование в файловую систему (например, FAT32) не является обязательным. Вы можете использовать SD-карту как массив флэш-памяти, если это соответствует вашим задачам. Однако, для удобства работы с данными и совместимости с другими устройствами, файловая система часто является предпочтительным выбором.
-
Использование как массива флэш-памяти:
- Если вы не используете файловую систему, то можете работать с SD-картой на уровне секторов (обычно 512 байт). Вы можете читать и записывать данные по секторам, используя соответствующие команды SPI (например,
READ_SINGLE_BLOCK
и WRITE_BLOCK
).
- Однако, SD-карта не поддерживает побайтовую запись. Запись всегда происходит блоками (секторами). Даже если вы хотите изменить один байт, вам нужно прочитать весь сектор, изменить нужный байт, а затем записать сектор обратно.
-
Побайтовая запись:
- Побайтовая запись напрямую невозможна. SD-карта работает с блоками данных, и для изменения одного байта требуется чтение, модификация и запись всего блока.
- Если вы хотите вести "потоковую" запись, вам нужно будет управлять буфером в вашем коде, накапливать данные и записывать их блоками, когда буфер заполнится.
-
Стирание страниц:
- В SD-картах нет понятия "страниц" как во флэш-памяти NAND. Вместо этого используется блочная структура. Перед записью новых данных в блок, старые данные должны быть стерты. Однако, это обычно прозрачно для пользователя, так как контроллер SD-карты сам управляет этим процессом.
- Если вам нужно часто изменять небольшие объемы данных, рассмотрите использование файловой системы (например, FAT16/FAT32), которая упрощает управление данными и позволяет работать с файлами.
- Если вы хотите использовать SD-карту как массив памяти, убедитесь, что ваш код правильно управляет блочной записью и чтением.
В итоге, SD-карта в режиме SPI может использоваться как массив флэш-памяти, но запись всегда происходит блоками, а не побайтово.