Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MSP430_НВВ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.67 Mб
Скачать

3.12 Flash контроллер

MSP-микроконтроллеры содержат в своем составе контроллер программирования собственной flash-памяти. Программирование (запись логических нулей) может осуществляться побайтно и пословно, стирание (запись логических единиц) – может производиться сегментами, размером 512 (Flash память программ) или 128 (Flash память данных) байт (см. рис. 1).

Процесс стирания/записи происходит под управлением встроенного генератора времени, осуществляющего тактирование Flash контроллера. При этом для нормальной работы частота тактирования Flash контроллера должна находиться в диапазоне 257 – 476 kHz. В противном случае Flash память микроконтроллера может подвергнуться стрессу. Настройка частоты тактирования Flash контроллера производиться с помощью делителя частоты, коэффициент деления, которого задается через регистр управления.

3.12.1 Стирание Flash памяти

Режим стирания памяти задается состоянием битов MERAS (Mass Erase) и ERAS (Erase) регистра управления, при условии, что бит LOCK (блокировка записи flash памяти) сброшен в ноль. При этом возможны следующие режимы:

  • стирание одного сегмента;

  • стирание всей памяти программ;

  • одновременное стирание всей памяти программ и Flash памяти данных.

Стирание инициализируется записью произвольных данных в выбранный сегмент памяти при установленных битах MERAS и/или ERAS. Сразу после этого в регистре управления устанавливается бит BUSY, сигнализируя об активности операции стирания. По окончанию операции BUSY сбрасывается в 0 автоматически.

Во время операции стирания/записи процессор не должен обращаться к Flash памяти. Так как вектора прерывания расположены в верхней области памяти программ, все прерывания также должны быть запрещены.

Если процесс стирания был инициирован командой, расположенной во Flash памяти, работа процессора автоматически блокируется на время активности сигнала BUSY. Для стирания памяти необходимо выполнить следующую последовательность действий:

  1. Запретить все прерывания и остановить сторожевой таймер.

  2. Настроить тактовую частоту Flash контроллера.

  3. Установить режим стирания битами MERAS и/или ERAS и сбросить бит LOCK в состояние 0.

  4. Произвести фиктивную запись в выбранный сегмент.

  5. Если требуется, разрешить прерывания, сторожевой таймер и установить LOCK бит.

Период полного стирания Flash памяти может достигать нескольких десятков миллисекунд. В течение этого время процессор находиться в деактивированном состоянии. Для того чтобы процессор мог исполнять какую-либо полезную работу во время процесса стирания, необходимо, чтобы команда на стирание памяти производилась не из Flash, а из ОЗУ. Естественно, что для этого подпрограмма стирания изначально должна располагаться во Flash памяти. Перед началом процесса стирания тело этой подпрограммы должно быть скопировано в ОЗУ, после чего ей должно быть передано управление. Прерывания в данном случае также должны быть запрещены, т.к. адрес подпрограммы обработки прерывания вычитывается из старших адресов Flash памяти (см. п. 3.2). Для стирания памяти при работе из ОЗУ необходимо выполнить следующую последовательность действий:

  1. Запретить все прерывания и остановить сторожевой таймер.

  2. Настроить тактовую частоту Flash контроллера.

  3. Дождаться, пока состояние бита BUSY не станет равным 0.

  4. Установить режим стирания битами MERAS и/или ERAS и сбросить бит LOCK в состояние 0.

  5. Произвести фиктивную запись в выбранный сегмент.

  6. Дождаться, пока состояние бита BUSY не станет равным 0.

  7. Если требуется, разрешить прерывания, сторожевой таймер и установить LOCK бит.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]