СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №8/2014

ЭЛЕМЕНТЫ И КОМПОНЕНТЫ 38 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 8 2014 Современные 32-разрядные ARM-микроконтроллеры серии STM32: флэш-память В статье приводится описание организации флэш-памяти 32-разрядных ARM-микроконтроллеров серии STM32 компании STMicroelectronics. Рассмотрены её состав, архитектура и особенности использования, а также приведён пример программы, иллюстрирующий работу с флэш-памятью. Олег Вальпа (г. Миасс, Челябинская обл.) В ВЕДЕНИЕ Несмотря на все преимущества микроконтроллеров серии STM32 [1], они всё же имеют определённый недо- статок, который заключается в отсут- ствии электрически перепрограмми- руемой постоянной памяти EEPROM. Многие микроконтроллеры семей- ства AVR и PIC имеют такую память, и это позволяет без проблем решать некоторые задачи, связанные с опе- ративным изменением и долговре- менным хранением данных. К сожа- лению, в микроконтроллерах серии STM32 такой памяти нет. Но выход всё же существует. Например, можно подключить внешнюю память EEPROM через последовательный интерфейс I 2 C или SPI. Если же не хочется под- ключать дополнительную внешнюю микросхему, то в качестве энерго- независимой памяти в STM32 мож- но использовать энергонезависимые ячейки памяти BKP [2] или часть флэш- памяти, которая предназначена для хранения программ. Правда, запись в такую память со стороны процес- сора требует соблюдения определён- ных процедур. Тем не менее, это луч- ше, чем ничего. Использование энергонезависимых ячеек памяти BKP возможно лишь при наличии внешней батареи питания. Кроме того, количество таких ячеек невелико, поэтому предпочтительнее вариант использования некоторой части флэш-памяти. Поскольку STM32 имеет большой объём флэш-памяти, частичное её использование для хранения энер- гонезависимых данных не причи- нит больших неудобств. Необходи- мо ещё учесть, что количество циклов перезаписи для флэш-памяти огра- ничено 10 000 циклов, в отличие от 100 000 циклов обычной EEPROM памя- ти. Однако 10 000 циклов тоже немало, а если выделить для энергонезависи- мых данных несколько областей флэш- памяти и производить поочерёдное их использование, то количество циклов можно многократно увеличить. О РГАНИЗАЦИЯ ФЛЭШ - ПАМЯТИ Флэш-память состоит из главной памяти (Main Memory), информацион- ного блока (Information Block) и блока регистров интерфейса с флэш-памятью (Flash Memory Interface Registers). Для записи данных во флэш-память STM32 используется блок FPEC (Flash Program and Erase Controller), то есть контроллер записи и стирания флэш- памяти. Интерфейс с флэш-памятью облада- ет следующими особенностями: ● интерфейс чтения с буфером пред- варительной выборки (два слова по 64 бита); ● опционный байтовый загрузчик; ● операции программирования и сти- рания флэш-памяти; ● защита от записи и чтения. В таблице 1 представлена адресная организация флэш-памяти младшего семейства микроконтроллеров серии STM32. Первый блок представляет собой основную память, в которую записыва- ется программа и другие данные. Блок основной памяти поделён на страницы объёмом несколько килобайт. Информационный блок содержит в себе два раздела: системную память и опционные байты. В системной памя- ти хранится загрузчик, который позво- ляет программировать контроллер через последовательный порт USART. Этот раздел памяти невозможно уда- лить или модифицировать. Раздел опционных байт хранит информацию о защите основной памяти. Он позво- ляет включить или отключить защиту от чтения и записи данных в основную флэш-память. Прочитать программно 32-раз- рядные данные с именем перемен- ной data из флэш-памяти можно при помощи следующей команды: data= (*(__IO uint32_t*) address). Записать данные в основную область флэш-памяти можно только после предварительного стирания этой Таблица 1. Адресная организация флэш-памяти младшего семейства STM32 Блок Имя Базовый адрес Размер, байт Основная память Страница 0 0x08000000 - 0x080003FF 1 КБ Страница 1 0x08000400 - 0x080007FF 1 КБ Страница 2 0x08000800 - 0x08000BFF 1 КБ Страница 3 0x08000C00 - 0x08000FFF 1 КБ … … … Страница 31 0x08007C00 - 0x08007FFF 1 КБ Информационный блок Системная память 0x1FFFF000 - 0x1FFFF7FF 2 КБ Опционные байты 0x1FFFF800 - 0x1FFFF80F 16 Регистры интерфейса с флэш-памятью FLASH_ACR 0x40022000 - 0x40022003 4 FLASH_KEYR 0x40022004 - 0x40022007 4 FLASH_OPTKEYR 0x40022008 - 0x4002200B 4 FLASH_SR 0x4002200C - 0x4002200F 4 FLASH_CR 0x40022010 - 0x40022013 4 FLASH_AR 0x40022014 - 0x40022017 4 Резерв 0x40022018 - 0x4002201B 4 FLASH_OBR 0x4002201C - 0x4002201F 4 FLASH_WRPR 0x40022020 - 0x40022023 4 © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy