1. 1
ПРЯМОЙ ДОСТУП К ПАМЯТИ
1. Модуль DMA
2. Регистры DMA
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
2. 2
1. Модуль DMA.
Многие микроконтроллеры имеют встроенный
блок прямого доступа к памяти (ПДП), именуемый
в англоязычной литературе как Direct Memory
Access (DMA).
Блок DMA позволяет
• обеспечить высокоскоростную передачу
данных между внешними устройствами и
памятью микроконтроллера
• передачу данных типа память-память без
участия процессора.
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
3. 3
Сформировать задание блоку DMA в виде начала
буфера в памяти с указанием количества байтов
этого буфера для передачи в регистр
последовательного порта по мере его готовности.
После передачи всех данных из буфера, DMA с
помощью флага сообщит об этом процессору.
Таким образом, процедура обслуживания запроса от
компьютера по последовательному порту будет
выполнена блоком DMA, что защитит процессор от
перегрузки.
Микроконтроллеры серии STM32 также имеют два
независимых блока DMA: DMA1 и DMA2, каждый из
которых имеет 8 независимых каналов.
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
5. 5
Контроллер DMA выполняет прямую передачу
памяти:
• из периферии в память
• из памяти в периферию
• из памяти в память
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
10. 10
Выбор канала
Каждый поток связан с запросом DMA, который может быть
выбран из 8 возможных запросов канала. Выбор
контролируется битами CHSEL [2: 0] в регистре DMA_SxCR.
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
13. 13
Приоритеты управляются в два этапа:
• Программное обеспечение: каждый приоритет
потока может быть настроен в регистре DMA_SxCR.
Существует четыре уровня:
- Очень высокий приоритет
- Высокий приоритет
- Средний приоритет
- Низкий приоритет
• Аппаратное обеспечение. Если два запроса имеют
одинаковый уровень приоритета программного
обеспечения, поток с более низким номером имеет
приоритет над потоком с более высоким номером.
Например, Stream 2 имеет приоритет над Stream 4.
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
14. 14
2. Регистры DMA.
DMA low interrupt status register (DMA_LISR)
DMA high interrupt status register (DMA_HISR)
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
15. 15
DMA low interrupt flag clear register (DMA_LIFCR)
DMA high interrupt flag clear register (DMA_HIFCR)
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
16. 16
DMA stream x configuration register
DMA stream x number of data register (DMA_SxNDTR) (x = 0..7)
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
17. 17
DMA stream x peripheral address register (DMA_SxPAR) (x = 0..7)
DMA stream x memory 0 address register (DMA_SxM0AR)
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады
18. 18
DMA stream x memory 1 address register (DMA_SxM1AR)
DMA stream x FIFO control register (DMA_SxFCR)
Камлач П.В. Праграмна-кіраваныя
мікракантролерныя прылады