реклама на сайте
подробности

 
 
> stm32 + flash-память M25P128, Бабуйня какая то
Still Enemy
сообщение Jun 11 2015, 19:41
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 29-01-15
Из: Нижний Новгород
Пользователь №: 84 817



Есть мк stm32f105 и флешка micron m25p128. Поднял взаимодействие между ними по spi. Но происходят какие то необъяснимые вещи. Я не помню как происходил первый раз записи в неё, но перезапись сводит меня с ума.
Начну чуть-чуть из далека: емкость памяти - 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.

Собственно, из этих слов можно сделать плачевный вывод, который подтверждает моя практика. Но мозг постоянно вопрошает: как так то? Что за дичь то такая?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Jun 12 2015, 03:12
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Still Enemy @ Jun 12 2015, 01:41) *
Я в первый раз работаю с flash-памятью и возможно так и должно быть, просто скажите, что так должно быть. Если же всё иначе, объясните как надо действовать? Просто мне с этой флешкой надо работать через DMA(то есть будет непрерывный поток данных), а тереть каждый заполненный сектор будет стоить времени(целых 3-6 секунд!!! и в эти моменты с флешки не прочитаешь и не запишешь).

Именно так флешь и работает - перед записью надо стереть. Перед использованием какой-либо микросхемы надо читать даташит на неё.
Существует серия AT45 с более удобной организацией: страницы 528 байт причём это и размер стирания и размер записи. И есть команда стирания/записи совмещённая.
И с двумя страницами (пока одна пишется, вторую можно грузить по SPI). Но всё равно время перезаписи == сумме времён стирания и записи.
Так что - если нужна непрерывность потока - буферизируйте в ОЗУ.
Рассчитайте пропускную способность флешь по записи учитывая время стирания/пересылки/записи.
Если не хватает - ищите флешь с более быстрым стиранием (в расчёте на байт) или ставьте в параллель на SPI несколько микросхем флешь.
Или используйте FRAM.
Go to the top of the page
 
+Quote Post
Still Enemy
сообщение Jun 12 2015, 08:01
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 29-01-15
Из: Нижний Новгород
Пользователь №: 84 817



Цитата(jcxz @ Jun 12 2015, 06:12) *
Именно так флешь и работает - перед записью надо стереть. Перед использованием какой-либо микросхемы надо читать даташит на неё.

Ну если вы думаете, что я просто беру микруху и начинаю на бум с ней работать, то вы сильно ошибаетесь. Я весь даташит прошерстил, нихрена там нет одного предупреждения по моему вопросу. В нете в одном источнике это написано, у какого то левого чувака. Как будто это априори должно быть. Ну хорошо, теперь буду знать.
А вот у меня еще вопрос по теме тогда к мастерам: как тогда организовать память с такими свойствами? нужно тогда выделять место в флехе для хранения информации о записанных/свободных секторах/страницах. С такой тягомотиной с записью/перезаписью. Может быть какую файловую систему типа fat поставить?

Сообщение отредактировал Still Enemy - Jun 12 2015, 08:46
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 03:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016