Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
374
Добавлен:
21.05.2015
Размер:
7.55 Mб
Скачать
    1. Транзакция dma

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

      1. Передача блока и повтор

Размер передаваемого блока задается через регистр счетчика байт при передаче блока и может быть любым из диапазона от 1 байта до 64 кбайт.

При необходимости задания количества повторов передач блоков до завершения транзакции, необходимо соответствующим образом настроить регистр счетчика повторов. Количество повторов может быть от 1 до 255 и неограниченным, если в регистр счетчика повторов записать нуль.

      1. Передача пакета

Поскольку ЦПУ AVR и DMA-контроллер используют общие шины данных, то передача блоков разделяется на передачи пакетов меньшего размера. Размер пакета может быть задан равным 1, 2, 4 или 8 байт. Это означает, что, если DMA-контроллер получит доступ к шине данных и отправит запрос на передачу, то он сможет занимать шину до тех пор, пока не завершится передача всех байт передаваемого пакета.

Задачей арбитра шины является управление доступом к шине для DMA-контроллера или ЦПУ AVR. Приоритет всегда отдается за ЦПУ. Это означает, что до тех пор, пока ЦПУ запрашивает доступ к шине, все остальные отправленные запросы на передачу пакетов будут ожидать освобождения шины. ЦПУ запрашивает доступ к шине при выполнении инструкций записи или чтения SRAM, памяти ввода-вывода, EEPROM и интерфейса внешней шины. Более детально об арбитраже доступа к шине см. в подразделе 4.5 "Память данных".

Рисунок 5.1. Транзакция DMA

    1. Запуск передачи

DMA-передачи стартуют только при условии обнаружения запроса на DMA-передачу. Запрос на передачу может быть инициирован программно, внешним источником (УВВ) или событием. Предусмотрена возможность раздельного выбора источника запуска передачи для каждого из DMA-каналов. Доступные источники запуска могут отличаться у разных МК, что зависит от фактического набора модулей и УВВ, присутствующих у МК. Попытка использования источника запуска передачи (полный перечень см. в 5.4.14 "TRIGSRC - источник запуска DMA-канала") для модуля и УВВ, которых нет в МК, не окажет никакого эффекта.

По умолчанию, источник запуска инициирует запуск передачи блока. Передача длится до завершения передачи одного блока, после чего канал будет ожидать появления очередного запуска и только после этого начнет передачу следующего блока. Предусмотрена возможность такой настройки, чтобы после запуска стартовала передача не блока, а пакета. Такая передача называется "single shot". Новый запуск инициирует старт передачи очередного пакета.

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

Соседние файлы в папке Архитектура ЭВМ