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

Микропроцессорная техника / Семейство микроконтроллеров MSP430x2xx_

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

5.3. Регистры модуля синхронизации 241

BCSCTL2, регистр управления 2 модуля синхронизации

7

6

5

4

3

2

1

0

SELMx

DIVMx

SELS

 

DIVSx

DCOR*

 

 

 

 

 

 

 

 

rw–0

rw–0

rw–0

rw–0

rw–0

rw–0

rw–0

rw–0

*Не используется в моделях MSP430x20xx и MSP430x21x.

SELMx Биты Выбор MCLK. Эти биты определяют источник тактового сигнала 7…6 MCLK.

00 DCOCLK

01 DCOCLK

10XT2CLK, если генератор XT2 реализован в микроконтроллере. LFXT1CLK или VLOCLK, если генератор XT2 отсутствует

11LFXT1CLK или VLOCLK

DIVMx

Биты

Делитель для MCLK.

 

5…4

00

/1

 

 

01

/2

 

 

10

/4

 

 

11

/8

SELS

Бит 3

Выбор SMCLK.

 

 

0

DCOCLK

1XT2CLK, если генератор XT2 реализован в микроконтроллере.

 

 

 

LFXT1CLK или VLOCLK, если генератор XT2 отсутствует

DIVSx

Биты

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

 

2…1

00

/1

 

 

01

/2

 

 

10

/4

 

 

11

/8

DCOR

Бит 0

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

 

 

0

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

 

 

1

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

242 Глава 5. Модуль синхронизации Basic Clock Module+

BCSCTL3, регистр управления 3 модуля синхронизации

7

6

 

 

5

4

3

2

1

0

 

XT2Sx

 

 

LFXT1Sx

 

XCAPx

XT2OF*

LFXT1OF

 

 

 

 

 

 

 

 

 

 

rw–0

rw–0

 

 

rw–0

rw–0

rw–0

rw–1

r0

r–(1)

*Не используется в моделях MSP430x2xx, MSP430x21xx и MSP430x22xx.

 

 

XT2Sx

Биты

Выбор диапазона XT2. Эти биты определяют частотный диапазон ге

 

7…6

нератора XT2.

 

 

 

 

 

 

 

00

Кварцевый/керамический резонатор 0.4…1 МГц

 

 

 

01

Кварцевый/керамический резонатор 1…3 МГц

 

10Кварцевый/керамический резонатор 3…16 МГц

11Внешний сигнал частотой 0.4…16 МГц

LFXT1Sx Биты Выбор низкочастотного источника тактового сигнала и выбор диа 5…4 пазона LFXT1. При XTS = 0 эти биты определяют источник тактово го сигнала (LFXT1 или VLO). При XTS = 1 данные биты определяют

частотный диапазон генератора LFXT1. XTS = 0:

00 Кварцевый резонатор 32 768 Гц в генераторе LFXT1

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

10VLOCLK

11Внешний сигнал синхронизации

XTS = 1 (не применимо для моделей MSP430x20xx): 00 Кварцевый/керамический резонатор 0.4…1 МГц 01 Кварцевый/керамический резонатор 1…3 МГц

 

 

10

Кварцевый/керамический резонатор 3…16 МГц

 

 

11

Внешний сигнал частотой 0.4…16 МГц

XCAPx

Биты

Выбор нагрузочной ёмкости. При XTS = 0 эти биты определяют ве

 

3…2

личину нагрузочной ёмкости для резонатора, подключаемого к гене

 

 

ратору LFXT1. Если XTS = 1 или LFXT1Sx = 11, то биты XCAPx

 

 

должны быть равны 00.

 

 

00

~ 1 пФ

 

 

01

~ 6 пФ

 

 

10

~ 10 пФ

 

 

11

~ 12.5 пФ

XT2OF

Бит 1

Неисправность генератора XT2.

 

 

0

Генератор функционирует нормально

 

 

1

Обнаружен сбой генератора

LFXT1OF

Бит 0

Неисправность генератора LFXT1.

 

 

0

Генератор функционирует нормально

 

 

1

Обнаружен сбой генератора

5.3. Регистры модуля синхронизации 243

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

7

6

5

4

3

2

1

0

OFIE

rw–0

Биты Эти биты могут использоваться другими модулями. См документа 7…2 цию на конкретный микроконтроллер.

OFIE Бит 1 Разрешение прерывания при неисправности генератора. Этот бит разрешает прерывание OFIFG. Поскольку прочие биты регистра IE1 могут использоваться другими модулями, то для установки или очистки битов регистра рекомендуется вместо команд MOV.B или CLR.B применять команды BIS.B и BIC.B.

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

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

Бит 0 Эти биты могут использоваться другими модулями. См документа цию на конкретный микроконтроллер.

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

7

6

5

4

3

2

1

0

OFIFG

rw–1

Биты Эти биты могут использоваться другими модулями. См документа 7…2 цию на конкретный микроконтроллер.

OFIFG Бит 1 Флаг прерывания при неисправности генератора. Поскольку прочие биты регистра IFG1 могут использоваться другими модулями, то для установки или очистки битов регистра рекомендуется вместо команд MOV.B или CLR.B применять команды BIS.B и BIC.B.

0 Не было запроса прерывания

1Есть запрос прерывания

Бит 0 Эти биты могут использоваться другими модулями. См документа цию на конкретный микроконтроллер.

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

ГЛАВА 6

КОНТРОЛЛЕР DMA

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

6.1.Введение

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

Модели, в которых содержится контроллер DMA, могут иметь один, два или три канала прямого доступа к памяти. В связи с этим некоторые возможности контроллера, описанные в данной главе, доступны не во всех микроконтроллерах семейства.

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

Контроллер DMA имеет следующие особенности:

до трёх независимых каналов передачи данных;

конфигурируемые приоритеты каналов DMA;

для пересылки одного значения требуется всего два такта MCLK;

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

размер блока — до 65 535 байт или слов;

большое число источников, инициирующих пересылку данных;

инициация пересылки по фронту или по уровню;

четыре режима адресации;

пересылка одиночных значений, блоков или групп блоков.

Блок схема контроллера DMA приведена на Рис. 6.1.

 

 

 

 

 

6.1. Введение 245

 

DMA0TSELx

 

 

 

 

 

4

 

 

 

 

DMAREQ

0000

 

 

 

 

TACCR2_CCIFG

0001

 

 

 

 

TBCCR2_CCIFG

0010

 

 

 

 

Приём данных USCI A0

0011

 

 

 

 

Передача данных USCI A0

0100

 

 

 

JTAG активен

DAC12_0IFG

0101

 

 

 

 

 

 

 

ADC12_IFGx

0110

Останов

 

 

Запрос NMI прерывания

TACCR0_CCIFG

0111

ROUNDROBIN

ENNMI

TBCCR0_CCIFG

1000

 

 

 

 

 

 

Приём данных USCI A1

1001

 

 

DMADSTINCRx

DMADTx

Передача данных USCI A1

1010

 

2

DMADSTBYTE

3

Готовность умножителя

1011

 

 

 

 

 

 

Приём данных USCI B0

1100

 

 

Канал 0 DMA

 

 

 

 

 

Передача данных USCI B0

1101

 

 

DMA0SA

DT

DMA2IFG

1110

 

 

 

 

 

DMA0DA

 

DMAE0

1111

 

 

 

 

 

 

 

 

 

 

 

DMA0SZ

 

 

DMA1TSELx

 

2

 

 

 

4

 

DMASRSBYTE

 

 

 

 

 

 

 

 

DMASRCINCRx

DMAEN

 

 

 

 

DMAREQ

0000

 

 

 

 

TACCR2_CCIFG

0001

 

 

 

 

TBCCR2_CCIFG

0010

 

 

DMADSTINCRx

DMADTx

Приём данных USCI A0

0011

 

 

DMA

 

 

 

DMADSTBYTE

 

Передача данных USCI A0

0100

2

3

 

 

 

 

 

 

DAC12_0IFG

0101

модулем

 

Канал 1 DMA

 

ADC12_IFGx

0110

 

 

 

 

 

TACCR0_CCIFG

0111

 

DMA1SA

DT

 

 

TBCCR0_CCIFG

1000

Управление

 

DMA1DA

Адресное

Приём данных USCI A1

1001

 

DMA1SZ

пространство

Передача данных USCI A1

1010

 

 

 

 

 

Готовность умножителя

1011

2

DMASRSBYTE

 

Приём данных USCI B0

1100

 

 

 

DMASRCINCRx

DMAEN

Передача данных USCI B0

1101

 

 

 

 

 

 

DMA0IFG

1110

 

 

 

 

DMAE0

1111

 

 

DMADSTINCRx

DMADTx

 

 

 

 

 

 

 

2

DMADSTBYTE

3

 

DMA2TSEL

 

 

 

 

 

 

 

 

4

 

 

Канал 2 DMA

 

DMAREQ

0000

 

 

DMA2SA

DT

TACCR2_CCIFG

0001

 

 

 

 

 

DMA2DA

 

TBCCR2_CCIFG

0010

 

 

 

 

 

 

 

Приём данных USCI A0

0011

 

 

DMA2SZ

 

Передача данных USCI A0

0100

 

2

 

 

DAC12_0IFG

0101

 

DMASRSBYTE

 

 

 

 

 

 

DMASRCINCRx

 

ADC12_IFGx

0110

 

 

DMAEN

TACCR0_CCIFG

0111

 

DMAONFETCH

 

 

 

 

 

TBCCR0_CCIFG

1000

 

 

 

 

Приём данных USCI A1

1001

 

 

Останов ЦПУ

 

 

 

 

 

Передача данных USCI A1

1010

 

 

 

 

 

 

 

 

 

 

 

 

Готовность умножителя

1011

 

 

 

 

Приём данных USCI B0

1100

 

 

 

 

Передача данных USCI B0

1101

 

 

 

 

DMA1IFG

1110

 

 

 

 

DMAE0

1111

 

 

 

 

 

Рис. 6.1. Блок схема контроллера DMA.

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

6.2.Функционирование контроллера DMA

Конфигурирование контроллера DMA осуществляется пользовательской программой. Настройка контроллера DMA и его функционирование рассматри ваются в следующих подразделах.

6.2.1. Режимы адресации контроллера DMA

Контроллер DMA поддерживает четыре режима адресации. Режим адресации задаётся независимо для каждого канала DMA. К примеру, канал 0 может осу ществлять пересылку между двумя фиксированными адресами, в то время как ка нал 1 используется для пересылки данных между двумя блоками адресов. Доступ ны следующие режимы адресации (Рис. 6.2):

фиксированный адрес фиксированный адрес;

фиксированный адрес блок адресов;

блок адресов фиксированный адрес;

блок адресов блок адресов.

Контроллер

Адресное

DMA

пространство

С фиксированного адреса по фиксированному адресу

Контроллер

Адресное

DMA

пространство

С блока адресов по фиксированному адресу

Контроллер

Адресное

DMA

пространство

С фиксированного адреса по блоку адресов

Контроллер

Адресное

DMA

пространство

С блока адресов по блоку адресов

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

Режимы адресации задаются при помощи битов DMASRCINCRx и DMADSTINCRx. Биты DMASRCINCRx определяют, будет ли адрес источника инк рементироваться, декрементироваться или оставаться неизменным после очередной пересылки. Биты DMADSTINCRx определяют то же самое для адреса назначения.

Пересылка может осуществляться между адресатами одинаковой (байт—байт, сло во—слово) и разной (байт—слово, слово—байт) разрядности. При пересылке двухбайт ного значения в однобайтное передаётся только младший байт источника. При пере сылке однобайтного значения в двухбайтное старший байт получателя сбрасывается.

6.2. Функционирование контроллера DMA 247

6.2.2. Режимы пересылки контроллера DMA

Контроллер DMA поддерживает шесть режимов пересылки данных, которые определяются битами DMADTx в соответствии с Табл. 6.1. Режим пересылки за даётся индивидуально для каждого канала DMA. Так, канал 0 может использовать режим пересылки одиночных значений, одновременно с этим канал 1 может ра ботать в режиме пересылки группы блоков, а канал 2 — в режиме циклической пересылки блока данных.

Разрядность пересылаемых данных определяется битами DSTBYTE (приём ник) и SRCBYTE (источник) регистра DMAxCTL. Как источник, так и приёмник может быть однобайтным либо двухбайтным. Пересылка может осуществляться между однобайтными адресатами, между двухбайтными адресатами, а также меж ду адресатами разной разрядности.

Таблица 6.1. Режимы пересылки DMA

DMADTx

Режим

Описание

пересылки

 

 

 

 

 

000

Пересылка одиночных

Каждая пересылка требует отдельного запуска. Бит DMAEN авто

 

значений

матически сбрасывается после осуществления DMAxSZ пересылок

 

 

 

001

Пересылка блоков

Весь блок пересылается по одному сигналу запуска. Бит

 

 

DMAEN автоматически сбрасывается после пересылки блока

 

 

 

010, 011

Пакетная пересылка

ЦПУ периодически активируется во время пересылки блока. Бит

 

блоков

DMAEN автоматически сбрасывается после пересылки блока

 

 

 

100

Циклическая пересыл

Каждая пересылка требует отдельного запуска. Бит DMAEN ос

 

ка одиночных значений

таётся установленным

 

 

 

101

Циклическая пересыл

Весь блок пересылается по одному сигналу запуска. Бит

 

ка блоков

DMAEN остаётся установленным

 

 

 

110, 111

Циклическая пересыл

ЦПУ периодически активируется во время пересылки блока.

 

ка группы блоков

Бит DMAEN остаётся установленным

Пересылка одиночных значений

Врежиме пересылки одиночных значений пересылка каждого байта/слова за пускается индивидуально. Диаграмма состояний для этого режима показана на

Рис. 6.3.

Регистр DMAxSZ используется для задания числа пересылок. Биты DMADSTINCRx и DMASRCINCRx определяют, будет ли адрес приёмника и ис точника инкрементироваться либо декрементироваться после каждой пересылки. Если DMAxSZ = 0, то пересылка не производится.

Содержимое регистров DMAxSA, DMAxDA и DMAxSZ копируется во временные регистры. Временно сохранённые значения DMAxSA и DMAxDA инкрементируют ся или декрементируются после каждой пересылки. Регистр DMAxSZ декрементиру ется после каждой пересылки. При достижении нулевого значения он перезагружа ется из соответствующего временного регистра. Одновременно устанавливается флаг DMAIFG соответствующего канала. При DMADTx = 0 бит DMAEN сбрасывается автоматически при достижении регистром DMAxSZ нулевого значения и должен быть установлен повторно для выполнения следующей пересылки.

Врежиме циклической передачи одиночных значений контроллер DMA ав томатически не отключается (DMAEN = 1), и пересылка осуществляется каждый раз при появлении события, инициирующего запуск.

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

 

DMAEN = 0

 

Сброс

DMAEN = 0

DMAEN = 0

DMAEN = 1

DMAREQ = 0

 

T_Size → DMAxSZ

 

 

DMAxSZ → T_Size

[ DMADTx = 0

DMAxSA → T_SourceAdd

DMAxDA → T_DestAdd

и DMAxSZ = 0]

 

или DMAEN = 0

DMAABORT = 1

Режим ожидания

DMAABORT = 0

 

 

DMAREQ = 0

 

 

 

 

 

 

Ждать запуска

DMAxSZ > 0

и DMAEN = 1

[+Триггер и DMALEVEL = 0 ] или

[Триггер = 1 и DMALEVEL = 1]

2 x MCLK

Приостановить ЦПУ Переслать одно слово/байт

[ENNMI = 1 и NMI прерыв.]

или [DMALEVEL = 1 и Триггер = 0]

Декрементировать DMAxSZ Модифицировать T_SourceAdd Модифицировать T_DestAdd

T_Size → DMAxSZ

DMAxSA → T_SourceAdd

DMAxDA → T_DestAdd

DMADTx = 4

иDMAxSZ = 0

иDMAEN = 1

Рис. 6.3. Диаграмма состояний контроллера DMA для режима пересылки одиночных значений.

Пересылка блоков

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

 

 

6.2. Функционирование контроллера DMA 249

 

DMAEN = 0

 

 

Сброс

DMAEN = 0

 

DMAEN = 0

DMAREQ = 0

DMAEN = 1

T_Size → DMAxSZ

 

 

 

[DMADTx = 1

DMAxSZ → T_Size

DMAxSA → T_SourceAdd

и DMAxSZ = 0]

DMAxDA

→ T_DestAdd

или

 

 

DMAEN = 0

 

 

 

DMAABORT = 1

 

 

Режим ожидания

 

 

DMAREQ = 0

 

DMAABORT = 0

T_Size → DMAxSZ

 

DMAxSA → T_SourceAdd

 

 

 

 

DMAxDA → T_DestAdd

 

Ждать запуска

[+Триггер и DMALEVEL = 0] или

[Триггер =1 и DMALEVEL = 1]

2 x MCLK

Приостановить ЦПУ Переслать одно слово/байт

[ENNMI = 1

и NMI прерыв.]

DMAxSZ > 0

или [DMALEVEL = 1 и Триггер = 0]

Декрементировать DMAxSZ Модифицировать T_SourceAdd Модифицировать T_DestAdd

DMADTx = 5

иDMAxSZ = 0

иDMAEN = 1

Рис. 6.4. Диаграмма состояний контроллера DMA для режима пересылки блоков.

Регистр DMAxSZ используется для задания размера блока. Биты DMADSTINCRx и DMASRCINCRx определяют, будет ли адрес приёмника и ис точника инкрементироваться либо декрементироваться после каждой пересылки. Если DMAxSZ = 0, то пересылка не производится.

Содержимое регистров DMAxSA, DMAxDA и DMAxSZ копируется во вре менные регистры. Временно сохранённые значения DMAxSA и DMAxDA инкре ментируются или декрементируются после пересылки каждого элемента блока. Регистр DMAxSZ декрементируется после пересылки каждого элемента блока,

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

показывая тем самым число элементов, которые осталось переслать. При дости жении нулевого значения регистр DMAxSZ перезагружается из соответствующе го временного регистра. Одновременно устанавливается флаг DMAIFG соответс твующего канала.

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

В режиме циклической пересылки блоков бит DMAEN после завершения пе ресылки блока остаётся в установленном состоянии. Поэтому первое же событие, инициирующее пересылку, вызовет повторную пересылку блока.

Пакетная пересылка блоков

Врежиме пакетной пересылки блоков пересылка содержимого блока череду ется с активностью ЦПУ. Каждый раз после пересылки очередной порции из че тырех байтов/слов ЦПУ включается на 2 такта MCLK, т.е. ЦПУ работает на 20% мощности. После завершения пересылки блока ЦПУ возобновляет работу в нор мальном режиме, а бит DMAEN сбрасывается. Этот бит должен быть установлен повторно, чтобы можно было снова запустить пересылку данных. После начала пересылки блока и до момента её завершения повторные сигналы запуска игно рируются. Диаграмма состояний для этого режима приведена на Рис. 6.5.

Регистр DMAxSZ используется для задания размера блока. Биты DMADSTINCRx и DMASRCINCRx определяют, будет ли адрес приёмника и ис точника инкрементироваться либо декрементироваться после каждой пересылки. Если DMAxSZ = 0, то пересылка не производится.

Содержимое регистров DMAxSA, DMAxDA и DMAxSZ копируется во вре менные регистры. Временно сохранённые значения DMAxSA и DMAxDA инкре ментируются или декрементируются после пересылки каждого элемента блока. Регистр DMAxSZ декрементируется после пересылки каждого элемента блока, показывая тем самым число элементов, которые осталось переслать. При дости жении нулевого значения регистр DMAxSZ перезагружается из соответствующе го временного регистра. Одновременно устанавливается флаг DMAIFG соответ ствующего канала.

Врежиме циклической пакетной пересылки блоков бит DMAEN после завер шения пересылки блока остаётся в установленном состоянии. Более того, для инициации новой пакетной пересылки не требуется никаких дополнительных со бытий — повторная пересылка блока начинается сразу же после завершения те кущей пересылки. Процесс пересылки данных может быть остановлен либо сбро сом бита DMAEN, либо возникновением немаскируемого прерывания (при уста новленном бите ENNMI). В режиме циклической пакетной пересылки блоков ЦПУ работает на 20% мощности до тех пор, пока процесс пересылки данных не будет остановлен.

6.2.3. Инициация передачи данных с использованием DMA

Выбор источника, инициирующего пересылку данных, осуществляется с по мощью битов DMAxTSELx независимо для каждого канала DMA (Табл. 6.2).