Что такое DMA?
DMA, полное название - Direct Memory Access, то есть прямой доступ к памяти. DMA передает данные копирования из одного адресного пространства в другое, обеспечивая высокоскоростную передачу данных между периферийными устройствами и памятью или между памятью и памятью.
Роль DMA заключается в реализации прямой передачи данных, что устраняет традиционную передачу данных, требующую участия регистров ЦП. В основном это связано с передачей данных в четырех случаях, но они по сути одинаковы, и все они передаются из определенной области памяти в память. Другая область (регистр данных периферийного устройства по сути является единицей хранения памяти).
Передача данных для четырех случаев выглядит следующим образом
:peripherals to memorymemory to peripheralmemory to memoryperipheral to peripheral Параметры передачи DMA
Для передачи данных основными параметрами, необходимыми для DMA, являются следующие четыре:
1. Исходный адрес data
2. Адрес назначения места передачи данных
3. Какой объем данных передается?
4. Режим передачи количества выполненных
Когда пользователь устанавливает параметры, в основном включающие адрес источника, адрес назначения и объем передаваемых данных, контроллер DMA начнет передачу данных. Когда оставшийся объем передаваемых данных равен 0, передача завершается и передача DMA завершается.
Конечно, DMA также имеет циклический режим передачи. При достижении конца передачи передача DMA перезапускается. То есть до тех пор, пока объем оставшихся передаваемых данных не равен 0 и DMA включен, передача данных будет происходить.
Основные возможности DMA
1. На одном и том же DMA-модуле программным программированием может быть установлен приоритет среди множества запросов (всего существует четыре уровня: очень высокий, высокий, средний и низкий), а при равенстве настроек приоритета он определяется аппаратным обеспечением (запрос 0 имеет приоритет над запросом 1 и т. д.);
2. Ширина передачи (байт, полуслово, полное слово) независимого источника данных и целевой области данных, имитирующая процесс упаковки и распаковки. Исходный и конечный адреса должны быть выровнены по ширине передачи данных;
4. Поддержка кругового управления буфером;
5. Каждый канал имеет 3 флага событий (половинная передача DMA, завершение передачи DMA и ошибка передачи DMA), эти 3 флага событий логически ИЛИ становятся отдельным запросом на прерывание;
5. Передача между памятью и памятью, периферийными устройствами и памятью, а также передача между памятью и периферийным устройством;
6. В качестве источника и цели доступа могут использоваться флэш-память, SRAM, SRAM периферийных устройств, периферийных устройств APB1, APB2 и AHB;
7. Программируемый номер передачи данных: максимальный 65535.
метод передачи DMA
Способ 1: DMA_Mode_Normal, нормальный режим.Когда передача данных DMA завершена, передача DMA останавливается, то есть выполняется только одна передача.
Способ 2: DMA_Mode_Circular, циклический режим передачи.
Когда передача закончится, аппаратное обеспечение автоматически перезагрузит регистр объема передаваемых данных для следующего раунда передачи данных. То есть режим многократной передачи.