Руководство пользователя MSP430 (1041606), страница 11
Текст из файла (страница 11)
Флэш-память в MSP430 обладает следующими возможностями:
-
внутренний генератор напряжения для программирования;
-
программирование битов, байтов или слов;
-
работа при ультранизком потреблении мощности;
-
стирание сегмента или массовое (полное) стирание.
Блок-схема флэш-памяти и контроллера показана на рис. 5.1.
Примечание: Минимальное напряжение VCC во время записи или стирания флэш-памяти |
Рис.5-1 Блок-схема модуля флэш-памяти
5.2 Сегментация флэш-памяти
Флэш-память в MSP430 разбита на сегменты. В неё может быть записан один бит, байт или слово, но сегмент – это минимальный размер флэш-памяти, который можно стереть. Три режима стирания позволяют стереть один сегмент, стереть все главные сегменты или стереть все сегменты (основные и информационные сегменты).
Флэш-память разделена на основной и информационный разделы памяти. Нет никаких различий в работе основного и информационного разделов памяти. Программный код или данные могут быть расположены в любом разделе. Различие между этими двумя разделами заключается в разных размерах сегмента и различных физических адресах.
Информационная память имеет два 128-байтных сегмента (в устройствах MSP430x1101 есть только один сегмент). Основная память имеет два или более 512-байтных сегмента. См. справочное руководство конкретного устройства для выяснения точной карты памяти.
На рис.5.2 показана сегментация памяти на основе примера 4 кБ флэш-памяти, имеющей восемь основных сегментов и оба информационных сегмента.
Рис.5-2 Сегменты флэш-памяти, пример для 4кБ
5.3 Функционирование флэш-памяти
Режим по умолчанию для флэш-памяти – режим чтения. В этом режиме флэш-память не может быть стерта или записана, тактовый генератор и генератор напряжения выключены – память работает подобно ПЗУ.
Флэш-память MSP430 поддерживает внутрисистемное программирование (ISP) и не нуждается в использовании дополнительного внешнего напряжения. ЦПУ может программировать собственную флэш-память. Приведенные ниже режимы записи/стирания флэш-памяти выбираются битами BLKWRT, WRT, MERAS, ERASE:
-
запись байта/слова
-
запись блока
-
стирание сегмента
-
массовое стирание (стирание всех сегментов основной памяти)
-
полное стирание (стирание всех сегментов)
Чтение или запись флэш-памяти во время программирования или стирания запрещены. Если требуется выполнение программы ЦПУ в течении записи или стирания, исполняемый код должен быть помещен в ОЗУ. Любое обновление флэш может инициироваться из флэш-памяти или ОЗУ.
5.3.1 Тактовый генератор флэш-памяти
Операции записи и стирания управляются тактовым генератором флэш-памяти, показанным на рис.5.3. Рабочая частота f(FTG) тактового генератора должна лежать в диапазоне от ~ 257 кГц до ~ 476 кГц (точные данные см. в руководстве по конкретному устройству).
Рис.5-3 Блок-схема тактового генератора флэш-памяти
Тактовый генератор флэш-памяти может тактироваться от ACLK, SMCLK или MCLK. Тактовый сигнал выбранного источника должен быть поделен с помощью битов FNx для обеспечения необходимых требований к частоте f(FTG). Если появляется девиация (отклонение) частоты f(FTG) от требуемого значения в ходе записи или стирания, результат записи или стирания может быть непредсказуемым или же флэш-память окажется подвергнутой ударной перегрузке сверх допустимых пределов, гарантирующих надежную работу.
5.3.2 Стирание флэш-памяти
После стирания бит флэш-памяти читается как «1». Можно программировать индивидуально каждый бит, меняя его значение с «1» на «0», но перепрограммирование от «0» к «1» требует выполнения цикла стирания. Сегмент – это наименьшее количество флэш-памяти, которое можно стереть. Существует три режима стирания, которые могут быть выбраны с помощью битов ERASE и MERAS в соответствии с таблицей 5-1.
Таблица 5-1. Режимы стирания
MERAS | ERASE | Режим стирания |
0 | 1 | Стирание сегмента |
1 | 0 | Массовое стирание (стирание всех сегментов основной памяти) |
1 | 1 | Стирание всей флэш-памяти (основных и информационных сегментов) |
Любое стирание инициируется фиктивной2 записью в адресный диапазон, который будет стерт. Фиктивная запись запускает тактовый генератор флэш-памяти и процедуру стирания. На рис.5.4 показан временной цикл процесса стирания. Бит BUSY устанавливается немедленно после фиктивной записи и остается установленным в течение всего цикла стирания. Биты BUSY, MERAS и ERASE автоматически очищаются, когда цикл завершен. Временные параметры цикла стирания не зависят от объема представленной в устройстве флэш-памяти. Продолжительность цикла стирания одинакова для всех устройств MSP430.
Рис.5-4 Временная диаграмма цикла стирания
Фиктивная запись по адресу, который лежит вне диапазона стирания не приводит к запуску цикла стирания, не воздействует на флэш-память и не влияет на флаги. Такая ошибочная фиктивная запись игнорируется.
Прерывания должны быть отключены перед началом цикла стирания флэш-памяти. После завершения цикла стирания прерывания могут быть разрешены вновь. Любое прерывание, произошедшее во время цикла стирания, вызовет установку соответствующего флага, а после разрешения прерываний будет сгенерирован запрос на обработку прерывания.
Инициирование процедуры стирания из программы, находящейся в флэш-памяти
Любой цикл стирания может быть инициирован программой, находящейся как во флэш-памяти, так и в ОЗУ. Когда стирание сегмента инициировано программой из флэш-памяти, все тактирование выполняется контроллером флэш-памяти, а ЦПУ останавливается до завершения цикла стирания. После окончания цикла стирания ЦПУ продолжает выполнение программного кода с команды, следующей за фиктивной записью.
Когда цикл стирания инициируется программой их флэш-памяти, возможно стирание кода, необходимого для выполнения после завершения стирания. Если это произойдет, работа ЦПУ после окончания цикла стирания будет непредсказуема.
Программный поток, инициирующий стирание из флэш-памяти, показан на рис.5.5.
Рис.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.
Рис.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 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 ; Разрешение прерываний |
5.3.3 Запись в флэш-память
Режимы записи, задаваемые битами WRT и BLKWRT приведены в таблице 5.2.
Таблица 5-2. Режимы записи
BLKWRT | WRT | Режим записи |
0 | 1 | Запись байта/слова |
1 | 1 | Запись блока |
Каждый из режимов записи использует последовательность собственных команд записи, но режим блочной записи позволяет выполнять запись примерно вдвое быстрее по сравнению с режимом байт/слово, поскольку генератор напряжения остается включенным до завершения записи блока. Любая команда, модифицирующая получателя может использоваться для изменения месторасположения в флэш-памяти как в режиме записи байта/слова, так и в режиме блочной записи.
Бит BUSY установлен, пока активна процедура записи и очищается, когда запись завершена. Если операция записи инициирована из ОЗУ, ЦПУ не должен обращаться к флэш-памяти, пока BUSY=1. В противном случае произойдет нарушение прав доступа, будет установлен флаг ACCVIFG, а результат записи окажется непредсказуем.
Запись байта/слова
Операция записи байта/слова может инициироваться программой из флэш-памяти или из ОЗУ. Когда инициирование происходит из флэш-памяти, все тактирование осуществляется контроллером флэш-памяти, а ЦПУ ожидает завершения записи. После выполнения записи ЦПУ продолжает выполнение кода с команды, следующей за командой записи. Временная диаграмма процедуры записи байта/слова показана на рис. 5.7.
Рис.5-7 Временная диаграмма операции записи байта/слова