MrYuran 27 7 часов назад Опубликовано 7 часов назад · Жалоба Привет, коллеги. Терзают смутные сомнения.. задача - вываливать одновременно в 2-3-4 канала SPI большие массивы данных. В кубе настроил все DMA стримы, но вот ещё присутствует такое понятие, как каналы DMA. А они определяются неявно самим кубом. И могут совпадать для разной периферии. Внимание, вопрос: не возникнет ли проблем при параллельной передаче во все каналы? Камень F7x7, где х = 6, 7 Попадалась на глаза табличка с распределением каналов, но вот когда надо, её как раз не найти. Почему спрашиваю, потому что были уже странности при одновременном включении DMA на SPI3 и USART2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 6 часов назад Опубликовано 6 часов назад · Жалоба К одному стриму может быть подключен 1 канал в 1 момент времени. Канал - это конкретная линия конкретной периферии. Какая периферия подключена к каким каналам - есть в RM, например, для DMA1 Разумеется, "одновременно" могут работать все стримы, но внутри 1 стрима может работать только 1 канал (до момента переинициализации, например). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 6 часов назад Опубликовано 6 часов назад · Жалоба 34 минуты назад, MrYuran сказал: но вот ещё присутствует такое понятие, как каналы DMA Это просто входные мультиплексоры запросов на передачу, т.е. какая периферия будет "пинать" этот поток. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 6 часов назад Опубликовано 6 часов назад · Жалоба Спасибо, стало немного понятнее. Но вот была такая ситуация, когда при передаче SPI3-DMA возникал DefaultHandler (unexpected interrupt), хотя все обработчики прерываний потоков присутствовали. И продолжалось до тех пор, пока не отключил USART2. Что бы это могло быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 239 4 часа назад Опубликовано 4 часа назад · Жалоба 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 1 час назад Опубликовано 1 час назад · Жалоба В 11.10.2024 в 12:35, jcxz сказал: А почему просто не поставить бряки на подозрительные вектора и найти проблему? Вместо того, чтобы играть в угадайку. И странно - почему у вас в NVIC разрешены неиспользуемые вектора прерываний? Видимо проблема как раз в этом. Да вот вроде все что можно сделал, идеи закончились. Сейчас немного подразобрал проект, но скоро новая итерация, там и посмотрю тщательнее. В любом случае, всем спасибо за ответы. Немного успокоили Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 11 минут назад Опубликовано 11 минут назад · Жалоба 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 в них несколько разные, от слова - совсем не похожи. Но суть это мало меняет, на самом деле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться