реклама на сайте
подробности

 
 
> STM32, работа с UART и DMA, как правильно передавать?
esaulenka
сообщение Jul 8 2014, 16:24
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Доброго дня.

Нужен совет по архитектуре типичнейшей задачи, как правильно соорудить передачу по UART.

Мы используем кучу уартов, работая через прерывания. Далее - копипаста по нескольким uart'ам, различающаяся только указателями на uart, и на буфер: обработчик прерывания, который перекладывает байты из софт-буфера (ну и наоборот, в буфер); API - функции "получить 1 байт", "передать 1 байт", "передать N байт".
Типичное использование на передачу - функция формирует пакет и налету скидывает его порциями в буфер.

Так вот, все примеры общения с DMA, что я видел - сформировать большой буфер, настроить DMA на его передачу, курить бамбук, пока всё не отработает.
С нашим API как-то не очень совместимо - постоянно останавливать-запускать DMA при добавлении в очередь ещё одного байта совсем плохо.

Я что-то пропустил, или передача по DMA на мою задачу никак не ложится?


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andrewlekar
сообщение Jul 9 2014, 05:51
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



DMA при работе с UART позволит вам снизить нагрузку на процессор при передаче больших объёмов данных. Если ресурсов процессора хватает или объём данных небольшой, то вам без DMA вполне можно обойтись. Отправляйте байт, в цикле дожидайтесь пустого передатчика, повторяйте.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 9 2014, 06:04
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(andrewlekar @ Jul 9 2014, 11:51) *
DMA при работе с UART позволит вам снизить нагрузку на процессор при передаче больших объёмов данных.

...либо снизить потребление электричества.

Цитата(andrewlekar @ Jul 9 2014, 11:51) *
Отправляйте байт, в цикле дожидайтесь пустого передатчика, повторяйте.

ЖЕСТЬ twak.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th August 2025 - 10:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016