STM32 DMA (одновременный поток, FIFO, режим пакета, двойной буфер)

StackOverflow https://stackoverflow.com//questions/24051720

  •  21-12-2019
  •  | 
  •  

Вопрос

DMA для серии STM32F4 имеет некоторые расширенные функции, могли бы я попросить уточнения здесь?

    .
  • Одновременный поток: могут ли два потока передавать данные одновременно? Так как одна передача байтов разрешена. Если ширина шины составляет 32бит, возможна 4 одновременной передачи. Кстати, какая ширина шины AHB для STM32?

  • fifo Режим: Если параллельная передача невозможна, я думаю, что FIFO может быть использован здесь. FIFO поможет подождать данные, готовые с периферийных устройств с низкой скоростью до DMA, не занимая автобус AHB. Когда определенное количество данных готовы, кусок данных будет отправлен на память вместе. Является ли мое понимание правильно?

Четыре слова Глубина 32 Первоначально, Первоначальные буферы памяти (FIFO) на поток

Что это значит? Сколько данных можно хранить в FIFO? 4 или 4 * 32?

    .
  • beart mode: Что на самом деле делает режим пакета? Он говорит, что в таблице данных можно передавать 65535 данных. Каково соотношение между 65535 с режимом пакета?

  • Режим двойного буфера:

Двухместный буферные транзакции типа: двойные буферные переводы с использованием двух
Указатели памяти для памяти (пока DMA считывает / запись / запись Из / в буфер, приложение может написать / читать в / с другого
буфер). ----- Из справочного руководства STM32F4

Мой вопрос: во время передачи DMA шина AHB недоступна для Cortex M4, как приложение прочитано с другого буфера?

Это было полезно?

Решение

После выполнения некоторых исследований, вот то, что я нашел, если кому-то может это понадобиться.

    .
  • Одновременный поток: невозможно в одном DMA. Возможно иметь DMA1, DMA2 работает одновременно. Например: F427 может сделать одновременно:

      .
    • CPU доступ к Flash (код чтения)
    • dma1 Доступ к sram (для передачи некоторых буферов)
    • dma2 Доступ к SDRAM (другой буфер)
  • fifo используется для временного хранения данных с низкоскоростного устройства. Когда накоплено определенное количество данных, можно отправить пакет, чтобы сохранить ресурс AHB. Поскольку когда AHB используется DMAC, он не может быть использован процессором. FIFO имеет 4 * 32 бит. Он может быть настроен как 16 * 8 бит (16 * 0ne Byte).

  • Режим пакета: кусок данных поступает непрерывно, скажем, скажем, память. AHB будет занят только тогда, когда отправляется пакет. Режим пакета используется для экономии ресурса AHB. Это не связано с ограничением размера данных 65535.
  • Двойной буфер: Как уже говорится ранее, AHB занимает только при передаче данных. Следовательно, процессор все еще может получить данные из памяти, когда DMA не занимает AHB.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top