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

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 2859

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

MSP430x1xxFamily

Выбор SMCLK. Эти биты позволяют выбрать источник для SMCLK.

SELS

Бит 3

0

– DCOCLK

1 – XT2CLK, когда XT2 имеется в микросхеме. LFXT1CLK, когда XT2 отсутствует.

Делитель для SMCLK

00 – /1

DIVSx

Биты 2-1

01 – /2

10 – /4

11 – /8

Выбор резистора для DCO.

DCOR

Бит 0

0

– Внутренний резистор

1

– Внешний резистор

IE1, регистр 1 разрешения прерываний

Биты 7-2

Эти биты могут быть использованы другими модулями. См. справочное

руководство конкретной микросхемы.

Разрешение прерывания при возникновении ошибки осциллятора. Этот

бит разрешает прерывание OFIFG. Поскольку другие биты в регистре

OFIE

Бит 1

IE1 могут использоваться для других устройств, рекомендуется вместо

команд MOV.B или CLR.B применять команды BIS.B или BIC.B.

0 – Прерывание запрещено

1 – Прерывание разрешено

Бит 0

Этот бит может быть использован другими модулями. См. справочное

руководство конкретной микросхемы.

IFG1, регистр 1 флагов прерываний

Биты 7-2

Эти биты могут быть использованы другими модулями. См. справочное

руководство конкретной микросхемы.

Флаг прерывания при возникновении ошибки осциллятора. Поскольку

остальные биты в регистре IFG1 могут использоваться для других

OFIFG

Бит 1

устройств, рекомендуется вместо команд MOV.B или CLR.B применять

команды BIS.B или BIC.B.

0 – Прерывание не ожидается

1 – Прерывание ожидается

Бит 0

Этот бит может быть использован другими модулями. См. справочное

руководство конкретной микросхемы.

110

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


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

Раздел 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