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