Поиск по сайту: |
|
По базе: |
|
Главная страница > Компоненты > Микроконтроллеры > MSP430 > Архитектура MSP430x1xx |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Контроллер DMAМодуль контроллера DMA переносит данные из одного адреса в другой без участия ЦПУ. Этот раздел описывает работу контроллера DMA. Контроллер DMA реализован в устройствах MSP430x15x и MSP430x16x. 8.1 Введение в контроллер DMA Контроллер прямого доступа к памяти (DMA) переносит данные из одного адреса в другой во всем адресном диапазоне без вмешательства ЦПУ. К примеру, контроллер DMA может переместить данные из памяти преобразования ADC12 в ОЗУ. Использование контроллера DMA может увеличить пропускную способность периферийных модулей. Также в результате его использования можно достигнуть снижения потребляемой системой мощности, позволяя ЦПУ оставаться в режиме пониженного энергопотребления без пробуждения для пересылки данных в/из периферии. Контроллер DMA обладает следующими возможностями:
Блок-схема контроллера DMA показана на рис.8.1.
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.2 Режимы переноса DMA Контроллер DMA имеет шесть режимов переноса:
Режим переноса в каждом канале DMA может индивидуально конфигурироваться с помощью битов DMADTx. Например, канал 0 может быть сконфигурирован в режиме одиночного переноса, в то время как канал 1 сконфигурирован в режиме пакетно-блочного переноса, а канал 2 работает в повторяющемся блочном режиме. Режим DMA-переноса конфигурируется независимо от режима адресации DMA. Любой режим адресации DMA может использоваться с любым режимом DMA-переноса. Диаграмма состояний DMA показана на рис.8.3.
Одиночный перенос Когда канал 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
Запуск по фронту Когда 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-переноса:
8.2.5 Приоритеты каналов DMA По умолчанию приоритеты DMA-каналов такие: DMA0-DMA1-DMA2. Если одновременно появляются или находятся в ожидании два или три сигнала DMA-запуска, первым завершает DMA-перенос (одиночный, блочный или пакетно-блочный перенос) канал с наивысшим приоритетом, затем канал со вторым приоритетом и в завершении канал с третьим приоритетом. Выполняющиеся DMA-переносы не приостанавливаются, если запускается перенос в DMA-канале с более высоким приоритетом. Канал с высшим приоритетом ожидает завершения выполняющегося DMA-переноса, а только затем стартует. Приоритеты DMA-каналов конфигурируются с помощью бита ROUNDROBIN. Когда бит ROUNDROBIN установлен, низший приоритет получает канал, завершивший DMA-перенос. Последовательность приоритетов DMA-каналов всегда остается подобной DMA0-DMA1-DMA2, например:
Когда бит 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
* Дополнительные 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
DMACTL0, регистр 0 управления DMA
DMACTL1, регистр 1 управления DMA
DMAxCTL, регистр управления DMA каналом x
DMAxSA, регистр адреса источника DMA
DMAxDA, регистр адреса получателя DMA
DMAxSZ, адресный регистр размера DMA
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|