Доброе утро,
Мы используем STM32H7 для одновременного получения 3-х каналов АЦП 16-бит при 5MSPS, и мы храним данные во внешней eMMC. Все стоит без проблем, как следует:
3 подчиненных SPI с 3 DMA на внутренние буферы триггера / флопа; MDMA для чередования данных в 2 буфера eMMC триггера; IDMA периферийного SDMMC для eMMC.
У нас есть некоторые неожиданные времена ожидания, введенные eMMC, которые требуют внутренней буферизации данных больше, чем ожидалось, и, поскольку у нас недостаточно внутренней памяти для буферизации во время ожидания eMMC (и мы не можем добавить внешнюю память на FMC или nvSRAM на Quad -SPI, ... из-за ограничений интеграции), мы рассмотрели использование MDMA с внутренней флэш-памятью для временной буферизации данных.
Это такая плохая идея? FLASH на STM32H7 разделен на 2 банка, первый можно использовать для памяти программ (чтобы не было конфликтов и остановок процессора при доступе к DMA), и есть 2 контроллера AXI, MDMA также является периферийным устройством AXI ... Возможно, чрезмерная медлительность ? Кто-нибудь из вас когда-нибудь пробовал это?
Как мы читаем справочное руководство (глава 13: Контроллер MDMA (MDMA)):
Основной прямой доступ к памяти (MDMA) используется для обеспечения высокоскоростной передачи данных между памятью и памятью или между периферийными устройствами и памятью. Данные могут быть быстро перемещены MDMA без каких-либо действий процессора. Это сохраняет ресурсы ЦП свободными для других операций.
Но MDMA может перемещать данные только из AXI в AHB или из AHB в AXI, но не из AXI в AXI?
С наилучшими пожеланиями,
Клеман