Easyelectronics.ru

Электроника для всех
Текущее время: 23 окт 2018, 23:34

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Перезапись данных в МС Flash-памяти
СообщениеДобавлено: 02 янв 2018, 01:21 
Старожил

Зарегистрирован: 11 фев 2016, 18:17
Сообщения: 335
Добрый вечер.
Каким образом принято перезаписывать данные во flash-память?
Вот есть МС M25P20. Храню, например, на первой странице 10 байт данных в самом ее начале. Далее эти данные прочитал, обработал. Теперь хочу из этих 10 байт обновить только 3 байта.
Правильно ли я понимаю, что перед тем как перезаписать их, нужно прочить ВСЕ байты из СЕКТОРА, затем очистить СЕКТОР (sector erase), содержащий данную страницу, и только после этого записать то, что мне нужно (+ остальные данные из сектора)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезапись данных в МС Flash-памяти
СообщениеДобавлено: 02 янв 2018, 02:03 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1753
Откуда: Харьков
Если не много операций записи - то да, если много - то можно дописывать в конец потом искать последнюю запись и читать ее. Достигли конца страницы/сектора - стираем весь сектор и начинаем сначала.
Вариантом масса и все уже жевано-пережевано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезапись данных в МС Flash-памяти
СообщениеДобавлено: 02 янв 2018, 12:55 
Старожил

Зарегистрирован: 11 фев 2016, 18:17
Сообщения: 335
Хм, никакого у микроконтроллера не хватит оперативной памяти тягать туда-сюда полмегабайта данных. Это какое-то извращение.
А как сделано на обычных USB-флешках?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезапись данных в МС Flash-памяти
СообщениеДобавлено: 02 янв 2018, 13:48 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 663
ElecDron писал(а):
Хм, никакого у микроконтроллера не хватит оперативной памяти тягать туда-сюда полмегабайта данных. Это какое-то извращение.

Не нравится писать секторами, пиши страницами и связывай их в цепочки. Если тебе вообще эта память подходит, похоже ты забыл ее емкость разделить на 8...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезапись данных в МС Flash-памяти
СообщениеДобавлено: 02 янв 2018, 17:41 
Старожил

Зарегистрирован: 11 фев 2016, 18:17
Сообщения: 335
А в какой энергонезависимой памяти лучше хранить настройки? Настройки - ну, как у программ для ПК (значения из выпадающего списка, радиокнопки, чекбоксы...)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезапись данных в МС Flash-памяти
СообщениеДобавлено: 02 янв 2018, 22:51 
Старожил
Аватара пользователя

Зарегистрирован: 18 июн 2011, 16:29
Сообщения: 1491
Откуда: Докучаевск, Донецкая обл
10 байт можно и в EEPROMе хранить. У большинства МК такая область памяти есть. Это если нужно хранить редко меняющиеся данные.

_________________
Programmer - it is a machine for converting coffee to software.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезапись данных в МС Flash-памяти
СообщениеДобавлено: 04 янв 2018, 22:00 
Старожил

Зарегистрирован: 11 фев 2016, 18:17
Сообщения: 335
В STM32F407VGT6 EEPROM не нашел.
Тогда вопрос по поводу перезаписи в память типа EEPROM. Вот есть чип, например такой: http://www.st.com/content/ccc/resource/technical/document/datasheet/4b/e9/91/0c/24/94/4c/dc/CD00258834.pdf/files/CD00258834.pdf/jcr:content/translations/en.CD00258834.pdf. Как происходит перезапись в данную ячейку памяти? Судя по инструкции, никаких команд типа erase нет. Значит можно в уже занятую ячейку записать поверх новое значение, и оно сохранится без искажений?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезапись данных в МС Flash-памяти
СообщениеДобавлено: 04 янв 2018, 22:10 
Старожил
Аватара пользователя

Зарегистрирован: 18 июн 2011, 16:29
Сообщения: 1491
Откуда: Докучаевск, Донецкая обл
Да. Но не более 32 байт за раз, иначе выйдете за пределы страницы.
Цитата:
Each time a new data byte is shifted in, the least significant bits of the internal address counter are incremented. If more bytes are sent than will fit up to the end of the page, a condition known as “roll-over” occurs. In case of roll-over, the bytes exceeding the page size are overwritten from location 0 of the same page.

Цитата:
The 4-Kbyte backup SRAM is an EEPROM-like memory area. It can be used to store data which need to be retained in VBAT and standby mode.
- да, в привычном понимании EEPROM отсутствует в STM32F407xx, но есть такая область памяти, как backup SRAM.

_________________
Programmer - it is a machine for converting coffee to software.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезапись данных в МС Flash-памяти
СообщениеДобавлено: 04 янв 2018, 22:33 
Старожил

Зарегистрирован: 11 фев 2016, 18:17
Сообщения: 335
Финский писал(а):
да, в привычном понимании EEPROM отсутствует в STM32F407xx, но есть такая область памяти, как backup SRAM.

Хм, как я понимаю, она работает только тогда, когда есть батарейка. Т.е. если питания нет вообще никакого, то храниться ничего не будет...
А мне нужно, чтобы без всяких батареек, ионистров и прочего)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезапись данных в МС Flash-памяти
СообщениеДобавлено: 05 янв 2018, 13:44 
Старожил

Зарегистрирован: 08 янв 2011, 21:54
Сообщения: 215
Откуда: Ставрополь
Сначала нужно определиться с требуемым объемом памяти , а потом выбирать микросхему памяти, чтоб был достаточный объем и была по зубам МК.

ElecDron писал(а):
значения из выпадающего списка, радиокнопки, чекбоксы...

Раз заговорил о ВЕБ интерфейсе, значит сайт где то хранится. Вот там и настройки могут храниться. У многих МК можно хранить в памяти программ.
На МК и ФАТ делают и ВЕБ управление поднимают. типа как здесь viewtopic.php?f=16&t=26613


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перезапись данных в МС Flash-памяти
СообщениеДобавлено: 05 янв 2018, 14:37 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 3694
Откуда: Кемеровская область, Киселевск
M25P20

Для программирования достаточно две команды, сначало WRITE ENABLE потом PAGE PROGRAM. Минимальная ячейка это страница (256 байт), программируется она последовательно от 1 до 256 байт. Программировать можно любое количество, но оно линейно в пределах страницы. Т.е. можно слить например с 1 по 25 байт.


Память организована как:

Всего 262144 байт (8 бит каждый)
4 сектора (256 страниц в каждом секторе)
1024 страницы (256 байт каждая страница)

Количество циклов не менее 100000 на сектор. Хранение 20 лет.

В даташите все написано.
Цитата:
Вот есть МС M25P20. Храню, например, на первой странице 10 байт данных в самом ее начале. Далее эти данные прочитал, обработал. Теперь хочу из этих 10 байт обновить только 3 байта.


Байты записываются от MSB к LSB линейно в пределах страницы. Поэтому первые три байта MSB можете записывать. Вывод как организовать хранение делайте сами.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB