poinr5217 0 6 декабря, 2022 Опубликовано 6 декабря, 2022 (изменено) · Жалоба С DMA на stm32 не работал, прошу ответить, кто пробовал или знает. планируется одновременная передачи и прием по SPI на максимальной скорости (60 mbit) через DMA из/в внешнюю SDRAM сразу по 2 разным каналам SPI будет ли при этом работать кэш ? полагаю что нет не будут ли DMAшки драться за доступ ? и как следствие падение скорости передачи через SPI...... Модератор: давайте как можно больше подробной информации. В т.ч. и в заголовке темы. Изменено 6 декабря, 2022 пользователем haker_fox Название темы уточнил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 6 декабря, 2022 Опубликовано 6 декабря, 2022 · Жалоба Какая STM, какие кэши, какая системная частота... конечно же, знать не нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
poinr5217 0 6 декабря, 2022 Опубликовано 6 декабря, 2022 (изменено) · Жалоба 8 minutes ago, Arlleex said: Какая STM, какие кэши, какая системная частота... конечно же, знать не нужно. планируется stm32h743 на 400 мГц и SDRAM 32бита Изменено 6 декабря, 2022 пользователем poinr5217 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 6 декабря, 2022 Опубликовано 6 декабря, 2022 · Жалоба 33 minutes ago, poinr5217 said: будет ли при этом работать кэш ? Нет, только FIFO SPI и DMA. 33 minutes ago, poinr5217 said: не будут ли DMAшки драться за доступ ? Непременно будут. Вопрос, к чему это приведет, т.е. хватит ли буферизации. Учитывая весьма скромные размеры FIFO, я бы предпочел проверить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 6 декабря, 2022 Опубликовано 6 декабря, 2022 · Жалоба 15 минут назад, aaarrr сказал: Непременно будут. Вопрос, к чему это приведет, т.е. хватит ли буферизации. Учитывая весьма скромные размеры FIFO, я бы предпочел проверить. 60 Mbit/s SPI это в худшем случае (8-битные данные) - 7.5 МГц запросов в DMA на одно событие. Суммарно с 2 SPI-контроллеров 30 МГц. DMA обычно молотит на частоте ядра, поэтому у DMA-контроллера в запасе 400/30 ~= 13 тактов. Если настроить FIFO SPI + FIFO DMA, да на пакетную передачу, да не лезть в SDRAM на время транзакций, то все должно пролезть)) Но проверить, действительно, стоит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Variant99 7 6 декабря, 2022 Опубликовано 6 декабря, 2022 · Жалоба Кэш чего? Ну то есть в каком модуле? 60 Мбит/с при 32-битной шине SDRAM - это 3,75 МГц запросов на два канала. При частоте SDRAM 133 МГц - это кот наплакал. Никаких конфликтов не будет возникать. Нужно просто настроить DMA так, чтобы на его входе он забирал данные в 32-битной разрядности, а отправлял в SPI в разрядности 8 или 16 бит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 6 декабря, 2022 Опубликовано 6 декабря, 2022 · Жалоба 2 minutes ago, Variant99 said: При частоте SDRAM 133 МГц Не умеет STM32 такую высокую частоту 🤣 10 minutes ago, Variant99 said: это кот наплакал Не сказал бы. Сколько тактов уйдет на транзакцию, если данные в разных банках? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 6 декабря, 2022 Опубликовано 6 декабря, 2022 · Жалоба Про DMA-контроллер в этом МК мануал обещает FIFO: Four-word depth 32 first-in, first-out memory buffers (FIFOs) per stream, that can be used in FIFO mode Также заявлена поддержка пакетных транзакций: Supports incremental burst transfers of 4, 8 or 16 beats. The size of the burst is software-configurable, usually equal to half the FIFO size of the peripheral Если всё это удастся задействовать, то пакетные транзакции SDRAM не должны быть страшны. И разрядность для канала доступа к ОЗУ тоже поставить на 32 бита. Только с чередованием байт разобраться. Т.е. - если писать/читать SDRAM не одиночными байтами, а пакетами макс.разрядности, то интерфейс с SDRAM не должен стать бутылочным горлышком. 41 минуту назад, aaarrr сказал: Не сказал бы. Сколько тактов уйдет на транзакцию, если данные в разных банках? Для пакетных транзакций DMA это не должно быть проблемой. Думаю - FMC-контроллер при пакетном доступе со стороны DMA, должен запускать пакетные транзакции по внешней шине. Да и несколько идущих подряд не-пакетных обращений должен преобразовывать в единую транзакцию. При возможности. 3 часа назад, aaarrr сказал: Нет, только FIFO SPI и DMA. Работать будет. Так как FMC имеет: Цитата Cacheable Read FIFO with 6 x64-bit depth (6 x14-bit address tag) for SDRAM controller. А значит - как минимум передающие каналы SPI могут обслуживаться из кеша FMC. PS: Но проверять надо. Так как на практике дел с этим МК не имел. Сужу только по мануалу, утверждать не берусь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться