Перейти к содержанию
    

DMA stream & channel : what is what

Привет, коллеги.

Терзают смутные сомнения.. задача - вываливать одновременно в 2-3-4 канала SPI большие массивы данных.

В кубе настроил все DMA стримы, но вот ещё присутствует такое понятие, как каналы DMA. А они определяются неявно самим кубом. И могут совпадать для разной периферии.

Внимание, вопрос: не возникнет ли проблем при параллельной передаче во все каналы?

Камень F7x7, где х = 6, 7

Попадалась на глаза табличка с распределением каналов, но вот когда надо, её как раз не найти.

Почему спрашиваю, потому что были уже странности при одновременном включении DMA на SPI3 и USART2.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

image.thumb.png.883ec170b3b403ef88ea17081fb0d3ee.png

К одному стриму может быть подключен 1 канал в 1 момент времени. Канал - это конкретная линия конкретной периферии.

Какая периферия подключена к каким каналам - есть в RM, например, для DMA1

image.thumb.png.dac0a5ef62ea1809d872cf69bd96af4f.png

 

Разумеется, "одновременно" могут работать все стримы, но внутри 1 стрима может работать только 1 канал (до момента переинициализации, например).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

34 минуты назад, MrYuran сказал:

но вот ещё присутствует такое понятие, как каналы DMA

Это просто входные мультиплексоры запросов на передачу, т.е. какая периферия будет "пинать" этот поток.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, стало немного понятнее.

Но вот была такая ситуация, когда при передаче SPI3-DMA возникал DefaultHandler (unexpected interrupt), хотя все обработчики прерываний потоков присутствовали.

И продолжалось до тех пор, пока не отключил USART2. Что бы это могло быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, MrYuran сказал:

Но вот была такая ситуация, когда при передаче SPI3-DMA возникал DefaultHandler (unexpected interrupt), хотя все обработчики прерываний потоков присутствовали.

И продолжалось до тех пор, пока не отключил USART2. Что бы это могло быть?

А почему просто не поставить бряки на подозрительные вектора и найти проблему? Вместо того, чтобы играть в угадайку.

И странно - почему у вас в NVIC разрешены неиспользуемые вектора прерываний? Видимо проблема как раз в этом.

 

 

PS: к слову...

2 часа назад, Arlleex сказал:

К одному стриму может быть подключен 1 канал в 1 момент времени. Канал - это конкретная линия конкретной периферии.

У STM странная, доморощенная терминология в этом пункте. У всех других вендоров, с МК которых я работал (NXP, TI, Infineon) - понятие "DMA-канал" было то, что STM называет "stream". А то, что STM называет "канал", у остальных обычно называется "линия DMA-запроса".

И такие термины логичнее, чем терминология STM.

Да и сам ARM под "DMA-каналом" понимает, то же, что и большинство: https://developer.arm.com/documentation/ddi0417/a/Introduction/Terminology

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 11.10.2024 в 12:35, jcxz сказал:

А почему просто не поставить бряки на подозрительные вектора и найти проблему? Вместо того, чтобы играть в угадайку.

И странно - почему у вас в NVIC разрешены неиспользуемые вектора прерываний? Видимо проблема как раз в этом.

Да вот вроде все что можно сделал, идеи закончились. Сейчас немного подразобрал проект, но скоро новая итерация, там и посмотрю тщательнее.

В любом случае, всем спасибо за ответы. Немного успокоили

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, jcxz сказал:

PS: к слову...

У STM странная, доморощенная терминология в этом пункте. У всех других вендоров, с МК которых я работал (NXP, TI, Infineon) - понятие "DMA-канал" было то, что STM называет "stream".

У STM в одном поколении контроллеров написано так, в другом - этак... Вот, например, для F1

Цитата

DMA main features
 12 independently configurable channels (requests): 7 for DMA1 and 5 for DMA2
 Each of the 12 channels is connected to dedicated hardware DMA requests, software trigger is also supported on each channel. This configuration is done by software.
...

Но и DMA в них несколько разные, от слова - совсем не похожи. Но суть это мало меняет, на самом деле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 минут назад, Arlleex сказал:

Но и DMA в них несколько разные, от слова - совсем не похожи. Но суть это мало меняет, на самом деле.

Разные то разные, но понятия "channel" и "request" в них обозначают примерно одно и то же.

А STM отбился от общего стада.... в нетрадиционную ориентацию...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...