В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > ARM
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


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

23.3.1 Конфигурация

Интерфейс работы с каналами PDC позволяет конфигурировать и управлять пересылкой данных по каждому каналу. Обращение к каналу PDC контроллера производится через область обращения к периферийному модулю (со смещением 0х100).

Для одного периферийного модуля отводится четыре 32-х битных регистра-указателя (RPR, RNPR, TPR и TNPR) и четыре 16-ти разрядных регистра-счетчика (RCR, RNCR, TCR и TNCR).

Размер буфера (количество пересылок) устанавливается внутренним 16-ти битным регистром счетчика пересылок. В любой момент можно прочесть количество пересылок, оставшихся для каждого канала.

Базовый адрес памяти устанавливается 32-х битным указателем памяти указанием первого адреса доступа к памяти. В любой момент можно прочесть расположение в памяти следующей пересылки и количество оставшихся пересылок. Контроллер PDC имеет специальные регистры статуса, показывающие доступна или нет пересылка для каждого канала. Состояние каждого канала (пересылка разрешена/запрещена) определяется статусным регистром периферийных модулей. Пересылка может быть разрешена и/или запрещена установкой флагов TXTEN/TXTDIS и RXTEN/RXTDIS в регистре контроля пересылки (Transfer Control Register) контроллера PDC. Эти управляющие биты разрешают чтение регистров указателей и счетчиков без риска их изменения.

Контроллер PDC выставляет флаги статуса (ENDRX, ENDTX, RXBUFF и TXBUFE) периферийных модулей, читаемые через их статусные регистры.

Флаг ENDRX устанавливается, когда регистр PERIPH_RCR достигает нуля.

Флаг RXBUFF устанавливается, когда оба регистра PERIPH_RCR и PERIPH_RNCR достигают нуля.

Флаг ENDTX устанавливается, когда регистр PERIPH_TCR достигает нуля.

Флаг TXBUFE устанавливается, когда оба регистра PERIPH_TCR и PERIPH_TNCR достигают нуля.

Эти статусные флаги описываются в регистре статуса периферийного модуля.

23.3.2 Указатели памяти

Каждый периферийный модуль подключается к контроллеру PDC через приемный и передающий канал. Каждый канал имеет встроенный 32-х битный указатель памяти. Каждый указатель памяти указывает на позицию в любой части пространства памяти (встроенной памяти или внешней памяти, подключаемой через шинный интерфейс).

В зависимости от типа пересылки (байт, полслова или слово) указатель памяти увеличивается на 1, 2 или 4 соответственно для каждого типа пересылки.

Если указатель памяти изменен во время работы PDC контроллера, адрес пересылки изменяется и PDC контроллер начинает пересылку, используя новый адрес.

23.3.3 Счетчики пересылок

Для каждого канала имеется 16-ти битный счетчик пересылок, используемый для подсчета размера уже переданного блока по данному каналу. Эти счетчики автоматически декрементируются после каждой пересылки данных. По достижению нуля счетчиком пересылка завершается и PDC контроллер прекращает передачу данных.

Если следующий регистр-счетчик равен нулю, PDC отключает триггер во время активации флага окончания пересылки по соответствующему периферийному модулю.

Если счетчик изменен во время работы PDC контроллера, число пересылок изменяется и PDC контроллер подсчитывает пересылки, используя новое значение.

Программирование вторых регистров счетчиков/указателей позволяет организовать непрерывность буферов. Счетчики декрементируются после каждой пересылки данных, как описано выше. Но как только счетчик пересылок достигает нуля, значения 2-рых счетчиков/указателей загружаются в регистры счетчиков/указателей.

В каждом канале имеются два статусных флага, индицирующих окончание текущего буфера (ENDRX, ENDTX) и окончание обоих текущего и следующего буферов (RXBUFF, TXBUFE). Эти флаги непосредственно отображены в периферийный статусный регистр и могут формировать запросы прерываний для контроллера прерываний AIC.

Эти флаги автоматически сбрасываются при записи в любой из регистров-счетчиков.

Примечание: После переноса значения из 2-го регистра-счетчика в основной регистр-счетчик 2-ой регистр-счетчик очищается.

23.3.4 Пересылка данных

Периферийные триггеры PDC производят пересылку, используя сигналы передачи (TXRDY) и приема (RXRDY).

При получении периферийным модулем внешних данных (первого символа) формируется сигнал готовности приема для PDC, производящий запросы доступа к системной шине. После получения доступа, PDC начинает чтение периферийного регистра приема (Receive Holding Register) RHR а затем производит запись в память. После каждой пересылки соответствующий указатель памяти инкрементируется, а число оставшихся пересылок декрементируется. После достижения размера блока памяти посылается сигнал к периферийному модулю и пересылка прекращается.

Для передающей пересылки, процедура аналогична, только в обратном порядке.

23.3.5 Приоритеты запросов пересылок

Контроллер DMA обрабатывает запросы пересылок по каждому каналу согласно приоритетам.

Если одновременно поступают запросы одного типа (прием или передача), приоритет определяется номером периферийного модуля.

Если запросы пересылок поступают не одновременно, то они обрабатываются в порядке поступления. Запросы приемников обрабатываются в первую очередь.



<--Предыдущая страница Оглавление Следующая страница -->