Контроллер DMA
Модуль контроллера DMA переносит данные из одного адреса в другой без участия ЦПУ. Этот раздел описывает работу контроллера DMA. Контроллер DMA реализован в устройствах MSP430x15x и MSP430x16x.
8.1 Введение в контроллер DMA
Контроллер прямого доступа к памяти (DMA) переносит данные из одного адреса в другой во всем адресном диапазоне без вмешательства ЦПУ. К примеру, контроллер DMA может переместить данные из памяти преобразования ADC12 в ОЗУ.
Использование контроллера DMA может увеличить пропускную способность периферийных модулей. Также в результате его использования можно достигнуть снижения потребляемой системой мощности, позволяя ЦПУ оставаться в режиме пониженного энергопотребления без пробуждения для пересылки данных в/из периферии.
Контроллер DMA обладает следующими возможностями:
- Три независимых канала переноса;
- Конфигурируемые приоритеты каналов DMA;
- Необходимо только два тактовых цикла MCLK;
- Возможен перенос байтов, слов или смешанно байтов/слов;
- Размер блока до 65535 байт или слов;
- Выбор конфигурируемых триггеров (условий запуска) переноса;
- Возможность выбора условия запуска переноса: по фронту/спаду или по уровню;
- Четыре режима адресации переноса;
- Одиночный, блочный или пакетно-блочный режимы переноса.
Блок-схема контроллера DMA показана на рис.8.1.
Рис.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-перенос может быть таким: байт-байт, слово-слово, байт-слово или слово-байт. Когда выполняется перенос слово-байт, перемещается только младший байт слова-источника. Когда выполняется перенос байт-слово, старший байт слова-получателя очищается, когда происходит перемещение.
Рис.8-2. Режимы адресации DMA
8.2.2 Режимы переноса DMA
Контроллер DMA имеет шесть режимов переноса:
- Одиночный перенос;
- Блочный перенос;
- Пакетно-блочный перенос;
- Повторяющийся одиночный перенос;
- Повторяющийся блочный перенос;
- Повторяющийся пакетно-блочный перенос.
Режим переноса в каждом канале DMA может индивидуально конфигурироваться с помощью битов DMADTx. Например, канал 0 может быть сконфигурирован в режиме одиночного переноса, в то время как канал 1 сконфигурирован в режиме пакетно-блочного переноса, а канал 2 работает в повторяющемся блочном режиме. Режим DMA-переноса конфигурируется независимо от режима адресации DMA. Любой режим адресации DMA может использоваться с любым режимом DMA-переноса.
Диаграмма состояний DMA показана на рис.8.3.
* Биты 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
Зарезервировано |
DMA2TSELx |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
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
r-0 |
r-0 |
r-0 |
r-0 |
r-0 |
r-0 |
r-0 |
r-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
Зарезер вировано |
DMADTx |
DMADSTINCRx |
DMASRCINCRx |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(0) |
rw-(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
DMAxSAx |
Биты 15-0 |
Адрес DMA источника. Регистр адреса источника указывает адрес источника DMA для одиночных переносов или первый адрес источника для блочных переносов. Регистр адреса источника остается неизменным во время блочных или пакетно-блочных переносов. |
DMAxDA, регистр адреса получателя DMA
DMAxDAx |
Биты 15-0 |
Адрес DMA получателя. Регистр адреса получателя указывает адрес получателя DMA для одиночных переносов или первый адрес получателя для блочных переносов. Регистр DMAxDA остается неизменным во время блочных или пакетно-блочных переносов. |
DMAxSZ, адресный регистр размера DMA
DMAxSZx |
Биты 15-0 |
Размер DMA. Регистр размера DMA определяет количество данных при переносе блока. Регистр DMAxSZ декрементируется при каждом переносе слова или байта. Когда DMAxSZ декрементируется до нуля, в него немедленно автоматически перезагружается предыдущее значение инициализации.
00000h Перенос запрещен
00001h Перенос одного байта или слова
00002h Перенос двух байт или слов
.
.
0FFFFh Перенос 65535 байт или слов |
|