
Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004)
.pdf
Контроллер флэш-памяти
Раздел 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 |
|
|
||
|
|