alex1985 0 8 апреля, 2018 Опубликовано 8 апреля, 2018 · Жалоба Доброго всем времени суток! Есть stm32f4 и ПЛИС. Требуется реализовать оцифровку АЦП-сигнала с максимально возможной частотой и передать сигнал по параллельной шине в ПЛИС желательно без использования ресурсов МК, т.е. аппаратно. Для этого планирую настроить АЦП в режиме triple interleaved и посредством ДМА (режим DMA mode 1 - поправьте, если я не прав) складывать полученные данные в какую-нибудь переменную, скажем adc_val[3]. Далее посредством другого DMA отправлять данные adc_val на порт. Слышал, что это возможно, вопрос только в синхронизации, а именно: 1. Нужно ли синхронизировать DMA друг с другом, т.е. не получится ли ситуации, когда в момент обновления переменной adc_val первым DMA второй DMA попытается "забрать" эти данные и выведет непонятно что на порт. 2. Как обеспечить синхронный сбор данных на ПЛИС? ПЛИС тактируется с выхода MCO МК, поэтому МК желательно иметь сигнал тактирования забора данных, которых выдавался бы строго посредине времени вывода очередного АЦП показания на порт. Если я правильно понимаю, другой DMA должен запускаться по таймеру, работающему на частоте преобразования АЦП. Если так, то задача сводится к выводу ШИМ-сигнала, но как настроить этот таймер таким образом, чтобы генерация ШИМ-сигнала происходила бы строго посредине времени преобразования АЦП? Был бы очень признателен готовым примерам ADC triple interleaved mode. HAL не люблю, предпочитаю работать напрямую через регистры (но свою нелюбовь никому не навязываю :rolleyes: ) Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться