DMA для dsPIC. Контроллер Прямого доступа к памяти (DMA). DMA контроллер. Регистр Смещения Адреса Начала A DPSRAM Канала DMA x, страница 20

только Rx в режиме ведущего - В этой конфигурации, запрос DMA не будет выпущен, пока первый блок SPI данных не будет получен. Однако, в режиме ведущего, никакие данные не будут получены, до начала SPI передачи. Что бы Инициализировать передачи DMA, пользовательское приложение должно использовать режим Null Data Write DMA, и запускать DMA режимом Manual Transfer.

Rx и Tx в режиме ведущего - В этой конфигурации, запрос DMA не будет выпущен, пока первый блок SPI данных не будет получен. Однако, в режимеведущего, никакие данные не будут получены, пока SPI не передаст их. Для Инициализации передач DMA, приложение должно сначала отправить данные, используя режим Manual Transfer DMA, или оно должно сначала записать данные в буфер SPI (SPIxBUF) независимо от DMA.

Tx only in Slave mode – In this configuration, no DMA request is issued until the first block of SPI data is received. To initiate DMA transfers, the user application must first send data using the DMA Manual Transfer mode, or it must first write data into the SPI buffer (SPIxBUF) independently of the DMA.

Rx only in Slave mode – This configuration generates a DMA request as soon as the first SPI data has arrived, so no special steps need to be taken by the user to initiate DMA transfer.

Rx and Tx in Slave mode – In this configuration, no DMA request is issued until the first SPI data block is received. To initiate DMA transfers, the user application must first send data utilizing the DMA Manual Transfer mode, or it must first write data into the SPI buffer (SPIxBUF) independently of the DMA.

22.7.2 Starting DMA with the Data Converter Interface (DCI)

Unlike other serial peripherals, the DCI starts transmitting as soon as it is enabled (assuming it is the Master). It constantly feeds synchronous frames of data to the external codec to which it is connected. Before enabling the DCI you must:

• Configure the DCI as described in Section 22.5.2 “Peripheral Configuration Set Up” • If connected to a stereo codec, use DMA Manual Transfer mode to initiate the first two data transfers.

- Set the FORCE bit in the DMAxREQ register to transfer the DCI left channel sample,

- Set the FORCE bit for the second time to transfer the DCI right channel sample.

After these steps are completed, enable the DCI peripheral (see Пример 22-9).

22.7.3 Старт DMA с UART

Приемник UART выпускает запрос DMA, как только данные получены. Никакие специальные шаги не требуются приложению, чтобы инициализировать передачи DMA. Передатчик UART выпускает запрос DMA, как только разрешаются UART и передатчик. Это означает, что канал DMA и буфера должны быть инициализированы и разрешены перед UART и передатчиком.

Гарантируйте, что UART конфигурирован как описано в Разделе 22.5.2" Установка Конфигурации Периферии ” (Таблица 22-2).

Альтернативно, UART и передатчик UART можно разрешить прежде, чем канал DMA разрешен. В этом случае запрос DMA передатчика UART будет потерян, и пользовательское приложение должно выдать запрос DMA для запуска передач DMA, устанавливая бит FORCE в регистре DMAxREQ.

22.8 АРБИТРАЖ И ПЕРЕПОЛНЕНИЯ КАНАЛА DMA

Каждый канал DMA имеет фиксированный приоритет. Канал 0 самый высокий, а Канал 7 самый низкий.

Когда источник требует передачу DMA, запрос защелкивается соответствующим каналом DMA. Контроллер DMA действует как арбитр. Если никакая другая передача или обслуживание не требуется, контроллер предоставляет шинные ресурсы требуемому канау DMA. Контроллер DMA гарантирует, что никакому другому каналу DMA не предоставится любой ресурс пока текущий канал DMA не завершает операцию.

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