Микроконтроллеры MSP430. Руководство пользователя - часть 2

 

  Главная      Учебники - Разные     Микроконтроллеры MSP430. Руководство пользователя

 

поиск по сайту            правообладателям  

 

 

 

 

 

 

 

 

 

 

 

содержание      ..      1      2      3      ..

 

 

 

Микроконтроллеры MSP430. Руководство пользователя - часть 2

 

 

 

 

 

 

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

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

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

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

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

  • внутренний генератор напряжения для программирования;
  • программирование битов, байтов или слов;
  • работа при ультранизком потреблении мощности;
  • стирание сегмента или массовое (полное) стирание.

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

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

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.5-1 Блок-схема модуля флэш-памяти
Рис.5-1 Блок-схема модуля флэш-памяти

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

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

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

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

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

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.5-2 Сегменты флэш-памяти, пример для 4кБ
Рис.5-2 Сегменты флэш-памяти, пример для 4кБ

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

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

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

  • запись байта/слова
  • запись блока
  • стирание сегмента
  • массовое стирание (стирание всех сегментов основной памяти)
  • полное стирание (стирание всех сегментов)

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

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

Операции записи и стирания управляются тактовым генератором флэш-памяти, показанным на рис.5.3. Рабочая частота f(FTG) тактового генератора должна лежать в диапазоне от ~ 257 кГц до ~ 476 кГц (точные данные см. в руководстве по конкретному устройству).

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.5-3 Блок-схема тактового генератора флэш-памяти
Рис.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.

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.5-4 Временная диаграмма цикла стирания
Рис.5-4 Временная диаграмма цикла стирания

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

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

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

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

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

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

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.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.

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.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.

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.5-7 Временная диаграмма операции записи байта/слова
Рис.5-7 Временная диаграмма операции записи байта/слова

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

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

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

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.5-8 Инициирование записи байта/слова из флэш-памяти
Рис.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 				; Разрешение прерываний

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

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

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.5-9 Инициирование записи байта/слова из ОЗУ
Рис.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
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-байт.

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.5-10 Блоки флэш-памяти
Рис.5-10 Блоки флэш-памяти

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

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.5-11 Временная диаграмма цикла блочной записи
Рис.5-11 Временная диаграмма цикла блочной записи

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

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

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.5-12 Программный поток блочной записи
Рис.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
JZ L3 				; Ожидание в цикле, пока WAIT=0
INCD R6 			; Указание на следующее слово
DEC R5 				; Декремент счетчика записи
JNZ L2 				; Конец блока?
MOV #FWKEY,&FCTL1 		; Очистка WRT,BLKWRT
L4	BIT #BUSY,&FCTL3 	; Проверка BUSY
JNZ L4 				; Ожидание в цикле, пока занято
MOV #FWKEY+LOCK,&FCTL3 		; Установка LOCK
... 				; Повторный запуск сторожевого таймера,
; если необходимо
EINT 				; Разрешение прерываний

5.3.4 Доступ к флэш-памяти во время записи или стирания

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

Когда инициируется запись байта/слова или любая операция стирания программой из флэш-памяти, контроллер флэш возвращает ЦПУ код операции 03FFFh при выборке следующей команды. Код операции 03FFFh – это команда JMP PC. Это приведет к зацикливанию ЦПУ, пока работа с флэш не будет закончена. Когда операция с флэш-памятью закончена и BUSY=0, контроллер флэш позволяет ЦПУ выполнить выборку правильного кода операции и выполнение программы возобновляется.

Условия доступа к флэш-памяти, когда BUSY=1 приведены в таблице 5.3.

Таблица 5-3. Доступ к флэш-памяти при BUSY=1

Операция с флэш-памятью Доступ к флэш-памяти WAIT Результат
Любой режим стирания или запись байта/слова Чтение 0 ACCVIFG = 1, читается значение 03FFFh
Запись 0 ACCVIFG = 1. Запись игнорируется
Выборка команды 0 ACCVIFG = 0. CPU считывает код 03FFFh. Это команда JMP PC.
Запись блока Любой 0 ACCVIFG = 1, LOCK = 1
Чтение 1 ACCVIFG = 0, читается значение 03FFFh
Запись 1 ACCVIFG = 0. Запись игнорируется
Выборка команды 1 ACCVIFG = 1, LOCK = 1

Все источники прерываний необходимо заблокировать перед инициализацией любой операции с флэш-памятью. Если бы разрешенное прерывание произошло во время операции с флэш-памятью, ЦПУ сделало бы выборку кода 03FFFh в качестве адреса процедуры обработки прерывания. ЦПУ выполнило бы команду JMP PC при BUSY=1. После завершения операции с флэш-памятью, ЦПУ начало бы выполнение кода с адреса 03FFFh, который не является правильным адресом процедуры обработки прерывания.

5.3.5 Останов цикла записи или стирания

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

5.3.6 Конфигурирование и доступ к контроллеру флэш-памяти

FCTLx – это 16-разрядные регистры записи/чтения, защищенные паролем. Любая операция чтения или записи доступна только при использовании команды-слова, а запись возможна только при наличии в старшем байте пароля записи 0A5h. Любая запись в любой FCTLx регистр с любым значением в старшем байте, отличном от 0A5h вызовет нарушение ключа защиты, установку флага KEYV и запуск системного сброса PUC. При любом чтении любого регистра FCTLx результат содержит в старшем байте значение 096h.

Любая запись в FCTL1 во время стирания или операции записи байта/слова приведет к нарушению прав доступа и установке флага ACCVIFG. Запись в FCTL1 возможна в режиме блочной записи, когда WAIT=1, однако запись в FCTL1 в режиме блочной записи, когда WAIT=0 приведет к нарушению прав доступа и установке флага ACCVIFG.

Любая запись в FCTL2, когда BUSY=1 приведет к нарушению прав доступа.

Любой FCTLx регистр может быть прочитан, когда BUSY=1. Чтение не приведет к нарушению прав доступа.

5.3.7 Прерывания контроллера флэш-памяти

Контроллер флэш имеет два источника прерывания: KEYV и ACCVIFG. Флаг ACCVIFG устанавливается, когда происходит нарушение прав доступа. Когда бит ACCVIE устанавливается вновь после записи или стирания флэш-памяти, установленный флаг ACCVIFG будет генерировать запрос прерывания. Флаг ACCVIFG – источник вектора немаскируемого прерывания NMI, поэтому нет необходимости устанавливать GIE для запроса прерывания по флагу ACCVIFG. Помимо этого, ACCVIFG можно проверить программно, чтобы определить, было ли нарушение прав доступа. Флаг ACCVIFG должен сбрасываться программно.

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

5.3.8 Программирование устройств с флэш-памятью

Имеется три способа программирования флэш-устройств MSP430. Все способы поддерживают внутрисистемное программирование (ISP):

  • Программирование через JTAG1
  • Программирование через самозагрузчик
  • Программирование через пользовательское решение

Программирование флэш-памяти через JTAG

Устройства MSP430 могут программироваться через JTAG-порт. Для JTAG-интерфейса нужны четыре сигнальных линии (5 сигнальных линий у 20 и 28-выводных устройств), общий провод и опционально VCC и nonRST/NMI.

JTAG-порт защищен с помощью предохранителей. Перегорание предохранителей явление необратимое – в результате срабатывания предохранителя JTAG-порт отключается. Последующий доступ к устройству через JTAG-порт становится невозможен. Подробности см. в приложении «Programming a Flash-Based MSP430 Using the JTAG Interface2» на сайте www.ti.com/sc/msp430.

Программирование флэш-памяти через самозагрузчик (BSL)

Каждое MSP430 устройство с флэш-памятью содержит самозагрузчик BSL. Он позволяет пользователю читать или программировать флэш-память или ОЗУ с помощью последовательного интерфейса UART3. Доступ к флэш-памяти MSP430 через BSL защищен 256-разрядным паролем, определяемым пользователем. Подробности см. в приложении «Features of the MSP430 Bootstrap Loader4» на сайте www.ti.com/sc/msp430.

Программирование флэш-памяти через пользовательское решение

Способность ЦПУ в MSP430 записывать собственную флэш-память позволяет реализовать внутрисистемное программирование внешними пользовательскими решениями, как показано на рис.5.13. Пользователь может выбрать, каким образом данные будут поступать в MSP430 с использованием любого имеющегося доступного способа (UART, SPI и пр.). Разработанное пользователем программное обеспечение может получать данные и программировать флэш-память. Так как этот тип решения разработан пользователем, его можно настроить таким образом, чтобы наиболее полно удовлетворялись потребности в программировании, стирании и обновлении флэш-памяти.

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.5-13 Решение по программированию, разработанное пользователем
Рис.5-13 Решение по программированию, разработанное пользователем

5.4 Регистры флэш-памяти

Перечень регистров флэш-памяти приведен в таблице 5.4.

Таблица 5-4. Регистры флэш-памяти

Регистр Краткое обозначение Тип регистра Адрес Исходное состояние
Регистр 1 управления флэш-памятью FCTL1 Чтение/запись 0128h 09600h с PUC
Регистр 2 управления флэш-памятью FCTL2 Чтение/запись 012Ah 09642h с PUC
Регистр 3 управления флэш-памятью FCTL3 Чтение/запись 012Ch 09618h с PUC
Регистр 1 разрешения прерывания IE1 Чтение/запись 000h Сброс с PUC

FCTL1, регистр управления флэш-памятью

15 14 13 12 11 10 9 8
FRKEY, читается как 096h
FWKEY, должен записываться как 0A5h


 
7 6 5 4 3 2 1 0
BLKWRT WRT Резерв Резерв Резерв MERAS ERASE Резерв
rw-0 rw-0 r0 r0 r0 rw-0 rw-0 r0


 
FRKEY/FWKEY Биты 15-8 Пароль FCTLx. Всегда читается как 096h. Должен записываться как 0A5h, в противном случае будет генерироваться сигнал PUC.
BLKWRT Бит 7 Режим блочной записи. Для режима блочной записи также должен быть установлен WRT. Бит BLKWRT автоматически сбрасывается при установке EMEX.
0 Режим блочной записи выключен
1 Режим блочной записи включен
WRT Бит 6 Запись. Этот бит используется для выбора любого режима записи. Бит WRT автоматически сбрасывается при установке EMEX.
0 Режим записи выключен
1 Режим записи включен
Резерв Биты 5-3 Зарезервировано. Всегда читается как 0.
MERAS Бит 2 Массовое стирание и обычное стирание. Эти биты используются совместно для выбора режима стирания. Биты MERAS и ERASE автоматически сбрасываются, когда устанавливается EMEX.
ERASE Бит 1
MERAS ERASE Цикл стирания
0 0 Нет стирания
0 1 Стирание только конкретного сегмента
1 0 Стирание всех сегментов основной памяти
1 1 Стирание всех сегментов основной и информационной памяти
Резерв Биты 5-3 Зарезервировано. Всегда читается как 0.
 

 

FCTL2, регистр управления флэш-памятью

15 14 13 12 11 10 9 8
FWKEYx, читается как 096h
должен записываться как 0A5h


 
7 6 5 4 3 2 1 0
FSSELx FNx
rw-0 rw-1 rw-0 rw-0 rw-0 rw-0 rw-1 rw-0


 
FWKEY Биты 15-8 Пароль FCTLx. Всегда читается как 096h. Должен записываться как 0A5h, в противном случае будет генерироваться сигнал PUC.
FSSELx Биты 7-6 Выбор источника тактирования контроллера флэш
00 ACLK
01 MCLK
10 SMCLK
11 SMCLK
FNx Биты 5-0 Делитель тактовой частоты для контроллера флэш. Эти шесть битов позволяют установить необходимый коэффициент деления для тактирования контроллера флэш. Значение коэффициента деления равно FNx+1. К примеру, когда FNx=00h, коэффициент деления равен 1. Когда FNx=02Fh, коэффициент деления равен 64.

FCTL3, регистр управления флэш-памятью

15 14 13 12 11 10 9 8
FWKEYx, читается как 096h
должен записываться как 0A5h


 
7 6 5 4 3 2 1 0
Резерв EMEX LOCK WAIT ACCVIFG KEYV BUSY
r0 r0 rw-0 rw-1 r-1 rw-0 rw-(0) r(w)-0


 
FWKEY Биты 15-8 Пароль FCTLx. Всегда читается как 096h. Должен записываться как 0A5h, в противном случае будет генерироваться сигнал PUC.
Резерв Биты 7-6 Зарезервировано. Всегда читается как 0.
EMEX Бит 5 Аварийный выход
0 Нет аварийного выхода
1 Аварийный выход
LOCK Бит 4 Блокировка. Этот бит разблокирует флэш-память для выполнения записи или стирания. Бит LOCK может быть установлен в любой момент во время записи байта/слова или операции стирания, при этом выполняемая операция будет нормально завершена. В режиме блочной записи, если бит LOCK устанавливается, когда BLKWRT=WAIT=1, биты BLKWRT и WAIT сбрасываются и режим нормально заканчивается.
0 Разблокировано
1 Заблокировано
WAIT Бит 3 Ожидание. Указывает, что происходит запись флэш-памяти.
0 Флэш-память не готова для записи следующего байта/слова.
1 Флэш-память готова для записи следующего байта/слова.
ACCVIFG Бит 2 Флаг прерывания при нарушении прав доступа
0 Прерывание не ожидается
1 Ожидание прерывание
KEYV Бит 1 Ключ нарушения безопасности флэш. Этот бит показывает, что был записан неправильный пароль FCTLx в любой регистр управления флэш-памятью и при его установке генерируется сигнал PUC. Бит KEYV должен быть сброшен программно.
0 Был записан корректный пароль FCTLx
1 Был записан некорректный пароль FCTLx
BUSY Бит 0 Занято. Этот бит показывает состояние тактового генератора флэш.
0 Не занят
1 Занят

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

7 6 5 4 3 2 1 0
    ACCVIE          
    rw-0          


 
  Биты 7-6, 4-0 Эти биты могут быть использованы для других модулей. См. справочной руководство конкретного устройства.
ACCVIE Бит 5 Разрешение прерывания при нарушении доступа к флэш-памяти. Этот бит разрешает прерывание от ACCVIFG. Поскольку остальные биты в IE1 могут быть использованы для других модулей, рекомендуется устанавливать и очищать этот бит с помощью команд BIS.B или BIC.B, вместо команд MOV.B или CLR.B.
0 Прерывание запрещено
1 Прерывание разрешено

 

Раздел 6

Супервизор напряжения питания

В этом разделе описывается работа супервизора напряжения питания (SVS1). Модуль SVS реализован в устройствах MSP430x15x и MSP430x16x.

6.1 Введение в SVS

Супервизор напряжения питания (SVS) используется для мониторинга напряжения питания AVCC или внешнего напряжения. SVS может быть сконфигурирован так, чтобы выполнялась установка флага или генерировался сигнал сброса POR, когда напряжение питания или внешнее напряжение снижаются ниже порога, установленного пользователем.

SVS обладает следующими возможностями:

  • Мониторинг AVCC;
  • Возможность генерации сигнала POR;
  • Программно доступный вывод компаратора SVS;
  • Программно доступное условие фиксации при низком напряжении;
  • Выбор из 14 возможных пороговых уровней;
  • Внешний канал мониторинга внешнего напряжения.

Блок-схема SVS показана на рис.6.1.

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.6-1 Блок схема модуля SVS реализован в устройствах MSP430x15x и MSP430x16x.
Рис.6-1 Блок схема модуля SVS

6.2 Функционирование SVS

SVS определяет снижение напряжения AVCC ниже заданного уровня. Модуль SVS можно сконфигурировать на выработку сигнала POR или установку флага при снижении напряжения. После сигнала POR модуль SVS отключается, чтобы сохранить потребление тока.

6.2.1 Конфигурирование SVS

Биты VLDx используются для включения/выключения SVS и выбора одного из 14 пороговых уровней (V(SYS_IT-)) для сравнения с AVCC. SVS выключен, когда VLDx=0 и включен, когда VLDx>0. Бит SVSON не включает SVS. Он показывает включенное/выключенное состояние модуля SVS и может использоваться для определения, включен ли SVS.

При VLDx=1111 выбирается внешний канал SVSin. Напряжение на SVSin сравнивается с внутренним уровнем напряжения, равным приблизительно 1.2В.

6.2.1 Функционирование компаратора SVS

Состояние пониженного напряжения появляется, когда AVCC понижается меньше выбранного порога или когда внешнее напряжение снижается ниже порога в 1.2В. Любое состояние пониженного напряжения устанавливает бит SVSFG.

Бит PORON включает или выключает функцию сброса устройства от SVS. Если PORON=1, при установке бита SVSFG генерируется сигнал POR. Если PORON=0, состояние пониженного напряжения устанавливает SVSFG, но не приводит к генерации сигнала POR.

Бит SVSFG при установке фиксируется. Благодаря этому пользователь может определить, что ранее произошло понижение напряжения. Бит SVSFG должен сбрасываться программным обеспечением пользователя. Если состояние пониженного напряжение остается в момент сброса бита SVSFG, он немедленно устанавливается снова модулем SVS.

6.2.3 Изменение битов VLDx

После изменения битов VLDx выдерживаются две установочных задержки, позволяющие установиться схеме SVS. В течение каждой задержки SVS не будет устанавливать SVSFG. Задержки td(SVSon) и tsettle показаны на рис.6.2. Задержка td(SVSon) действует, когда VLDx изменяются от нуля к любому отличному от нуля значению, и составляет примерно 50 мкС. Задержка tsettle действует при изменении битов VLDx от любого ненулевого значения к любому другому ненулевому значению и составляет максимум ~12 мкС. Точные значения задержек см. в руководстве по конкретному устройству.

Во время задержек SVS не устанавливает флаг состояния пониженного напряжения и не сбрасывает устройство, а бит SVSON остается очищенным. Программное обеспечение может проверять бит SVSON для определения момента окончания задержки и начала достоверного мониторинга напряжения модулем SVS.

6.2.4 Рабочий диапазон SVS

Каждый уровень SVS имеет гистерезис для уменьшения чувствительности к малым изменениям питающего напряжения, когда величина AVCC близка к установленному порогу. Работа SVS и SVS/Brownout2 взаимодействие показано на рис.6.3.

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.6-3 Рабочие уровни для SVS и схемы Brownout/сброс микроконтроллера MSP430
Рис.6-3 Рабочие уровни для SVS и схемы Brownout/сброс

6.3 Регистры SVS

Перечень регистров SVS приведен в таблице 6.1.

Таблица 6-1. Регистры SVS

Регистр Краткое обозначение Тип регистра Адрес Исходное состояние
Управляющий регистр SVS SVSCTL Чтение/запись 050h Сбрасывается после POR

SVSCTL, регистр управления SVS

7 6 5 4 3 2 1 0
VLDx PORON SVSON SVSOP SVSFG
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) r r rw-(0)


 
VLDx Биты 7-4 Детектируемый уровень напряжения. Эти биты включают SVS и позволяют выбрать номинальный пороговый уровень напряжения SVS. Точные параметры см. в руководстве на конкретное устройство. 0000 SVS выключен 0001 1.9В 0010 2.1В 0011 2.2В 0100 2.3В 0101 2.4В 0110 2.5В 0111 2.65В 1000 2.8В 1001 2.9В 1010 3.05В 1011 3.2В 1100 3.35В 1101 3.5В 1110 3.7В 1111 Сравнение внешнего напряжения на входе SVSin со значением 1.2В
PORON Бит 3 Включение POR. Этот бит разрешает флагу SVSFG вызывать сброс устройства сигналом POR.
0 SVSFG не вызывает POR
1 Установка SVSFG приводит к генерации POR
SVSON Бит 2 Включение SVS. Этот бит отражает состояние работы SVS. Этот бит НЕ ВКЛЮЧАЕТ SVS. SVS включается установкой VLDx > 0.
0 SVS выключен
1 SVS включен
SVSOP Бит 1 Выход SVS. Этот бит отражает выходное значение компаратора SVS.
0 Выход компаратора SVS имеет высокий уровень
1 Выход компаратора SVS имеет низкий уровень
SVSFG Бит 0 Флаг SVS. Этот бит показывает состояние пониженного напряжения. Бит SVSFG остается установленным после устранения состояния пониженного напряжения до сброса программным обеспечением.
0 Состояние пониженного напряжения не произошло
1 Произошло либо уже присутствует состояние пониженного напряжения
 

 

 

 

Раздел 7

Аппаратный умножитель

В этом разделе описывается аппаратный умножитель. Аппаратный умножитель реализован в устройствах MSP430x14x и MSP430x16x.

7.1 Введение в аппаратный умножитель

Аппаратный умножитель является периферийным устройством и не является частью ЦПУ MSP430. Это означает, что его действия не пересекаются с действиями ЦПУ. Регистры умножителя – это периферийные регистры, которые загружаются и читаются командами ЦПУ.

Аппаратный умножитель поддерживает:

  • Умножение без знака;
  • Умножение со знаком;
  • Умножение без знака с накоплением;
  • Умножение со знаком и накоплением;
  • 16*16 бит, 16*8 бит, 8*16 бит, 8*8 бит.

Блок-схема аппаратного умножителя показана на рис.7.1.

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.7-1 Блок-схема аппаратного умножителя MSP430
Рис.7-1 Блок-схема аппаратного умножителя

7.2 Функционирование аппаратного умножителя

Аппаратный умножитель поддерживает операции умножения без знака, умножения со знаком, умножения без знака с накоплением и умножение со знаком и накоплением. Тип операции выбирается адресом, в который записан первый операнд. Аппаратный умножитель имеет два 16-разрядных регистра OP1 и OP2 и три регистра результата RESLO, RESHI и SUMEXT. В регистре RESLO содержится младшее слово результата, в RESHI - старшее слово результата, а в регистре SUMEXT находится информация о результате. Результат может быть прочитан следующей командой после записи в OP2, кроме случая, когда используется косвенный режим адресации.

7.2.1 Регистры операндов

Регистр OP1 первого операнда имеет четыре адреса, показанные в таблице 7.1, используемые при выборе режима умножения. Запись первого операнда по желаемому адресу позволит выбрать тип операции умножения, но не приведет к началу выполнения какой-либо операции. Запись второго операнда в регистр OP2 второго операнда инициирует операцию умножения. Запись в OP2 стартует выбранную операцию над значениями, сохраненными в OP1 и OP2. Результат записывается в три регистра результата RESLO, RESHI и SUMEXT.

Повторение операций умножения может выполняться без перезагрузки OP1, если значение в OP1 используется для последовательных операций. Нет необходимости перезаписывать значение в OP1 для выполнения операций.

Таблица 7-1. Адреса OP1

Адрес
OP1
Имя регистра Операция
0130h MPY Умножение без знака
0132h MPYS Умножение со знаком
0134h MAC Умножение без знака с накоплением
0136h MACS Умножение со знаком и накоплением

7.2.2 Регистры результата

Младший регистр результата RESLO содержит младшие 16 разрядов вычисленного результата. Содержимое старшего регистра результата RESHI зависит от операции умножения. Различные варианты содержимого RESHI приведены в таблице 7.2.

Таблица 7-2. Возможные варианты содержимого регистра RESHI

Режим Содержимое RESHI
MPY Старшие 16 разрядов результата
MPYS В старшем бите MSB регистра находится знак результата. Оставшиеся биты содержат старшие 15 разрядов результата. Используется представление результата с дополнением до двух.
MAC Старшие 16 разрядов результата
MACS Старшие 16 разрядов результата. Используется представление результата с дополнением до двух.

Содержимое регистра расширенного суммирования SUMEXT зависит от выполненной операции умножения. Различные варианты содержимого SUMEXT приведены в таблице 7.3.

Таблица 7-3. Возможные варианты содержимого регистра SUMEXT

Режим SUMEXT
MPY SUMEXT всегда содержит 0000h
MPYS
SUMEXT содержит расширенный знак результата
0000h результат был положительный
0FFFFh результат был отрицательный
MAC
SUMEXT содержит перенос результата
0000h результат не содержит переноса
0FFFFh результат имеет перенос
MACS
SUMEXT содержит расширенный знак результата
0000h результат был положительный
0FFFFh результат был отрицательный

Потеря значащих разрядов и переполнение в режиме MACS

Умножитель не может автоматически определить потерю значащих разрядов или переполнение в режиме MACS. Диапазон аккумулятора для положительных чисел равен 0 – 7FFF FFFFh, а для отрицательных чисел 0FFF FFFh – 8000 0000h. Переполнение происходит, когда результат суммирования двух отрицательных чисел выходит за диапазон для положительного числа. Потеря значащих разрядов происходит, когда результат сложения двух положительных чисел выходит за диапазон для отрицательного числа. В обоих случаях регистр SUMEXT содержит правильный знак результата: 0FFFFh при переполнении и 0000h при потере значащих разрядов. Программное обеспечение пользователя должно определить и соответствующим образом обработать эти состояния.

7.2.3 Примеры программного обеспечения

Ниже приведены примеры для всех режимов умножителя. Все режимы 8*8 используют абсолютные адреса для регистров, поскольку ассемблер не позволит обеспечить доступ типа .B к регистрам-словам, когда используются метки из стандартного файла определений.

; 16x16 умножение без знака
MOV #01234h,&MPY 		; Загрузка первого операнда
MOV #05678h,&OP2 		; Загрузка второго операнда
; ... 				; Обработка результатов
; 8x8 умножение без знака. Абсолютная адресация.
MOV.B #012h,&0130h 		; Загрузка первого операнда
MOV.B #034h,&0138h 		; Загрузка второго операнда
; ... 				; Обработка результатов
; 16x16 умножение со знаком
MOV #01234h,&MPYS 		; Загрузка первого операнда
MOV #05678h,&OP2 		; Загрузка второго операнда
; ... 				; Обработка результатов
; 8x8 умножение со знаком. Абсолютная адресация.
MOV.B #012h,&0132h 		; Загрузка первого операнда
SXT &MPYS 			; Знаковое расширение первого операнда
MOV.B #034h,&0138h 		; Загрузка второго операнда
SXT &OP2 			; Знаковое расширение второго операнда
; (запуск второго умножения)
; ... 				; Обработка результатов
; 16x16 умножение без знака с накоплением
MOV #01234h,&MAC 		; Загрузка первого операнда
MOV #05678h,&OP2 		; Загрузка второго операнда
; ... 				; Обработка результатов
; 8x8 умножение без знака с накоплением. Абсолютная адресация.
MOV.B #012h,&0134h 		; Загрузка первого операнда
MOV.B #034h,&0138h 		; Загрузка второго операнда
; ... 				; Обработка результатов
; 16x16 умножение со знаком и накоплением
MOV #01234h,&MACS 		; Загрузка первого операнда
MOV #05678h,&OP2 		; Загрузка второго операнда
; ... 				; Обработка результатов
; 8x8 умножение со знаком и накоплением. Абсолютная адресация
MOV.B #012h,&0136h 		; Загрузка первого операнда
SXT &MACS 			; Знаковое расширение первого операнда
MOV.B #034h,R5 			; Временное расположение второго операнда
SXT R5 				; Знаковое расширение второго операнда
MOV R5,&OP2 			; Загрузка второго операнда
; ... 				; Обработка результатов

7.2.4 Косвенная адресация RESLO

Когда используется косвенный или косвенный автоинкрементный режим адресации для доступа к регистрам результата, нужна, по крайней мере, одна команда между загрузкой второго операнда и доступа к одному из регистров результата:

; Доступ к результатам умножителя с косвенной адресацией
MOV #RESLO,R5 		; Загрузка адреса RESLO в R5 для косвенной адресации
MOV &OPER1,&MPY 	; Загрузка первого операнда
MOV &OPER2,&OP2 	; Загрузка второго операнда
NOP 			; Необходим один цикл
MOV @R5+,&xxx 		; Пересылка RESLO
MOV @R5,&xxx 		; Пересылка RESHI

7.2.5 Использование прерываний

Если прерывание произошло после записи OP1, но до записи OP2, а умножитель используется в процедуре обработки прерывания, исходный выбранный режим умножителя будет потерян и результат станет непредсказуемым. Чтобы этого избежать, нужно отключать прерывания перед использованием аппаратного умножителя и не использовать его в процедурах обработки прерывания.

; Отключение прерываний перед использованием аппаратного умножителя
DINT 			; Запрещение прерываний
NOP 			; Требуется для DINT
MOV #xxh,&MPY 		; Загрузка первого операнда
MOV #xxh,&OP2 		; Загрузка второго операнда
EINT 			; Разрешение прерываний
; Обработка результатов

7.3 Регистры аппаратного умножителя

Перечень регистров аппаратного умножителя приведен в таблице 7.4.

Таблица 7-4. Регистры аппаратного умножителя

Регистр Краткое
обозначение
Тип
регистра
Адрес Исходное
состояние
Операнд один – умножение MPY Чтение/запись 0130h Неизменное
Операнд один – умножение со знаком MPYS Чтение/запись 0132h Неизменное
Операнд один – умножение с накоплением MAC Чтение/запись 0134h Неизменное
Операнд один – умножение со знаком и накоплением MACS Чтение/запись 0136h Неизменное
Операнд два OP2 Чтение/запись 0138h Неизменное
Младшее слово результата RESLO Чтение/запись 013Ah Неопределенное
Старшее слово результата RESHI Чтение/запись 013Ch Неопределенное
Регистр знакового дополнения SUMEXT Чтение 013Eh Неопределенное

 

 

 

Раздел 8

Контроллер DMA

Модуль контроллера DMA переносит данные из одного адреса в другой без участия ЦПУ. Этот раздел описывает работу контроллера DMA. Контроллер DMA реализован в устройствах MSP430x15x и MSP430x16x.

8.1 Введение в контроллер DMA

Контроллер прямого доступа к памяти (DMA) переносит данные из одного адреса в другой во всем адресном диапазоне без вмешательства ЦПУ. К примеру, контроллер DMA может переместить данные из памяти преобразования ADC12 в ОЗУ.

Использование контроллера DMA может увеличить пропускную способность периферийных модулей. Также в результате его использования можно достигнуть снижения потребляемой системой мощности, позволяя ЦПУ оставаться в режиме пониженного энергопотребления без пробуждения для пересылки данных в/из периферии.

Контроллер DMA обладает следующими возможностями:

  • Три независимых канала переноса;
  • Конфигурируемые приоритеты каналов DMA;
  • Необходимо только два тактовых цикла MCLK;
  • Возможен перенос байтов, слов или смешанно байтов/слов;
  • Размер блока до 65535 байт или слов;
  • Выбор конфигурируемых триггеров (условий запуска) переноса;
  • Возможность выбора условия запуска переноса: по фронту/спаду или по уровню;
  • Четыре режима адресации переноса;
  • Одиночный, блочный или пакетно-блочный режимы переноса.

Блок-схема контроллера DMA показана на рис.8.1.

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.8-1. Блок-схема контроллера DMA микроконтроллера MSP430
Рис.8-1. Блок-схема контроллера DMA

8.2 Функционирование DMA

Модуль контроллера DMA конфигурируется программным обеспечением пользователя. В этом разделе описывается инициализация и функционирование DMA.

8.2.1 Режимы адресации DMA

Контроллер DMA имеет четыре режима адресации переноса, показанные на рис.8.2:

  • Фиксированный адрес к фиксированному адресу;
  • Фиксированный адрес к блоку адресов;
  • Блок адресов к фиксированному адресу;
  • Блок адресов к блоку адресов.

Режим адресации переноса конфигурируется отдельно для каждого канала DMA. Например, канал 0 может выполнять пересылку между двумя фиксированными адресами, в то время как канал 1 осуществляет перемещение между двумя блоками адресов.

Режимы адресации DMA конфигурируются с помощью управляющих битов DMASRCINCR и DMADSTINCR. Бит DMASRCINCR выбирается, если адрес источника DMA (DMAxSA) инкрементируется, декрементируется или не изменяется после каждого DMA-переноса. Бит DMADSTINCR выбирается, если адрес источника DMA (DMAxDA) инкрементируется, декрементируется или не изменяется после каждого DMA-переноса.

DMA-перенос может быть таким: байт-байт, слово-слово, байт-слово или слово-байт. Когда выполняется перенос слово-байт, перемещается только младший байт слова-источника. Когда выполняется перенос байт-слово, старший байт слова-получателя очищается, когда происходит перемещение.

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.8-2. Режимы адресации DMA микроконтроллера MSP430
Рис.8-2. Режимы адресации DMA

8.2.2 Режимы переноса DMA

Контроллер DMA имеет шесть режимов переноса:

  • Одиночный перенос;
  • Блочный перенос;
  • Пакетно-блочный перенос;
  • Повторяющийся одиночный перенос;
  • Повторяющийся блочный перенос;
  • Повторяющийся пакетно-блочный перенос.

Режим переноса в каждом канале DMA может индивидуально конфигурироваться с помощью битов DMADTx. Например, канал 0 может быть сконфигурирован в режиме одиночного переноса, в то время как канал 1 сконфигурирован в режиме пакетно-блочного переноса, а канал 2 работает в повторяющемся блочном режиме. Режим DMA-переноса конфигурируется независимо от режима адресации DMA. Любой режим адресации DMA может использоваться с любым режимом DMA-переноса.

Диаграмма состояний DMA показана на рис.8.3.

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.8-3. Диаграмма состояний DMA микроконтроллера MSP430


    * Биты DMASRCINCR и DMADSTCINCR определяют, будут ли временные регистры инкрементированны или декрементированны
    Биты DMADSTBYTE и DMASRCBYTE определяют, инкрементируются/декркментируются ли они одним байтом или словом

    ** Однажды стартовав, пакетно-блочный режим работает непрерывно до сброса бита DMAEN. Дополнительных событий запуска не требуется

Рис.8-3. Диаграмма состояний DMA

Одиночный перенос

Когда канал DMA сконфигурирован в одиночном режиме переноса, пересылка каждого байта/слова требует отдельного запуска. Одиночный режим переноса устанавливается при DMADTx=0. Когда DMADTx=0, бит DMAEN очищается после каждой пересылки и должен быть установлен снова для выполнения очередной пересылки. Режим повторного одиночного переноса устанавливается при DMADTx=4. Когда DMATx=4, контроллер DMA остается включенным с DMAEN=1 и DMA-перенос происходит каждый раз, когда выполняется запуск.

Регистр DMAxSZ содержит количество пересылок, которые нужно выполнить. Если DMAxSZ=0, перенос не выполняется. Содержимое регистра DMAxSZ копируется во временный регистр и уменьшается с каждым переносом. Когда регистр DMAxSZ декрементируется до нуля, он перезагружается из временного регистра и выполняется установка соответствующего флага DMAIFG.

Блочный перенос В блочном режиме перенос полного блока данных выполняется после всего лишь одного запуска. Режим блочного переноса устанавливается при DMADTx=1. Когда DMADTx=1, бит DMAEN очищается после завершения переноса блока и должен быть установлен снова до запуска процесса переноса другого блока. После того, как поблочный перенос был запущен, последующие сигналы запуска, появляющиеся во время переноса, игнорируются.

Режим повторного поблочного переноса устанавливается при DMADTx=5. Когда DMADTx=5, бит DMAEN остается установленным после завершения переноса блока. Следующий запуск после завершения повторного поблочного переноса запустит другой блочный перенос.

Регистр DMAxSZ используется для задания размера блока, а биты DMADSTINCR и DMASRCINCR выбираются, если DMA-адрес получателя (DMAxDA) и DMA-адрес источника (DMAxSA) инкрементируется или декрементируется после каждого переноса блока.

Во время блочного или повторяющегося блочного переноса регистры DMAxSA, DMAxDA и DMAxSZ копируются во временные регистры. Временные значения DMAxSA и DMAxDA инкрементируются и декрементируются после каждой пересылки в блоке. Регистр DMAxSZ декрементируется после каждого переноса блока и отображает количество пересылок, оставшихся в блоке. Когда регистр DMAxSZ декрементируется до нуля, он перезагружается из временного регистра, а затем устанавливается соответствующий флаг DMAIFG.

В процессе переноса блока ЦПУ приостанавливается до завершения переноса блока. Для выполнения поблочного переноса необходимо 2*MCLK*DMAxSZ тактовых цикла. После завершения переноса блока ЦПУ возобновляет работу с предыдущего состояния.

Пакетно-блочный перенос

Пакетно-блочный перенос – это поблочные пересылки, чередуемые с работой ЦПУ. В пакетно-блочном режиме ЦПУ выполняет 2 MCLK цикла после пересылки каждых четырех байт/слов блока. Во время пакетно-блочного переноса производительность ЦПУ составляет 20% от номинальной. Установка пакетно-блочного режима происходит при DMADT={2,3}. После пакетно-блочного переноса ЦПУ возвращается к 100% производительности, а бит DMAEN очищается. DMAEN должен быть установлен снова перед запуском другой пакетно-блочной передачи. После того, как пакетно-блочный перенос был запущен, последующие сигналы запуска, появляющиеся во время пакетно-блочного переноса, игнорируются.

Повторяющийся пакетно-блочный режим устанавливается при DMADT={6,7}. Когда DMADTx={6,7}, бит DMAEN остается установленным после завершения пакетно-блочного переноса, и никакие дальнейшие сигналы запуска для инициирования другого пакетно-блочного переноса не требуются. Другой пакетно-блочный перенос начинается немедленно после завершения текущего пакетно-блочного переноса. В этом случае DMA-переносы должны останавливаться либо путем очистки бита DMAEN, либо по NMI-прерыванию, когда бит ENNMI установлен. В повторяющемся пакетно-блочном режиме производительность ЦПУ постоянно составляет 20%, пока повторяющийся пакетно-блочный перенос не будет остановлен.

Инициирование DMA-переносов

DMA-переносы инициируются программным или аппаратным обеспечением в соответствии с описанием в таблице 8.1. Источники запуска конфигурируются для каждого канала независимо с помощью битов DMAxTSELx.

Таблица 8-1. Источники запуска DMA

DMAxTSELx Запуск DMA Действие, приводящее к запуску
0000 DMAREQ Установка бита DMAREQ запускает DMA-перенос. DMAREQ автоматически сбрасывается, когда начинается DMA-перенос.
0001 TACCR2 CCIFG DMA-перенос запускается, когда устанавливается флаг TACCR2 CCIFG. TACCR2 CCIFG автоматически сбрасывается, когда начинается DMA-перенос.
0010 TBCCR2 CCIFG DMA-перенос запускается, когда устанавливается флаг TBCCR2 CCIFG. TBCCR2 CCIFG автоматически сбрасывается, когда начинается DMA-перенос.
0011 Прием данных через I2C DMA-перенос запускается, когда модуль I2C принимает новые данные. Флаг RXRDYIFG не влияет на запуск DMA-переноса. RXRDYIFG не очищается, когда начинается DMA-перенос, а программная установка RXRDYIFG не приводит к запуску DMA-переноса.
0100 Готовность передачи I2C DMA-перенос запускается, когда модуль I2C готов передавать новые данные. Флаг TXRDYIFG не влияет на запуск DMA-перенос. TXRDYIFG не очищается, когда начинается DMA-перенос, а программная установка TXRDYIFG не приводит к запуску DMA-переноса.
0101 DAC12_0 DAC12IFG DMA-перенос запускается, когда устанавливается флаг DAC12IFG DAC12_0. Флаг DAC12IFG DAC12_0 автоматически сбрасывается, когда начинается DMA-перенос.
0110 ADC12IFGx DMA-перенос запускается, когда устанавливается ADAC12IFG. Флаг ADC12IFGx автоматически выбирается при конфигурировании ADC12. Когда ADC12 выполняет одиночное или повторяющееся преобразование в одном канале, флаг преобразования ADC12IFGx запускает DMA-перенос. Когда ADC12 выполняет одиночную или повторяющуюся последовательность преобразований, флаг ADC12IFGx после последнего преобразования в последовательности запускает DMA-перенос. Флаг ADC12IFGx не сбрасывается автоматически, когда начинается DMA-перенос. Все флаги ADC12IFGx автоматически сбрасываются, когда выполняется доступ к соответствующему регистру ADC12MEMx либо программой, либо контроллером DMA.
0111-1101 Нет запуска Запуск DMA-передачи не производится.
1110 DMAxIFG Флаг DMA0IFG запускает DMA канал 1. Флаг DMA1IFG запускает DMA канал 2. Флаг DMA2IFG запускает DMA канал 0. Ни один из флагов DMAxIFG автоматически не сбрасывается, когда начинается DMA-перенос.
1111 DMAE0 Внешний запуск от DMAE0.

Запуск по фронту

Когда DMALEVEL=0, запуск производится по перепаду сигнала: фронт сигнала запуска инициирует пересылку. В режиме одиночного перемещения каждый DMA-перенос нуждается в собственном сигнале запуска. Когда используется блочный или пакетно-блочный режимы, для инициирования переноса требуется только один сигнал запуска.

Запуск по уровню

Когда DMALEVEL=1, активизируется запуск по уровню. Правильная работа в режиме запуска по уровню возможна при выборе внешнего триггера (сигнала запуска) DMAE0 в качестве DMA-триггера.

Когда DMALEVEL=1, DMA-перенос данных выполняется до тех пор, пока сигнал запуска имеет высокий уровень, а бит DMAEN остается установленным. Когда DMALEVEL=1, рекомендуется использовать режимы DMA-пересылки DMADTx={0, 1, 2, 3}, поскольку бит DMAEN автоматически сбрасывается после конфигурирования DMA-переноса.

Когда DMALEVEL=1, сигнал запуска должен иметь высокий уровень при блочном или пакетно-блочном переносе до завершения переноса. Если сигнал запуска становится низким во время блочного или пакетно-блочного переноса, контроллер DMA удерживается в текущем состоянии до тех пор, пока сигнал запуска снова не станет высоким или пока не произойдет программной модификации DMA-регистров. Если DMA-регистры не модифицировались программой когда сигнал запуска опять стал высоким, перенос возобновляется с момента, когда сигнал запуска низким.

Останов выполнения команд при выполнении DMA-переноса

Бит DMAONFETCH управляет приостановкой ЦПУ для выполнения DMA-переноса. Когда DMAONFETCH=0, при получении сигнала DMA-запуска ЦПУ немедленно останавливается и начинается DMA-перенос. Когда DMAONFETCH=1, ЦПУ завершает текущую выполняемую команду, после чего контроллер DMA останавливает ЦПУ и начинает DMA-перенос.

8.2.4 Останов DMA-переноса

Есть два способа остановить выполнение DMA-переноса:

  • Одиночный, блочный или пакетно-блочный DMA-перенос может быть остановлен NMI-прерыванием, если установлен бит ENNMI в регистре DMACTL1.
  • Пакетно-блочный перенос может быть остановлен очисткой бита DMAEN.

8.2.5 Приоритеты каналов DMA

По умолчанию приоритеты DMA-каналов такие: DMA0-DMA1-DMA2. Если одновременно появляются или находятся в ожидании два или три сигнала DMA-запуска, первым завершает DMA-перенос (одиночный, блочный или пакетно-блочный перенос) канал с наивысшим приоритетом, затем канал со вторым приоритетом и в завершении канал с третьим приоритетом. Выполняющиеся DMA-переносы не приостанавливаются, если запускается перенос в DMA-канале с более высоким приоритетом. Канал с высшим приоритетом ожидает завершения выполняющегося DMA-переноса, а только затем стартует.

Приоритеты DMA-каналов конфигурируются с помощью бита ROUNDROBIN. Когда бит ROUNDROBIN установлен, низший приоритет получает канал, завершивший DMA-перенос. Последовательность приоритетов DMA-каналов всегда остается подобной DMA0-DMA1-DMA2, например:

Приоритет DMA Завершенный перенос Новый приоритет DMA
DMA0 – DMA1 – DMA2 DMA1 DMA2 – DMA0 – DMA1
DMA2 – DMA0 – DMA1 DMA2 DMA0 – DMA1 – DMA2
DMA0 – DMA1 – DMA2 DMA0 DMA1 – DMA2 – DMA0

Когда бит ROUNDROBIN очищен, приоритет DMA возвращается к приоритету по умолчанию.

8.2.6 Длительность цикла DMA-переноса

DMA нуждается в одном или двух тактовых циклах MCLK для синхронизации перед каждым одиночным переносом или полным блочным или пакетно-блочным переносом. Для переноса каждого байта/слова нужно два цикла MCLK после синхронизации и один цикл времени задержки после переноса. Поскольку DMA использует MCLK, продолжительность цикла DMA определяется режимом работы MSP430 и установками системы тактирования.

Если источник MCLK активен, но ЦПУ выключено, DMA будет использовать источник MCLK для каждого переноса без включения ЦПУ. Если источник MCLK выключен, DMA временно перезапустит MCLK с тактированием от DCOCLK для выполнения одиночного переноса или полного блочного или пакетно-блочного переноса. ЦПУ остается выключенным, а после завершения переноса выключается MCLK. Максимальная длительность цикла DMA для всех режимов работы показана в таблице 8.2.

Таблица 8-2. Максимальная длительность цикла DMA

Режим работы ЦПУ Источник
тактирования
Максимальная продолжительность цикла DMA
Активный режим MCLK=DCOCLK 4 цикла MCLK
Активный режим MCLK=LFXT1CLK 4 цикла MCLK
Режим пониженного потребления LPM0/1 MCLK=DCOCLK 5 циклов MCLK
Режим пониженного потребления LPM3/4 MCLK=DCOCLK 5 циклов MCLK + 6 мкС*
Режим пониженного потребления LPM0/1 MCLK=LFXT1CLK 5 циклов MCLK
Режим пониженного потребления LPM3 MCLK=LFXT1CLK 5 циклов MCLK
Режим пониженного потребления LPM4 MCLK=LFXT1CLK 5 циклов MCLK + 6 мкС*

* Дополнительные 6 мкС необходимы для запуска DCOCLK. Этот параметр в справочном руководстве называется t(LPMx).

8.2.7 Использование DMA с системными прерываниями

DMA переносы не прерываются системными прерываниями. Системные прерывания ожидают завершения DMA-переноса. Немаскируемые NMI-прерывания могут прервать работу DMA-контроллера, если установлен бит ENNMI.

Процедуры обработки системного прерывания прерываются DMA-событиями. Если процедура обработки прерывания или какая-либо другая подпрограмма должны выполняться без прерываний, контроллер DMA необходимо отключить перед выполнением такой подпрограммы.

8.2.8 Прерывания контроллера DMA

Каждый канал DMA имеет собственный флаг DMAIFG. Каждый флаг DMAIFG устанавливается в любом режиме, когда соответствующий счетный регистр DMAxSZ обнуляется. Если соответствующие биты DMAIE и GIE установлены, генерируется запрос прерывания.

Все флаги DMAIFG - источники в векторе прерывания только одного контроллера DMA, а вектор прерывания общий с модулем DAC12. Программное обеспечение должно проверить флаги DMAIFG и DAC12IFG, чтобы определить источник прерывания. Флаги DMAIFG автоматически не сбрасываются и должны быть сброшены программно.

8.3 Регистры DMA

Перечень регистров DMA приведен в таблице 8.3.

Таблица 8-3. Регистры DMA

Регистр Краткое обозначение Тип
регистра
Адрес Исходное состояние
Регистр 0 управления DMA DMACTL0 Чтение/запись 0122h Сбрасывается с POR
Регистр 1 управления DMA DMACTL1 Чтение/запись 0124h Сбрасывается с POR
Регистр управления канала 0 DMA DMA0CTL Чтение/запись 01E0h Сбрасывается с POR
Регистр адреса источника канала 0 DMA DMA0SA Чтение/запись 01E2h Не изменяется
Регистр адреса получателя канала 0 DMA DMA0DA Чтение/запись 01E4h Не изменяется
Регистр объема переноса канала 0 DMA DMA0SZ Чтение/запись 01E6h Не изменяется
Регистр управления канала 1 DMA DMA1CTL Чтение/запись 01E8h Сбрасывается с POR
Регистр адреса источника канала 1 DMA DMA1SA Чтение/запись 01EAh Не изменяется
Регистр адреса получателя канала 1 DMA DMA1DA Чтение/запись 01ECh Не изменяется
Регистр объема переноса канала 1 DMA DMA1SZ Чтение/запись 01EEh Не изменяется
Регистр управления канала 2 DMA DMA2CTL Чтение/запись 01F0h Сбрасывается с POR
Регистр адреса источника канала 2 DMA DMA2SA Чтение/запись 01F2h Не изменяется
Регистр адреса получателя канала 2 DMA DMA2DA Чтение/запись 01F4h Не изменяется
Регистр объема переноса канала 2 DMA DMA2SZ Чтение/запись 01F6h Не изменяется

DMACTL0, регистр 0 управления DMA

15 14 13 12 11 10 9 8
Зарезервировано DMA2TSELx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)


 
7 6 5 4 3 2 1 0
DMA1TSELx DMA0TSELx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)


 
Зарезервировано Биты 15-12 Зарезервировано
DMA2TSELx Биты 11-8 Выбор источника сигнала запуска DMA. Эти биты определяют источник сигнала запуска DMA-переноса.
0000  Бит DMAREQ (программный запуск)
0001  Выход Timer_A CCR2
0010  Выход Timer_B CCR2
0011  Готовность приема I2C
0100  Готовность передачи I2C
0101  Бит DAC12IFG DAC12_0CTL
0110  ADC12 ADC12IFGx
0111  Действие не производится
1000  Действие не производится
1001  Действие не производится
1010  Действие не производится
1011  Действие не производится
1100  Действие не производится
1101  Действие не производится
1110  Бит DMA0IFG запускает канал 1 DMA
      Бит DMA1IFG запускает канал 2 DMA
      Бит DMA2IFG запускает канал 0 DMA
1111  Внешний запуск DMAE0
DMA1TSELx Биты 7-4 Подобно DMA2TSELx
DMA0TSELx Биты 3-0 Подобно DMA2TSELx

DMACTL1, регистр 1 управления DMA

15 14 13 12 11 10 9 8
0 0 0 0 0 0 0 0
r-0 r-0 r-0 r-0 r-0 r-0 r-0 r-0


 
7 6 5 4 3 2 1 0
0 0 0 0 0 DMA
ONFETCH
ROUND
ROBIN
ENNMI
r-0 r-0 r-0 r-0 r-0 rw-(0) rw-(0) rw-(0)


 
Зарезер
вировано
Биты
15-3
Зарезервировано. Только чтение. Всегда читаются как 0.
DMA
ONFETCH
Бит 2 Выборка DMA
    0  DMA перенос происходит немедленно
    1  DMA перенос происходит при выборке следующей команды после запуска
    
ROUND
ROBIN
Бит 1 Этот бит включает циклическое переключение приоритетов каналов DMA.
    0  Устанавливается следующий приоритет DMA каналов: DMA0-DMA1-DMA2
    1  Приоритет DMA каналов изменяется с каждым переносом
    
ENNMI Бит 0 Разрешение NMI. Этот бит разрешает прерывание DMA переноса немаскируемым прерыванием NMI. Когда NMI прерывает DMA перенос, текущий перенос завершается нормально, но последующие переносы прекращаются и устанавливается флаг DMAABORT.
    0   NMI прерывание не прерывает DMA перенос.
    1   NMI прерывание прерывает DMA перенос.
    

DMAxCTL, регистр управления DMA каналом x

15 14 13 12 11 10 9 8
Зарезер
вировано
DMADTx DMADSTINCRx DMASRCINCRx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)


 
7 6 5 4 3 2 1 0
DMA
DSTBYTE
DMA
SRCBYTE
DMALEVEL DMAEN DMAIFG DMAIE DMA
ABORT
DMAREQ
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)


 
Зарезер
вировано
Бит 15 Зарезервирован.
DMADTx Биты
14-12
Режим переноса DMA.
    000  Одиночный перенос
    001  Блочный перенос
    010  Пакетно-блочный перенос
    011  Пакетно-блочный перенос
    100  Повторный одиночный перенос
    101  Повторный блочный перенос
    110  Повторный пакетно-блочный перенос
    111  Повторный пакетно-блочный перенос
    
DMA
DSTINCRx
Биты
11-10
Инкремент DMA получателя. Этот бит позволяет выбрать автоматическое инкрементирование или декрементирование адреса получателя после каждого переноса байта или слова. Когда DMADSTBYTE=1, адрес получателя инкрементируется на единицу. Когда DMADSTBYTE=0, адрес получателя инкрементируется на 2. DMAxDA копируется во временный регистр и уже временный регистр инкрементируется или декрементируется. DMAxDA не инкрементируется и не декрементируется.
    00  Адрес получателя не изменяется
    01  Адрес получателя не изменяется
    10  Адрес получателя декрементируется
    11  Адрес получателя инкрементируется
    
DMA
SRCINCRx
Биты 9-8 Инкремент DMA источника. Этот бит позволяет выбрать автоматическое инкрементирование или декрементирование адреса источника после каждого переноса байта или слова. Когда DMASRCBYTE=1, адрес источника инкрементируется на единицу. Когда DMASRCBYTE=0, адрес источника инкрементируется на 2. DMAxSA копируется во временный регистр и уже временный регистр инкрементируется или декрементируется. DMAxSA не инкрементируется и не декрементируется.
    00  Адрес источника не изменяется
    01  Адрес источника не изменяется
    10  Адрес источника декрементируется
    11  Адрес источника инкрементируется
    
DMA
DSTBYTE
Бит 7 Байт DMA получателя. Этот бит определяет, какой формат будет иметь получатель: байт или слово.
    0   Слово.
    1   Байт.
    
DMA
SRCBYTE
Бит 6 Байт DMA источника. Этот бит определяет, какой формат будет иметь источник: байт или слово.
    0   Слово.
    1   Байт.
    
DMA
LEVEL
Бит 5 Уровень DMA. Этот бит позволяет выбрать условие запуска переноса: по перепаду или по уровню.
    0   Чувствительность к перепаду 
    1   Чувствительность к уровню
    
DMAEN Бит 4 Разрешение DMA
    0   Запрещено
    1   Разрешено
    
DMAIFG Бит 3 Флаг DMA прерывания
    0   Прерывание не ожидается
    1   Ожидается прерывание
    
DMAIE Бит 2 Разрешение DMA прерывания
    0   Запрещено
    1   Разрешено
    
DMA
ABORT
Бит 1 Прекращение DMA переносов. Этот бит показывает, что DMA перенос был прерван NMI прерыванием.
    0   DMA перенос не прерывался
    1   DMA перенос был прерван NMI прерыванием
    
DMAREQ Бит 0 Запрос DMA. Программное управление стартом DMA. Бит DMAREQ сбрасывается автоматически.
    0   Нет DMA старта
    1   Старт DMA
    

DMAxSA, регистр адреса источника DMA

15 14 13 12 11 10 9 8
DMAxSAx
rw rw rw rw rw rw rw rw


 
7 6 5 4 3 2 1 0
DMAxSAx
rw rw rw rw rw rw rw rw


 
DMAxSAx Биты 15-0 Адрес DMA источника. Регистр адреса источника указывает адрес источника DMA для одиночных переносов или первый адрес источника для блочных переносов. Регистр адреса источника остается неизменным во время блочных или пакетно-блочных переносов.

DMAxDA, регистр адреса получателя DMA

15 14 13 12 11 10 9 8
DMAxDAx
rw rw rw rw rw rw rw rw


 
7 6 5 4 3 2 1 0
DMAxDAx
rw rw rw rw rw rw rw rw


 
DMAxDAx Биты 15-0 Адрес DMA получателя. Регистр адреса получателя указывает адрес получателя DMA для одиночных переносов или первый адрес получателя для блочных переносов. Регистр DMAxDA остается неизменным во время блочных или пакетно-блочных переносов.

DMAxSZ, адресный регистр размера DMA

15 14 13 12 11 10 9 8
DMAxSZx
rw rw rw rw rw rw rw rw


 
7 6 5 4 3 2 1 0
DMAxSZx
rw rw rw rw rw rw rw rw


 
DMAxSZx Биты 15-0 Размер DMA. Регистр размера DMA определяет количество данных при переносе блока. Регистр DMAxSZ декрементируется при каждом переносе слова или байта. Когда DMAxSZ декрементируется до нуля, в него немедленно автоматически перезагружается предыдущее значение инициализации. 00000h Перенос запрещен 00001h Перенос одного байта или слова 00002h Перенос двух байт или слов . . 0FFFFh Перенос 65535 байт или слов

 

 

 

 

 

содержание      ..      1      2      3      ..