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