Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004)

.pdf
Скачиваний:
345
Добавлен:
12.08.2013
Размер:
3.31 Mб
Скачать

Контроллер флэш-памяти

Раздел V.

MSP430x1xxFamily

MSP430x1xxFamily

Контроллер флэш-памяти

В этом разделе описывается работа контроллера флэш-памяти семейства MSP430.

5.1. Введение в флэш-память

Флэш-память в MSP430 адресуется побитно, побайтно или пословно и может перепрограммироваться. Модуль флэш-памяти имеет интегрированный контроллер, управляющий процессом стирания и программирования. Контроллер имеет три регистра, тактовый генератор и генератор напряжения для обеспечения напряжений стирания и программирования.

Флэш-память в MSP430 обладает следующими возможностями:

внутренний генератор напряжения для программирования;

программирование битов, байтов или слов;

работа при ультранизком потреблении мощности;

стирание сегмента или массовое (полное) стирание.

Блок-схема флэш-памяти и контроллера показана на рис. 5.1.

Рис. 5-1. Блок-схема модуля флэш-памяти

112

 

Библиотека Компэла

 

Раздел V.

Контроллер флэш-памяти

Примечание: Минимальное напряжение VCC во время записи или стирания флэш-памяти

Минимальное значение напряжения VCC во время записи или стирания флэш-памяти должно составлять 2,7 В. Если VCC падает ниже 2,7 В во время записи или стирания, результат записи или стирания будет непредсказуемым.

5.2. Сегментация флэш-памяти

Флэш-память в MSP430 разбита на сегменты. В неё может быть записан один бит, байт или слово, но сегмент – это минимальный размер флэш-памяти, который можно стереть. Три режима стирания позволяют стереть один сегмент, стереть все главные сегменты или стереть все сегменты (основные и информационные сегменты).

Флэш-память разделена на основной и информационный разделы памяти. Нет никаких различий в работе основного и информационного разделов памяти. Программный код или данные могут быть расположены в любом разделе. Различие между этими двумя разделами заключается в разных размерах сегмента и различных физических адресах.

Информационная память имеет два 128-байтных сегмента (в устройствах MSP430F1101 есть только один сегмент). Основная память имеет два или более 512-байтных сегмента. См. справочное руководство конкретного устройства для выяснения точной карты памяти.

На рис.5.2 показана сегментация памяти на основе примера 4 кБ флэш-па- мяти, имеющей восемь основных сегментов и оба информационных сегмента.

5.3. Функционирование флэш-памяти

Режим по умолчанию для флэш-памяти – режим чтения. В этом режиме флэш-память не может быть стерта или записана, тактовый генератор и генератор напряжения выключены – память работает подобно ПЗУ.

Флэш-память MSP430 поддерживает внутрисистемное программирование (ISP) и не нуждается в использовании дополнительного внешнего напряжения. ЦПУ может программировать собственную флэш-память. Приведенные ниже режимы записи/стирания флэш-памяти выбираются битами BLKWRT, WRT, MERAS, ERASE:

запись байта/слова

запись блока

стирание сегмента

массовое стирание (стирание всех сегментов основной памяти)

полное стирание (стирание всех сегментов)

Библиотека Компэла

 

113

 

MSP430x1xxFamily

Рис. 5-2. Сегменты флэш-памяти, пример для 4кБ

Чтение или запись флэш-памяти во время программирования или стирания запрещены. Если требуется выполнение программы ЦПУ в течении записи или стирания, исполняемый код должен быть помещен в ОЗУ. Любое обновление флэш может инициироваться из флэш-памяти или ОЗУ.

5.3.1. Тактовый генератор флэш-памяти

Операции записи и стирания управляются тактовым генератором флэшпамяти, показанным на рис. 5.3. Рабочая частота f(FTG) тактового генератора

Рис. 5-3. Блок-схема тактового генератора флэш-памяти

114

 

Библиотека Компэла

 

Раздел V.

Контроллер флэш-памяти

должна лежать в диапазоне от ~ 257 кГц до ~ 476 кГц (точные данные см. в руководстве по конкретному устройству).

Тактовый генератор флэш-памяти может тактироваться от ACLK, SMCLK или MCLK. Тактовый сигнал выбранного источника должен быть поделен с помощью битов FNx для обеспечения необходимых требований к частоте f(FTG). Если появляется девиация (отклонение) частоты f(FTG) от требуемого значения в ходе записи или стирания, результат записи или стирания может быть непредсказуемым или же флэш-память окажется подвергнутой ударной перегрузке сверх допустимых пределов, гарантирующих надежную работу.

5.3.2. Стирание флэш-памяти

После стирания бит флэш-памяти читается как «1». Можно программировать индивидуально каждый бит, меняя его значение с «1» на «0», но перепрограммирование от «0» к «1» требует выполнения цикла стирания. Сегмент – это наименьшее количество флэш-памяти, которое можно стереть. Существует три режима стирания, которые могут быть выбраны с помощью битов ERASE и MERAS в соответствии с таблицей 5-1.

Таблица 5-1. Режимы стирания

MERAS ERASE

Режим стирания

01 Стирание сегмента

10 Массовое стирание (стирание всех сегментов основной памяти)

11 Стирание всей флэш-памяти (основных и информационных сегментов)

Любое стирание инициируется фиктивной записью1 в адресный диапазон, который будет стерт. Фиктивная запись запускает тактовый генератор флэш-па- мяти и процедуру стирания. На рис. 5.4 показан временной цикл процесса стира-

Генерация

Операция стирания

Снятие

напряжения

напряжения

программирования

программирования

Время стирания, от VCC потребляется повышенный ток

BUSY

t (полное стирание) = t(массовое стирание) = 5297/f(FTG), t(стирание сегмента) = 4819/f(FTG)

Рис. 5-4. Временная диаграмма цикла стирания

1 Имеется ввиду выполнение реальной команды записи в флэш-память любых незначащих данных для запуска процедуры стирания.

Библиотека Компэла

 

115

 

MSP430x1xxFamily

ния. Бит BUSY устанавливается немедленно после фиктивной записи и остается установленным в течение всего цикла стирания. Биты BUSY, MERAS и ERASE автоматически очищаются, когда цикл завершен. Временные параметры цикла стирания не зависят от объема представленной в устройстве флэш-памяти. Продолжительность цикла стирания одинакова для всех устройств MSP430.

Фиктивная запись по адресу, который лежит вне диапазона стирания не приводит к запуску цикла стирания, не воздействует на флэш-память и не влияет на флаги. Такая ошибочная фиктивная запись игнорируется.

Прерывания должны быть отключены перед началом цикла стирания флэш-памяти. После завершения цикла стирания прерывания могут быть разрешены вновь. Любое прерывание, произошедшее во время цикла стирания, вызовет установку соответствующего флага, а после разрешения прерываний будет сгенерирован запрос на обработку прерывания.

Инициирование процедуры стирания из программы, находящейся в флэшпамяти

Любой цикл стирания может быть инициирован программой, находящейся как во флэш-памяти, так и в ОЗУ. Когда стирание сегмента инициировано программой из флэш-памяти, все тактирование выполняется контроллером флэш-памяти, а ЦПУ останавливается до завершения цикла стирания. После окончания цикла стирания ЦПУ продолжает выполнение программного кода с команды, следующей за фиктивной записью.

Когда цикл стирания инициируется программой их флэш-памяти, возможно стирание кода, необходимого для выполнения после завершения

Рис. 5-5. Цикл стирания, инициируемый программой из флэш-памяти

116

 

Библиотека Компэла

 

Раздел V.

Контроллер флэш-памяти

стирания. Если это произойдет, работа ЦПУ после окончания цикла стирания будет непредсказуема.

Программный поток, инициирующий стирание из флэш-памяти, показан на рис. 5.5.

;Стирание сегмента из флэш. 514 кГц < SMCLK < 952 кГц ;Принимается ACCVIE = NMIIE = OFIE = 0.

MOV

#WDTPW+WDTHOLD,&WDTCTL

;Отключение WDT

DINT

 

;Запрещение прерываний

MOV

#FWKEY+FSSEL1+FN0,&FCTL2

;SMCLK/2

MOV

#FWKEY,&FCTL3

;Очистка LOCK

MOV

#FWKEY+ERASE,&FCTL1

;Разрешение стирания

 

 

;сегмента

CLR

&0FC10h

;Фиктивная запись,

 

 

;стирание S1

MOV

#FWKEY+LOCK,&FCTL3

;Выполнено, установка

 

 

;LOCK

...

 

;Повторное включение

 

 

;WDT?

EINT

 

;Разрешение прерываний

Инициирование процедуры стирания программой из ОЗУ

Любой цикл стирания может быть инициирован из ОЗУ. В этом случае ЦПУ не приостанавливается, и может продолжать выполнять код из ОЗУ. Доступ ЦПУ к любому адресу флэш-памяти возможен после окончания цикла стирания, которое определяется путем опроса бита BUSY. Попытка доступа к флэш-памяти, когда BUSY=1 приведет к нарушению доступа с последующей установкой флага ACCVIFG и непредсказуемым результатам процедуры стирания.

Программный поток стирания из флэш-памяти программой из ОЗУ показан на рис. 5.6.

;Стирание сегмента программой из ОЗУ. 514 кГц<SMCLK <952 кГц

;Принимается ACCVIE = NMIIE = OFIE = 0.

MOV #WDTPW+WDTHOLD,&WDTCTL

;Отключение WDT

DINT

;Запрещение прерываний

L1 BIT #BUSY,&FCTL3

;Проверка BUSY

JNZ L1

;Ожидание, пока занято

MOV #FWKEY+FSSEL1+FN0,&FCTL2 ;SMCLK/2

Библиотека Компэла

 

 

 

 

 

117

 

 

MSP430x1xxFamily

Отключение всех прерываний и сторожевого таймера

да

BUSY = 1

Установка контроллера флэш и режима стирания

Выполнение фиктивной записи

да

BUSY = 1

Установка LOCK=1, разрешение прерываний и включение сторожевого таймера

Рис. 5-6. Цикл стирания, инициируемый программой из ОЗУ

MOV

#FWKEY,&FCTL3

;Очистка LOCK

MOV

#FWKEY+ERASE,&FCTL1

;Разрешение стирания

CLR &0FC10h

;Фиктивная запись,

 

 

 

;стирание S1

L2 BIT #BUSY,&FCTL3

;Проверка BUSY

JNZ L2

;Ожидание, пока занято

MOV #FWKEY+LOCK,&FCTL3

;Завершено, установка

 

 

 

;LOCK

...

 

;Повторное включение

 

 

 

;WDT?

EINT

;Разрешение прерываний

 

 

 

 

Библиотека Компэла

118

 

 

 

 

 

 

Раздел V. Контроллер флэш-памяти

5.3.3. Запись в флэш-память

Режимы записи, задаваемые битами WRT и BLKWRT приведены в таблице 5.2.

 

 

Таблица 5-2. Режимы записи

 

 

 

 

BLKWRT

WRT

 

Режим записи

 

 

 

 

0

1

 

Запись байта/слова

 

 

 

 

1

1

 

Запись блока

 

 

 

 

Каждый из режимов записи использует последовательность собственных команд записи, но режим блочной записи позволяет выполнять запись примерно вдвое быстрее по сравнению с режимом байт/слово, поскольку генератор напряжения остается включенным до завершения записи блока. Любая команда, модифицирующая получателя может использоваться для изменения месторасположения в флэш-памяти как в режиме записи байта/слова, так и в режиме блочной записи.

Бит BUSY установлен, пока активна процедура записи и очищается, когда запись завершена. Если операция записи инициирована из ОЗУ, ЦПУ не должен обращаться к флэш-памяти, пока BUSY=1. В противном случае произойдет нарушение прав доступа, будет установлен флаг ACCVIFG, а результат записи окажется непредсказуем.

Запись байта/слова

Операция записи байта/слова может инициироваться программой из флэш-памяти или из ОЗУ. Когда инициирование происходит из флэш-памяти, все тактирование осуществляется контроллером флэш-памяти, а ЦПУ ожидает завершения записи. После выполнения записи ЦПУ продолжает выполнение кода с команды, следующей за командой записи. Временная диаграмма процедуры записи байта/слова показана на рис. 5.7.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнение операции программирования

 

 

 

 

 

 

 

 

Генерация

 

Снятиея

 

 

 

 

 

 

 

 

 

 

 

 

напряжения

 

 

напряжения

 

 

 

 

программирования

 

программирования

 

 

 

 

 

 

Время программирования потребления тока VCC повышено

 

 

BUSY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t(запись слова)

= 33/f(FTG)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 5-7. Временная диаграмма операции записи байта/слова

Библиотека Компэла

 

 

 

 

 

 

 

 

 

 

 

 

119

 

 

 

 

MSP430x1xxFamily

Когда запись байта/слова выполняется из ОЗУ, ЦПУ продолжает выполнять код из ОЗУ. Бит BUSY должен стать равным нулю, прежде чем ЦПУ обратится к флэш-памяти снова, иначе произойдет нарушение прав доступа и установка флага ACCVIFG, а результат записи будет непредсказуем.

Инициирование записи байта/слова программой из флэш-памяти

Программный поток, инициирующий запись байта/слова из флэш-памяти показан на рис. 5.8.

Запрещение всех прерываний и отключение сторожевого таймера

Установка контроллера флэш и установка WRF = 1

Запись байта и слова

Установка WRT = 0, LOCK = 1, разрешение прерываний и включение сторожевого таймера

Рис. 5-8. Инициирование записи байта/слова из флэш-памяти

;Запись байта/слова из флэш. 514 кГц<SMCLK<952 кГц

;Принимается, что 0FF1Eh уже стерто

;Принимается ACCVIE = NMIIE = OFIE = 0.

MOV #WDTPW+WDTHOLD,&WDTCTL ;Отключение сторожевого ;таймера

DINT

 

;Запрещение прерываний

MOV

#FWKEY+FSSEL1+FN0,&FCTL2 ;SMCLK/2

 

MOV

#FWKEY,&FCTL3

;Очистка LOCK

 

MOV

#FWKEY+WRT,&FCTL1

;Разрешение записи

 

MOV

#0123h,&0FF1Eh

;0123h –> 0FF1Eh

 

MOV

#FWKEY,&FCTL1

;Выполнено. Очистка WRT

 

MOV

#FWKEY+LOCK,&FCTL3

;Установка LOCK

 

...

 

;Повторный запуск

 

 

 

;сторожевого таймера?

EINT

 

;Разрешение прерываний

 

 

 

 

Библиотека Компэла

120

 

 

 

 

Соседние файлы в предмете Микроконтроллеры ЭВМ