Здравствуйте, уважаемые эмбеддеры!
На МК STM32f437 хочу реализовать следующую схему обработки данных:
1. Создаются данные в виде массива, объемом 2560 Байт (1280 слов для 16-битных ЦАП и АЦП).
2. Далее подключается DMA и передает данные по SPI в ЦАП. Скорость передачи не больше 5 Mbit/s. В результате частота следования импульса, созданного из 1280 отсчётов должна быть 100 Гц.
3. Сигнал с ЦАП проходит через 2 аналоговых тракта, где его встречают 2 последовательных АЦП и тоже 16-битных.
4. Естественно, одновременно с передачей хочу данные принимать от АЦП и записывать результат в массивы для дальнейшей обработки. И делать это через DMA.
Сейчас есть уже первая работающая плата. Там ЦАП висит на SPI1, а 2 АЦП на SPI4 и SPI5. Все 3 SPI обслуживаются одним DMA2:
SPI1_TX: DMA2, Str3, Ch3
SPI4_RX: DMA2, Str0, Ch4
SPI5_RX: DMA2, Str5, Ch7
Можно ли настроить DMA так, чтобы он работал и на передачу по одному каналу и на прием двух каналов или лучше подключить первый DMA или использовать вообще просто прерывания (чего не хотелось бы)?
Пока только проверял без DMA: работает ли вообще аналоговая часть? Работает и неплохо.
Цепочка STM32f437->DMA->SPI1->DAC->Аналоговая схема->ADC0; ADC1->SPI5; SPI4->DMA->STM32F437
.
Последний раз редактировалось Qic 19 май 2019, 19:37, всего редактировалось 1 раз.
-
- Сообщения: 1
- Откуда: Санкт-Петербург
Что же так резко?
Вот я и хочу узнать, можно ли одновременно с передачей через DMA, принимать через него же данные. Судя по ответу-вопросу, можно.
Вернуться в «Микроконтроллеры и ПЛИС»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость