Sl (15.06.2017 11:45, просмотров: 6158)
Вопрос по DMA для stm32f4/7. Явных запретов в документации я не нашел. Но и явных разрешений тоже. Может я не все прочитал или мой английский недостаточен :(
Есть DMA1 и DMA2. Для простоты без использования FIFO. SYSCLK = 216 МГц.
1. Могу ли я в случайном порядке запускать любое нужное мне количество потоков в одном DMA (например DMA2)?
Например: ADC1 -> memory, ADC2 -> memory, ADC3 -> memory. Иногда будут запущен только один поток, иногда два а иногда три.
2. Если будут запущены все три потока, будут ли данные от разных потоков идти вперемежку по мере их готовности с соблюдением приоритета
(ADC1_ch1 -> Адрес=11, ADC2_ch4 -> Адрес=24, ADC3_ch3 -> Адрес=33, ADC1_ch2 -> Адрес=12, ADC2_ch5 -> Адрес=25, ADC3_ch4 -> Адрес=34)
или пока не передан ВЕСЬ блок данных, например от ADC1, данные от ADC2 и ADC3 передаваться не будут.
3. Можно ли запустить одновременно разнонаправленные потоки в одном DMA?
Например, в DMA2 одновременно ADC1 -> memory, memory -> USART?
Я думаю, что все это можно. Иначе зачем было делать 8 потоков. Достаточно было бы одного.
Всем откликнувшимся большое спасибо!