Начну чуть-чуть из далека: емкость памяти - 16 метров, поделена она на 64 сектора, в каждом из которых по 1024 страницы, в каждой из которых по 256 байт. Есть функция записи - она работает только постранично, есть функция стирания - она работает посекторно(не считая того, что можно вообще всё потереть за раз).
Так вот, как показала практика, если записать в только что стертый сектор(в любую страницу) и прочитать, всё работает отлично. Как только я хочу перезаписать без стирания, то при чтении мне приходит какая то ересь. В даташите нигде ни строчки про то, что, если вам надо перезаписать страницу, вам надо потереть целый сектор(!!!).
Я в первый раз работаю с flash-памятью и возможно так и должно быть, просто скажите, что так должно быть. Если же всё иначе, объясните как надо действовать? Просто мне с этой флешкой надо работать через DMA(то есть будет непрерывный поток данных), а тереть каждый заполненный сектор будет стоить времени(целых 3-6 секунд!!! и в эти моменты с флешки не прочитаешь и не запишешь).
P.s.: вот здесь какой то умелец утверждает, что:
Цитата
Each sector of memory must have been previously erased before writing to that page. This means you cannot write to several address and then "backup" to rewrite to the first address. The entire sector must be erased before you can return rewrite to the first address.
Собственно, из этих слов можно сделать плачевный вывод, который подтверждает моя практика. Но мозг постоянно вопрошает: как так то? Что за дичь то такая?