Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MSP430_Final

.pdf
Скачиваний:
41
Добавлен:
31.05.2015
Размер:
2.03 Mб
Скачать

6.3. Регистры контроллера DMA 261

DMA Биты Инкремент конечного адреса. Эти биты разрешают автоматическое DSTINRx 11…10 декрементирование/инкрементирование адреса приёмника после пересылки очередного байта или слова. При DMADSTBYTE = 1 ад рес приёмника увеличивается/уменьшается на единицу. При DMADSTBYTE = 0 адрес приёмника увеличивается/уменьшается на два. Регистр DMAxDA копируется во временный регистр, содержи мое которого инкрементируется или декрементируется. Сам регистр

DMAxDA не изменяется.

00 Адрес приёмника не изменяется

01 Адрес приёмника не изменяется

 

 

10

Адрес приёмника декрементируется

 

 

11

Адрес приёмника инкрементируется

DMA

Биты

Инкремент исходного адреса. Эти биты разрешают автоматическое

SRCINCRx

9…8

декрементирование/инкрементирование адреса источника после пе

 

 

ресылки очередного байта или слова. При DMADSTBYTE = 1 адрес

 

 

источника увеличивается/уменьшается на единицу. При

 

 

DMADSTBYTE = 0 адрес источника увеличивается/уменьшается на

 

 

два. Регистр DMAxSA копируется во временный регистр, содержи

 

 

мое которого инкрементируется или декрементируется. Сам регистр

 

 

DMAxSA не изменяется.

 

 

00

Адрес источника не изменяется

 

 

01

Адрес источника не изменяется

 

 

10

Адрес источника декрементируется

 

 

11

Адрес источника инкрементируется

DMA

Бит 7 Формат приёмника DMA. Этот бит определяет разрядность приёмника.

DSTBYTE

 

0

Слово

 

 

1

Байт

DMA

Бит 6 Формат источника DMA. Этот бит определяет разрядность источника.

SRCBYTE

 

0

Слово

 

 

1

Байт

DMALEVEL Бит 5 Уровень DMA. Этот бит определяет характер сигнала запуска. 0 Запуск по фронту (нарастающий фронт)

 

 

1

Запуск по уровню (ВЫСОКИЙ уровень)

DMAEN

Бит 4

Разрешение DMA.

 

 

0

Выключен

 

 

1

Включен

DMAIFG

Бит 3 Флаг прерывания DMA.

 

 

0

Нет прерывания

 

 

1

Есть прерывание

DMAIE

Бит 2

Разрешение прерывания DMA

 

 

0

Запрещено

 

 

1

Разрешено

DMA

Бит 1

Аварийный останов DMA. Этот бит показывает, была ли DMA пере

ABORT

 

сылка прервана немаскируемым прерыванием.

 

 

0

DMA пересылка не прервана

 

 

1

DMA пересылка была прервана NMI

DMAREQ

Бит 0

Запрос DMA. Программный запуск DMA. Бит DMAREQ сбрасыва

 

 

ется автоматически.

 

 

0

Не запускать DMA

 

 

1

Запустить DMA

262 Глава 6. Контроллер DMA

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

15

14

13

12

11

10

9

8

 

 

 

 

Reserved

 

 

 

 

 

 

 

 

 

 

 

 

r0

r0

r0

r0

 

r0

r0

r0

r0

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

 

Reserved

 

 

 

DMAxSAx

 

 

 

 

 

 

 

 

 

 

r0

r0

r0

r0

 

rw

rw

rw

rw

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

Биты

Адрес источника DMA. Регистр адреса источника указывает на адрес ис

 

15…0 ходного значения для режима одиночных пересылок или на адрес перво

 

 

го значения исходного блока данных для режимов пересылки блоков.

Вмоделях, содержащих не более 64 КБ адресуемой памяти, в регист ре DMAxSAx используется одно слово. При записи в старшее слово с использованием команд, оперирующих 2 байтными операндами, это слово автоматически обнуляется.

Вмоделях, имеющих более 64 КБ адресуемой памяти, для хранения адреса источника используется дополнительное слово. Биты 15…4 этого слова зарезервированы и всегда читаются как 0. При операциях записи в регистр DMAxSAx с использованием команд, оперирующих 2 байтными операндами, это дополнительное слово автоматически обнуляется. При чтении дополнительного слова с использованием команд, оперирующих 2 байтными операндами, всегда возвращает ся нулевое значение.

6.3. Регистры контроллера DMA 263

DMAxDA, регистр адреса приёмника канала x DMA

15

14

13

12

11

10

9

8

 

 

 

 

Reserved

 

 

 

 

 

 

 

 

 

 

 

 

r0

r0

r0

r0

 

r0

r0

r0

r0

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

 

Reserved

 

 

 

DMAxDAx

 

 

 

 

 

 

 

 

 

 

r0

r0

r0

r0

 

rw

rw

rw

rw

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

Биты

Адрес приёмника DMA. Регистр адреса приёмника указывает на итого

 

15…0 вый адрес значения для режима одиночных пересылок или на адрес пер

 

 

вого значения итогового блока данных для режимов пересылки блоков.

Вмоделях, содержащих не более 64 КБ адресуемой памяти, для ре гистра DMAxDAx используется одно слово. При записи в старшее слово с использованием команд, оперирующих 2 байтными операн дами, это слово автоматически обнуляется.

Вмоделях, имеющих более 64 КБ адресуемой памяти, для хранения адреса источника используется дополнительное слово. Биты 15…4 этого слова зарезервированы и всегда читаются как 0. При операциях записи в регистр DMAxDAx с использованием команд, оперирую щих 2 байтными операндами, это дополнительное слово автомати чески обнуляется. При чтении дополнительного слова с использова нием команд, оперирующих 2 байтными операндами, всегда возвращается нулевое значение.

264 Глава 6. Контроллер DMA

DMAxSZ, регистр размера пересылки канала x 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 Биты Размер пересылки DMA. Этот регистр определяет количество бай 15…0 тов/слов в пересылаемом блоке. Содержимое регистра DMAxSZx де крементируется после пересылки каждого слова или байта. При до стижении нулевого значения в регистр DMAxSZ автоматически

загружается его исходное содержимое. 00000h Пересылка запрещена

00001h Необходимо переслать один байт или слово

00002h Необходимо переслать два байта или слова

:

0FFFFh Необходимо переслать 65535 байтов или слов

DMAIV, регистр вектора прерывания контроллера DMA

15

14

 

13

12

 

11

 

10

 

9

8

0

0

 

 

0

0

 

0

 

0

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r0

r0

 

r0

 

r0

 

r0

 

 

r0

 

r0

 

r0

7

6

 

5

4

 

3

 

2

 

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

 

0

0

 

 

 

DMAIVx

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r0

r0

 

r0

 

r0

 

r (0)

 

r (0)

r (0)

 

r0

DMAIVx

Биты

Значение вектора прерывания DMA

 

 

 

 

 

 

 

 

15…0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Содержимое

 

Источник прерывания

 

Флаг

 

 

Приоритет

 

 

 

 

 

 

 

 

 

 

 

 

DMAIV

 

 

прерывания

 

 

прерывания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00h

 

Нет прерывания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02h

 

Канал 0 DMA

 

 

 

DMA0IFG

 

 

Высший

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

04h

 

Канал 1 DMA

 

 

 

DMA1IFG

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

06h

 

Канал 2 DMA

 

 

 

DMA2IFG

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

08h

 

Зарезервировано

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0Ah

 

Зарезервировано

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0Ch

 

Зарезервировано

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0Fh

 

Зарезервировано

 

 

 

Низший

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7.1. Введение 265

ГЛАВА 7

КОНТРОЛЛЕР ФЛЭШCПАМЯТИ

В этой главе описывается функционирование контроллера флэш памяти микроконтроллеров семейства MSP430x2xx.

7.1.Введение

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

Контроллер флэш памяти имеет следующие особенности:

встроенный генератор напряжения программирования;

побитовое, побайтовое или пословное программирование;

сверхмалое потребление;

поддерживается стирание сегментов и общее стирание;

два режима чтения при граничных условиях (опционально, см. документа

цию на конкретную модель).

Блок схема контроллера флэш памяти приведена на Рис. 7.1.

Примечание. Минимальное значение VCC при записи и стирании флэш памяти

Минимальное значение напряжения питания VCC во время операций записи или стирания флэш памяти составляет 2.2 В. Если в процессе записи или стирания флэш памяти напряжение VCC снизится ниже 2.2 В, результат операции будет не предсказуем.

7.2.Сегментная организация флэшCпамяти

В микроконтроллерах MSP430 вся флэш память поделена на сегменты. Запи сывать в флэш память можно отдельные биты, байты или же слова, однако наи меньшей единицей флэш памяти, которую можно стереть, является сегмент.

Кроме того, флэш память содержит две секции — основную и информацион ную. Обе секции функционируют совершенно одинаково. И программный код, и данные могут располагаться в обеих секциях. Различие между этими секциями заключается в разных значениях размера сегмента и физических адресов.

266 Глава 7. Контроллер флэш#памяти

 

MAB

 

MDB

 

 

FCTL1

Защёлка адреса

Защёлка данных

FCTL2

Включение

 

 

 

 

защёлки

 

 

адреса

 

FCTL3

 

 

 

 

Матрица

 

 

флэш памяти

FCTL4

 

 

Тактовый

 

 

генератор

Включение

 

 

защёлки данных

 

Генератор

напряжения

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

Рис. 7.1. Блок схема контроллера флэш памяти.

0x0FFFF

 

0x0FFFF

Сегмент 0

0x0FFFF

Блок

 

32 КБ

0x0FB00

0x0FFC0

 

0x0FDFF

Сегмент 1

0x0FFBF

Блок

 

основной

0x0FC00

0x0FF80

 

флэш памяти

 

Сегмент 2

0x0FF7F

Блок

 

 

 

0x0FF40

 

 

 

 

 

 

 

 

 

OxOFF3F

Блок

0x0F000

 

 

 

0x0FF00

 

 

 

 

 

 

 

 

0x0FEFF

Блок

0x010FF

512 байт

 

 

OxOFBC0

 

 

 

 

информационной

 

Сегмент 61

0x0FEBF

Блок

 

 

OxOFE80

 

флэш памяти

 

 

 

0x01000

 

Сегмент 62

OxOFE7F

Блок

 

 

 

 

 

OxOFE40

 

 

 

 

 

 

 

 

Сегмент 63

0x0FE3F

Блок

 

 

0x08000

0x0FE00

 

 

0x010FF

Сегмент A

 

 

 

 

 

Сегмент B

 

 

Сегмент C

0x01000 Сегмент D

Рис. 7.2. Сегментная организация флэш памяти (для модуля объёмом 32 КБ).

7.3. Функционирование флэш#памяти 267

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

Сегменты, в свою очередь, поделены на блоки.

На Рис. 7.2 показана сегментная организация модуля флэш памяти объёмом 32 КБ, который имеет 8 основных и четыре информационных сегмента.

7.2.1. Сегмент A

Сегмент A информационной секции флэш памяти может быть заблокирован независимо от остальных секций посредством бита LOCKA. При LOCKA = 1 за пись или стирание сегмента A запрещены, а всё содержимое информационной секции защищено от стирания при выполнении операции общего стирания или при программировании микроконтроллера. При LOCKA = 0 запись и стирание сегмента A осуществляются наравне с любыми другими секциями флэш памяти, а содержимое информационной секции при выполнении общего стирания или при программировании микроконтроллера стирается.

Состояние бита LOCKA изменяется записью в него 1. Запись 0 в бит LOCKA не изменяет его состояния. Это позволяет использовать без изменений существу ющие процедуры программирования флэш памяти.

; Разблокировать сегмент A

 

BIT

#LOCKA,&FCTL3

; Проверяем LOCKA

JZ

SEGA_UNLOCKED

; Уже разблокировано?

MOV

#FWKEY+LOCKA,&FCTL3

; Нет, разблокируем сегмент

SEGA_UNLOCKED

; Да, продолжаем

;Сегмент A разблокирован

;Заблокировать сегмент A

BIT

#LOCKA,&FCTL3

; Проверяем LOCKA

JNZ

SEGALOCKED

; Уже заблокировано?

MOV

#FWKEY+LOCKA,&FCTL3

; Нет, блокируем сегмент

SEGA_LOCKED

; Да, продолжаем

; Сегмент A заблокирован

 

7.3.Функционирование флэшCпамяти

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

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

запись байта/слова;

запись блока;

268Глава 7. Контроллер флэш#памяти

стирание сегмента;

общее стирание (стирание всех сегментов основной секции памяти);

полное стирание (стирание всей памяти).

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

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

Операции записи и стирания управляются тактовым генератором контролле ра, блок схема которого приведена на Рис. 7.3. Рабочая частота тактового генера тора fFTG должна находиться в диапазоне от ~257 кГц до ~476 кГц (см. документа цию на конкретный микроконтроллер).

 

FSSELx

FN5 ...........

 

 

 

 

 

 

 

 

 

ACLK

 

 

 

 

FN0

PUC

EMEX

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00

 

 

 

 

 

fFTG

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MCLK

 

01

 

Делитель, 1…64

 

Сброс

 

 

SMCLK

 

10

 

 

Тактовый генератор контроллера

 

 

 

 

 

 

 

SMCLK

 

11

 

 

 

 

 

 

флэш памяти

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUSY

 

 

 

 

 

 

 

 

 

 

 

 

 

WAIT

Рис. 7.3. Блок схема тактового генератора контроллера флэш памяти.

Выбор опорного сигнала тактового генератора контроллера флэшCпамяти

Тактовый генератор контроллера флэш памяти может тактироваться от любо го из тактовых сигналов ACLK, SMCLK или MCLK. Из выбранного сигнала пос редством делителя, коэффициент деления которого задаётся битами FNx, фор мируется тактовый сигнал контроллера fFTG. Если во время операции записи или стирания частота этого сигнала будет отличаться от указанной в спецификации, то результат операции может оказаться непредсказуемым или же рабочие пара метры флэш памяти могут выйти за пределы, гарантирующие надёжную работу.

При обнаружении неисправности тактового генератора во время операции за писи или стирания данная операция прерывается и устанавливается флаг FAIL. Результат операции при этом будет непредсказуемым.

Во время выполнения операции записи или стирания выбранный источник тактового сигнала нельзя выключить, переведя MSP430 в режим пониженного энергопотребления. Этот источник останется в активном состоянии до заверше ния операции, после чего будет выключен.

7.3. Функционирование флэш#памяти 269

7.3.2. Стирание флэшCпамяти

При стирании биты флэш памяти устанавливаются в 1. Состояние каждого отдельного бита при программировании может быть изменено с 1 на 0, однако для изменения его состояния с 0 на 1 требуется цикл стирания. Наименьшим эле ментом флэш памяти, допускающим независимое стирание, является сегмент. Предусмотрено три режима стирания, которые задаются битами ERASE и MERAS в соответствии с Табл. 7.1.

Таблица 7.1. Режимы стирания

MERAS

ERASE

Режим стирания

 

 

 

0

1

Стирание сегмента

 

 

 

1

0

Общее стирание (стирание всех сегментов основной секции флэш памяти)

 

 

 

1

1

LOCKA = 0 — стирание основной и информационной секций флэш памяти

LOCKA = 1 — стирание только основной секции флэш памяти

 

 

Любой цикл стирания инициируется фиктивной записью по адресу, располо женному в пределах стираемого участка памяти. Фиктивная запись запускает так товый генератор контроллера и процесс стирания. Временная диаграмма цикла стирания приведена на Рис. 7.4. Бит BUSY устанавливается сразу же после вы полнения фиктивной записи и остаётся в этом состоянии до окончания цикла стирания. Биты BUSY, MERAS и ERASE автоматически сбрасываются после за вершения цикла стирания. Значения временных параметров цикла стирания не зависят от объёма флэш памяти, имеющейся в устройстве. Длительность одно типных циклов стирания одинакова для всех микроконтроллеров семейства.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операция стирания

 

 

 

 

 

 

Генерация

 

 

 

Снятие

 

 

 

 

 

 

 

 

напряжения

 

 

 

напряжения

 

 

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

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

Время стирания, ток потребления по VCC увеличен

BUSY

t общего стирания = 10593/f FTG, t стирания сегмента = 4819/f FTG

Рис. 7.4. Временная диаграмма цикла стирания.

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

Запуск процедуры стирания из программы, расположенной в флэшCпамяти

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

270 Глава 7. Контроллер флэш#памяти

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

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

Последовательность операций, требуемая для запуска цикла стирания из про граммы, находящейся в флэш памяти, показана на Рис. 7.5.

Запретить сторожевой таймер

Настроить контроллер флэш памяти и задать режим стирания

Выполнить фиктивную запись

Установить LOCK = 1, разрешить сторожевой таймер

Рис. 7.5. Запуск цикла стирания из флэш памяти.

;Стирание сегмента из флэш$памяти. 514 кГц < SMCLK < 952 кГц

;Предполагается, что ACCVIE = NMIIE = OFIE = 0.

MOV #WDTPW+WDTHOLD,&WDTCTL

; Запрещаем WDT

MOV #FWKEY+FSSEL1+FN0,&FCTL2

; SMCLK/2

MOV #FWKEY,&FCTL3

; Сбрасываем LOCK

MOV #FWKEY+ERASE,&FCTL1

; Разрешаем стирание сегмента

CLR &0FC10h

; Фиктивная запись, стираем сегмент 1

MOV #FWKEY+LOCK,&FCTL3

; Выполнено, устанавливаем LOCK

...

; Повторно разрешаем WDT?

Запуск процедуры стирания из программы, расположенной в ОЗУ

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

Последовательность операций, требуемая для запуска цикла стирания из про граммы, находящейся в ОЗУ, показана на Рис. 7.6.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]