Скорость записи на SD-карту в режиме SPI

У меня есть SD-карта (или SDHC-карта), подключенная к микроконтроллеру через режим SPI. Я использую библиотеку FAT Чана. Я записываю в него данные, которые поступают из 8192-байтового буфера (буфер не может быть больше из-за недостатка оперативной памяти). Это письмо выполняется периодически. Обычно запись готова до того, как буфер снова будет заполнен. Но время от времени (также в зависимости от скорости заполнения буфера) что-то идет не так, и запись НЕ готова, пока новый буфер не будет записан, что приведет к потере данных.

Кстати, размер сектора также установлен в 8192 байта, но другие, похоже, не влияют.

Письмо можно контролировать с помощью области, и показывает, что иногда письмо занимает много времени. Например, в четыре раза дольше, чем обычно.

Что здесь происходит, и, возможно, как я могу предотвратить это? Это как-то связано с последовательностью чтения, изменения, записи? Нужен ли мне внешний буфер памяти? Или есть лучшие способы улучшить производительность?

1 ответ

Не программная причина, но флэш-память имеет разное время записи. Причина в том, что напряжение, необходимое для выполнения записи, тщательно сбалансировано. Слишком высокое значение приводит к необратимому повреждению, слишком низкое может не изменить значение. Последний автоматически обрабатывается, в результате просто "легкое" заикание. Тем не менее, это заикание кажется вам слишком длинным, поскольку ваш буфер крошечный.

Решения? В прошлом мы использовали дорогие одноуровневые (SLC) SD-карты. Даже сейчас мы настаиваем на квалификации всех версий прошивок. Мы, конечно, не покупаем SD-карты на спотовом рынке.

Другие вопросы по тегам