Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2025
Просмотров: 2809
Скачиваний: 1
MSP430x1xxFamily
Таблица 8-2. (Окончание)
DMAxTSELx |
Действие |
Перенос запускается, когда модуль USART0 готов передавать новые данные. В режиме I2C запуск происходит при условии готовности передачи данных, но не при установке флага TXRDYIFG. TXRDYIFG не очищается, когда начинается пере-
0100
нос, а программная установка TXRDYIFG не приводит к запуску переноса. Если TXRDYIE установлен, условие готовности передачи данных не вызовет запуска переноса. В UART или SPI режимах перенос запускается, когда установлен флаг UTXIFG0. UTXIFG0 автоматически сбрасывается, когда начинается перенос. Если UTXIE0 установлен, флаг UTXIFG0 не запускает перенос.
Перенос запускается, когда устанавливается флаг DAC12_0CTL DAC12IFG. Флаг
0101
DAC12_0CTL DAC12IFG автоматически очищается, когда начинается перенос. Если DAC12_0CTL DAC12IE установлен, флаг DAC12_0CTL DAC12IFG не запускает перенос.
Перенос запускается флагом ADC12IFGx. Когда выполняется преобразование в одном канале, соответствующий флаг ADC12IFGx запускает перенос. Когда
выполняется повторяющаяся последовательность преобразований, перенос за-
0110
пускается флагом ADC12IFGx последнего преобразования в последовательности. Перенос запускается, когда преобразование завершено и ADC12IFGx установлен. Установка ADC12IFGx программным обеспечением перенос не запускает. Все флаги ADC12IFGx сбрасывается автоматически, когда контроллер DMA обращается к соответствующему регистру ADC12MEMx.
Перенос запускается, когда устанавливается флаг TACCR0 CCIFG. Флаг TACCR0 0111 CCIFG автоматически сбрасывается, когда перенос стартует. Если бит TACCR0
CCIE установлен, флаг TACCR0 CCIFG не запускает перенос.
Перенос запускается, когда устанавливается флаг TBCCR0 CCIFG. Флаг TBCCR0 1000 CCIFG автоматически сбрасывается, когда перенос стартует. Если бит TBCCR0
CCIE установлен, флаг TBCCR0 CCIFG не запускает перенос.
Перенос запускается, когда устанавливается флаг URXIFG1. URXIFG1 автома- 1001 тически сбрасывается, когда перенос стартует. Если URXIE1 установлен, флаг
URXIFG1 не запускает перенос.
Перенос запускается, когда устанавливается флаг UTXIFG1. UTXIFG1 автоматичес- 1010 ки сбрасывается, когда перенос стартует. Если UTXIE1 установлен, флаг UTXIFG1
не запускает перенос.
1011 Перенос запускается, когда аппаратный умножитель готов для нового операнда.
1100 Перенос не запускается.
1101 Перенос не запускается.
Перенос запускается, когда устанавливается флаг DMAxIFG. DMA0IFG запускает 1110 канал 1, DMA1IFG запускает канал 2, а DMA2IFG запускает канал 0. Ни один из
флагов DMAxIFG автоматически не сбрасывается, когда перенос стартует.
1111 Перенос запускается внешним сигналом от DMAE0.
156 |
Библиотека Компэла |
|
Раздел VIII. |
Контроллер DMA |
8.2.4. Останов DMA-переносов
Есть два способа остановить выполняющийся DMA-перенос:
•Одиночный, блочный или пакетно-блочный перенос может быть остановлен NMI-прерыванием, если установлен бит ENNMI в регистре DMACTL1.
•Пакетно-блочный перенос может быть остановлен очисткой бита DMAEN.
8.2.5.Приоритеты каналов DMA
По умолчанию приоритеты DMA-каналов такие: DMA0-DMA1-DMA2. Если одновременно появляются или находятся в ожидании два или три сигнала запуска, первым завершает перенос (одиночный, блочный или пакетно-блочный перенос) канал с наивысшим приоритетом, затем канал со вторым приоритетом и в завершение канал с третьим приоритетом. Выполняющиеся переносы не приостанавливаются, если запускается перенос в канале с более высоким приоритетом. Канал с высшим приоритетом ожидает завершения выполняющегося переноса, и только затем стартует.
ПриоритетыDMA-каналовконфигурируютсяспомощьюбитаROUNDROBIN. Когда бит ROUNDROBIN установлен, низший приоритет получает канал, завершивший перенос. Последовательность приоритетов каналов всегда остается подобной 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 очищен, приоритеты каналов возвращается к приоритетам по умолчанию.
8.2.6. Длительность цикла DMA-переноса
Контроллер DMA нуждается в одном или двух тактовых циклах MCLK для синхронизации перед каждым одиночным переносом или полным блочным или пакетно-блочным переносом. Для переноса каждого байта/слова нужно два цикла MCLK после синхронизации и один цикл времени ожидания после переноса. Поскольку контроллер DMA использует MCLK, продолжительность цикла DMA определяется режимом работы MSP430 и установками системы тактирования.
Если источник MCLK активен, но ЦПУ выключено, контроллер DMA будет использовать источник MCLK для каждого переноса без включения ЦПУ. Если источник MCLK выключен, контроллер DMA временно перезапустит MCLK с
Библиотека Компэла |
157 |
|
MSP430x1xxFamily
тактированием от DCOCLK для выполнения одиночного переноса или полного блочного или пакетно-блочного переноса. ЦПУ остается выключенным, а после завершения переноса выключается MCLK. Максимальная длительность цикла DMA для всех режимов работы показана в таблице 8-3.
Таблица 8-3. Максимальная длительность цикла одиночного DMA-переноса
Режим работы ЦПУ |
Источник |
Максимальная продолжи- |
|
тактирования |
тельность цикла DMA |
||
Активный режим |
MCLK=DCOCLK |
4 цикла MCLK |
|
Активный режим |
MCLK=LFXT1CLK |
4 цикла MCLK |
|
Режим пониженного потребления |
MCLK=DCOCLK |
5 циклов MCLK |
|
LPM0/1 |
|||
Режим пониженного потребления |
MCLK=DCOCLK |
5 циклов MCLK + 6 мкС* |
|
LPM3/4 |
|||
Режим пониженного потребления |
MCLK=LFXT1CLK |
5 циклов MCLK |
|
LPM0/1 |
|||
Режим пониженного потребления LPM3 |
MCLK=LFXT1CLK |
5 циклов MCLK |
|
Режим пониженного потребления LPM4 |
MCLK=LFXT1CLK |
5 циклов MCLK + 6 мкС* |
|
* Дополнительные 6 мкС необходимы для запуска DCOCLK. Этот параметр в справочном руководстве называется t(LPMx).
8.2.7. Использование DMA с системными прерываниями
DMA переносы не прерываются системными прерываниями. Системные прерывания ожидают завершения переноса. Немаскируемые NMI-прерывания могут прервать работу DMA-контроллера, если установлен бит ENNMI.
Процедуры обработки системного прерывания прерываются DMA переносами. Если процедура обработки прерывания или какая-либо другая подпрограмма должны выполняться без прерываний, контроллер DMA необходимо отключить перед выполнением такой подпрограммы.
8.2.8. Прерывания контроллера DMA
Каждый канал DMA имеет собственный флаг DMAIFG. Каждый флаг DMAIFG устанавливается в любом режиме, когда соответствующий регистр DMAxSZ досчитывает до нуля. Если соответствующие биты DMAIE и GIE установлены, генерируется запрос прерывания.
Все флаги DMAIFG – источники только одного вектора прерывания контроллера DMA, а вектор прерывания общий с модулем DAC12. Программное обеспечение должно проверить флаги DMAIFG и DAC12IFG, чтобы определить источник прерывания. Флаги DMAIFG автоматически не сбрасываются и должны быть сброшены программно.
158 |
Библиотека Компэла |
|
Раздел VIII. |
Контроллер DMA |
8.2.9. Использование модуля I2C с контроллером DMA
Модуль I2C может стать источником двух условий запуска для контроллера DMA. Модуль I2C может запустить перенос, когда приняты новые данные I2C и когда появилась необходимость в передаче данных.
Биты TXDMAEN и RXDMAEN разрешают или запрещают использование контроллера DMA с модулем I2C. Когда RXDMAEN=1, контроллер DMA может быть использован для переноса данных из модуля I2C после приема данных модулем I2C. Когда RXDMAEN=1, RXRDYIE игнорируется и RXRDYIFG не генерирует прерывание.
Когда TXDMAEN=1, контроллер DMA может быть использован для переноса данных в модуль I2C для передачи. Когда TXDMAEN=1, TXRDYIE игнорируется и TXRDYIFG не генерирует прерывание.
8.2.10. Использование АЦП12 с контроллером DMA
Устройства MSP430 с интегрированным контроллером DMA могут автоматически перемещать данные из любого регистра ADC12MEMx в другое место. Переносы DMA выполняются без вмешательства ЦПУ и независимо от любого режима пониженного энергопотребления. Контроллер DMA увеличивает пропускную способность модуля АЦП12 и расширяет возможные сферы применения MSP430 в малопотребляющих приложениях, позволяя ЦПУ оставаться выключенным при выполнении переноса данных.
DMA переносы могут быть запущены от любого флага ADC12IFGx. Когда CONSEQx={0,2}, флаг ADC12IFGx для ADC12MEMx, используемого при преобразовании, может запустить DMA перенос. Когда CONSEQx={1, 3}, флаг ADC12IFGx для последнего в последовательности ADC12MEMx может запустить DMA перенос. Любой флаг ADC12IFGx автоматически очищается, когда контроллер DMA обращается к соответствующему регистру ADC12MEMx.
8.2.11. Использование ЦАП12 с контроллером DMA
Устройства MSP430 с интегрированным контроллером DMA могут автоматически перемещать данные в регистр DAC12_xDAT. Переносы DMA выполняются без вмешательства ЦПУ и независимо от любого режима пониженного энергопотребления. Контроллер DMA увеличивает пропускную способность модуля ЦАП12 и расширяет возможные сферы применения MSP430 в малопотребляющих приложениях, позволяя ЦПУ оставаться выключенным при выполнении переноса данных.
Приложения, в которых требуется генерировать периодические колебания, могут получить существенную выгоду от использования контроллера DMA с ЦАП12. Например, приложение, создающее синусоидальное колебание, может хранить значения синусоиды в таблице. Контроллер DMA способен авто-
Библиотека Компэла |
159 |
|
MSP430x1xxFamily
матически непрерывно переносить эти значения в ЦАП12 через заданные интервалы времени, создавая синусоиду при остановленном ЦПУ. Флаг DAC12IFG DAC12_xCTL автоматически очищается, когда контроллер DMA обращается к регистру DAC12_xDAT.
8.3. Регистры DMA
Перечень регистров DMA приведен в таблице 8-4.
Таблица 8-4. Регистры DMA
Регистр |
Краткое |
Тип |
Адрес |
Исходное |
|
обозначение |
регистра |
состояние |
|||
Регистр 0 управления DMA |
DMACTL0 |
Чтение/запись |
0122h |
Сбрасывается |
|
с POR |
|||||
Регистр 1 управления DMA |
DMACTL1 |
Чтение/запись |
0124h |
Сбрасывается |
|
с POR |
|||||
Регистр управления канала 0 DMA |
DMA0CTL |
Чтение/запись |
01E0h |
Сбрасывается |
|
с POR |
|||||
Регистр адреса источника |
DMA0SA |
Чтение/запись |
01E2h |
Не изменяется |
|
канала 0 DMA |
|||||
Регистр адреса получателя |
DMA0DA |
Чтение/запись |
01E4h |
Не изменяется |
|
канала 0 DMA |
|||||
Регистр объема переноса |
DMA0SZ |
Чтение/запись |
01E6h |
Не изменяется |
|
канала 0 DMA |
|||||
Регистр управления канала 1 DMA |
DMA1CTL |
Чтение/запись |
01E8h |
Сбрасывается |
|
с POR |
|||||
Регистр адреса источника |
DMA1SA |
Чтение/запись |
01EAh |
Не изменяется |
|
канала 1 DMA |
|||||
Регистр адреса получателя |
DMA1DA |
Чтение/запись |
01ECh |
Не изменяется |
|
канала 1 DMA |
|||||
Регистр объема переноса |
DMA1SZ |
Чтение/запись |
01EEh |
Не изменяется |
|
канала 1 DMA |
|||||
Регистр управления канала 2 DMA |
DMA2CTL |
Чтение/запись |
01F0h |
Сбрасывается |
|
с POR |
|||||
Регистр адреса источника |
DMA2SA |
Чтение/запись |
01F2h |
Не изменяется |
|
канала 2 DMA |
|||||
Регистр адреса получателя |
DMA2DA |
Чтение/запись |
01F4h |
Не изменяется |
|
канала 2 DMA |
|||||
Регистр объема переноса |
DMA2SZ |
Чтение/запись |
01F6h |
Не изменяется |
|
канала 2 DMA |
|||||
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) |
Библиотека Компэла |
|||||||
160 |
|||||||