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

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

MPLAB ® C30 компилятор упрощает инициализацию буфера DMA и доступ, обеспечивая встроенные примитивы Языка C для той цели. Например, код в Рисунке22-6 распределяет два буфера в памяти DMA и инициализирует канал DMA, чтобы указать на них.

Figure 22-6: Primary and Secondary DMA Buffer Allocation with MPLAB® IDE

Обратите внимание: MPLAB LINK30 компоновщик распределяет первичные и вторичные буфера в обратном порядке, начиная снизу пространства памяти DMA.

Если DMAxSTA (и/или DMAxSTB) регистр инициализирован к значению, которое приведет к каналу DMA читающие или пишущие адреса RAM вне DMA, которого пространство RAM, канал DMA пишет этому адресу памяти, игнорируются. чтения канала DMA от этого адреса памяти приводят к чтению ‘0’.

22.5.4 Установка Счетчика Передачи  DMA

В четвертом шаге процесса установки DMA, каждый канал DMA должен быть запрограммирован, чтобы обслужить N + 1 число запросов прежде, чем пересылка блока данных закончится. Значение ‘N’ определяется программированием регистра Счетчика Передачи Канала DMA x (DMAxCNT). То есть значение DMAxCNT ‘0’ передаст  один элемент.

Значение регистра DMAxCNT независимо от размера передаваемых данных (байт или слово), который определен в бите SIZE в регистре DMAxCON.

Если регистр DMAxCNT инициализирован к значению, которое приведет к чтению или записи адреса вне пространства RAM DMA канала DMA, записи канала DMA по этому адресу памяти, игнорируются. чтения канала DMA из этого адреса памяти приводят к чтению ‘0’.

22.5.5 Установка Режима операций

Пятый и заключительный шаг установки DMA должен определить режим работы для каждого канала DMA, формируя регистр Управления Канал DMA x (DMAxCON). См. Раздел 22.6" Режимы операций DMA для определенной информации установки.

22.6 РЕЖИМЫ ОПЕРАЦИЙ DMA

Канал DMA поддерживает режимы работы:

• Word или Байт передача данных

• направление Передачи (периферийное устройство к DPSRAM, или DPSRAM на периферийное устройство)

• прерывание Полной или половинной передачи

• Постприращение или статическая адресация DPSRAM

• Периферийная Косвенная Адресация

• Однократные или непрерывные пересылки блоков

• Автопереключение между двумя стартовыми адресами смещения (DMAxSTA или DMAxSTB) после окончания каждой передачи (режим Ping-Pong)

• режим Null Data Write

Дополнительно, DMA поддерживает ручной режим, который вынуждает одиночную передачу DMA.

22.6.1 Передача данных байтами или словами

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

Если бит SIZE (DMAxCON <14>) - сброшен, данные передаются словами. Если разрешается Регистровый косвенный Способ адресации с Постприращением, адрес постувеличивается на 2 после передачи каждого слова (см. Раздел 22.6.5" Регистр, косвенный Без Способа адресации Постприращения”).

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

22.6.2 Направление передачи

Каждый канал DMA может быть конфигурирован для передачи  данных от периферийного устройства к DPSRAM или с DPSRAM на периферийное устройство.

Если бит Направления Передачи  (DIR) в DMAxCON сброшен данные читаются из периферийного устройства (используя Адрес Периферии, определенный DMAxPAD) и записываются в адрес DPSRAM со смещением адреса памяти DMA (используя DMAxSTA или DMAxSTB).