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

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

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

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

Добавлен: 16.06.2025

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

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

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

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


Раздел V.

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

Инициирование записи байта/слова программой из ОЗУ

Программный поток, инициирующий запись байта/слова из ОЗУ показан на рис. 5.9.

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

да

BUSY = 1

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

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

да

BUSY = 1

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

Рис. 5-9. Инициирование записи байта/слова из ОЗУ

;Запись байта/слова из ОЗУ. 514 кГц < SMCLK < 952 кГц ;Принимается, что 0FF1Eh уже стерто

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

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

DINT

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

L1 BIT #BUSY,&FCTL3

;Проверка BUSY

JNZ L1

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

MOV #FWKEY,&FCTL3

;Очистка LOCK

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

121

MSP430x1xxFamily

MOV #FWKEY+WRT,&FCTL1

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

MOV #0123h,&0FF1Eh

;0123h –> 0FF1Eh

L2 BIT #BUSY,&FCTL3

;Проверка BUSY

JNZ L2

;Ожидание в цикле,

;пока занято

MOV #FWKEY,&FCTL1

;Очистка WRT

MOV #FWKEY+LOCK,&FCTL3

;Установка LOCK

...

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

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

EINT

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

Запись блока

Блочную запись можно использовать для ускорения процесса записи во флэш-память большой последовательности байт или слов. Блок – это 64 байта, начиная с 0xx00h, 0xx40h, 0xx80h или 0xxС0h и заканчивая 0xx3Fh, 0xx7Fh, 0xxBFh или 0xxFFh, как показано на рис. 5.10. Напряжение программирования флэш-памяти остается поданным в течение записи блока из 64-байт.

xxFFh

Блок

xxC0h

xxFFh

xxBFh

Блок

xx80h

Флеш•память

xx7Fh

Блок

xx00h

xx40h

xx3Fh

Блок

xx00h

Рис. 5-10. Блоки флэш-памяти

Блочная запись не может быть инициирована из флэш-памяти. Блочная запись должна инициироваться только из ОЗУ или ПЗУ. Бит BUSY остается установленным в течение всего цикла записи блока. Бит WAIT должен проверяться между записью каждого байта или слова в блоке. Очередной байт или слово блока могут быть записаны, когда бит WAIT установлен. При записи последовательности блоков бит BLKWRT необходимо очищать после завершения записи текущего блока. Бит BLKWRT может быть установлен для инициирования записи следующего блока после выдержки заданного времени восстановления флэш t(end). Бит BUSY очищается после завершения записи каждого блока, информируя о возможности записи следующего блока. На рис. 5.11 показана временная диаграмма процедуры блочной записи.

122

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


Раздел V.

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

Бит BLKWRT

Запись в флэш, например MOV #123h, &Flash

Генерация

Выполнение операции

Снятие

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

напряжения

напряжения

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

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

Общее время программирования t(CPT) =< 3 мс, потребление тока VCC повышено

BUSY

t(запись блока, байт 0) = 30/f(FGT) t(байты 1•63) = 20/f(FGT) t(байты 1•63) = 20/f(FGT) t(окончание) = 6/f(FGT)

WAIT

Рис. 5-11. Временная диаграмма цикла блочной записи

Программный поток записи блока и пример

Программный поток записи блока показан на рис. 5.12, а ниже приводится соответствующий пример.

;Запись одного блока, начиная с адреса 0F000h.

;Запись должна выполняться из ОЗУ; предполагается, что флэш-память уже стерта.

;514 кГц < SMCLK < 952 кГц

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

MOV #32,R5

;Используется как

;счетчик записи

MOV #0F000h,R6

;Указатель записи

MOV #WDTPW+WDTHOLD,&WDTCTL ;Отключение

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

DINT

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

L1

BIT #BUSY,&FCTL3

;Проверка BUSY

JNZ L1

;Ожидание в цикле,

;пока занято

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

MOV #FWKEY,&FCTL3

;Очистка LOCK

MOV #FWKEY+BLKWRT+WRT,&FCTL1 ;Разрешение записи

;блока

L2

MOV Write_Value,0(R6)

;Месторасположение

;записи

L3

BIT #WAIT,&FCTL3

;Проверка WAIT

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

123