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

ЭЛЕМЕНТЫ И КОМПОНЕНТЫ 39 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 8 2014 области памяти. Кроме того, перед записью данных необходимо разре- шить запись в специальном регистре блока FPEC. Стирать флэш-память можно толь- ко кратно страницам, каждая из кото- рых состоит из нескольких кило- байт. При этом необходимо помнить, что во флэш-памяти записана и хра- нится программа микроконтролле- ра. Поэтому область для записи дан- ных необходимо выбирать в свобод- ном от кода программы пространстве флэш-памяти. Удобнее всего для это- го использовать последние страницы памяти. Кроме того, необходимо регу- лярно следить, чтобы размер програм- мы не перекрыл область пользователь- ских данных, учитывая размер страниц микроконтроллера. Все разряды данных очищенной области флэш-памяти принимают еди- ничное значение. По этому признаку можно определить очищена память или нет. Запись в основную область флэш- памяти можно производить по любо- му адресу. Вначале записываются два младших байта слова, а затем два стар- ших байта. Перед стиранием или записью в память необходимо снять её блоки- ровку, а после окончания процедуры стирания или записи установить бло- кировку. Для снятия блокировки флэш- памяти необходимо последовательно записать в регистр FLASH_KEYR два числа: 0x45670123 и 0xCDEF89AB. Если записать в этот регистр другие данные, то блокировку невозможно будет снять до полной перезагрузки микроконт- роллера. Р ЕГИСТРЫ БЛОКА FPEC Карта регистров блока контролле- ра записи и стирания флэш-памяти FPEC приведена в таблице 2. Рассмо- трим состав и назначение регистров данного блока, принимающих участие в работе с флэш-памятью. В регистре FLASH_ACR использует- ся лишь один третий разряд HLFCYA, который разрешает половинные циклы обращения к флэш-памяти, то есть 16-разрядными данными. Остальные биты этого регистра зарезервированы. Регистр FLASH_KEYR используется для разблокировки флэш-памяти кон- троллера FPEC и обеспечивает сброс бита LOCK в регистре FLASH_CR. Раз- блокировка производится последо- вательной записью в этот регистр двух ключей: KEY1=0x45670123 и KEY2=0xCDEF89AB. После записи ключа KEY1, а затем ключа KEY2 в данный регистр, бит LOCK будет сброшен, блок FPEC раз- блокирован, а регистр FLASH_CR ста- нет доступным для записи. После записи данных во флэш- память нужно программно устано- вить бит LOCK. При необходимости снова записать данные, придётся опять выполнить процедуру разблокировки с помощью ключей KEY1 и KEY2. В случае ошибки при записи ключей, блок FPEC заблокируется, и повторная запись верных ключей не сможет раз- блокировать его. В таком случае помо- жет только сброс микроконтроллера, после чего снова будет возможна про- цедура разблокировки блока FPEC. Регистр FLASH_OPTKEYR использу- ется для получения доступа к установ- ке и сбросу разрядов в блоке опцион- ных байт, которые изначально доступ- ны только для чтения. Для получения возможности изменения данных в обла- сти опционных байт необходимо запи- сать в регистр FLASH_OPTKEYR такуюже последовательность ключей, что и для регистра FLASH_KEYR. После записипра- вильных ключей в регистре FLASH_CR будет установлен бит OPTWRE, кото- рый разрешает запись данных в область опционных байт флэш-памяти. Таблица 2. Карта регистров блока FPEC Сдвиг Регистр 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0x000 FLASH_ACR Резерв HLFCYA Резерв Исх. значение 0 0x004 FLASH_KEYR FKEYR[31:0] Исх. значение x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 0x008 FLASH_OPTKEYR OPTKEYR[31:0] Исх. значение x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 0x00C FLASH_SR Резерв EOP WRPRTERR Резерв PGERR ERLYBSY BSY Исх. значение 0 0 0 0 0 0x010 FLASH_CR Резерв EOPIE Резерв ERRIE OPTWRE Резерв LOCK STRT OPTER OPTPG Резерв MER PER PG Исх. значение 0 0 0 1 0 0 0 0 0 0 0x014 FLASH_AR FAR[31:0] Исх. значение x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 0x018 Резерв 0x01C FLASH_OBR Резерв Data1 Data2 Не используется nRST_STDBY nRST_STOP WDG_SW RDPRT OPTERR Исх. значение 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0x020 FLASH_WRPR WRP[31:0] Исх. значение 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy