Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MSP430 USART + DMA
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
k155la3
Для обеспечения асинхронности передачи по USART
использую DMA (MSP430F5438A). Операционной системы нет.

Какие есть отзывы по этому режиму, если кто использует.
- удобстово работы
- надежность
- отсутствие глюков (в разрезе errata и прочих).
- использование DMA0, DMA1 для USART1, USART2 (т.е. одновременная работа на 2 каналах DMA)

ps-ps-ps
- работа с подключенным отладчиком (MSP430FET-UIF) - есть ли ограничения по конфликтности с DMA
Obam
Давно (лет 6 назад) на F47177 DMA с USARTом использовал. Вопросов не было.
k155la3
Итак, "по одному" в MSP340F5438A все работает так как и ожидалось
DMA0 --> USART_1 (только передача, без приема)
DMA1 --> USART_2 (только передача, без приема)
Прерывания от обоих USART запрещены. Вектор прерывания от DMA - "пустышка" без кода.

Когда я (не столько по наивности, сколько "а вдруг") запускаю их оба (разремливаю не использовавшийся код для второго канала)
то идут глючки по выдаваемой информации (контроль в HEX на терминалка PC).

(?) 1.
-----------
Допустимо ли стартовать более 1 канала DMA одновременно ?
(в том смысле, не будет ли конфликта по доступу к RAM)

(?) 2.
-----------
Требуется ли устаналивать режим Round Robin в настройках DMA
(в данном случае, когда запускаются 2 канала "в параллель")
Когда нужна эта установка ?

(?) 3.
-----------
Есть ли у Ti, или где-либо, пример работы (настройки) для одновременной работы 2 каналов DMA ?
(То, что есть в стандартных примерах - для одного канала)
Obam
Допустимо. Но работать будут согласно приоритету. "If two or three triggers happen
simultaneously or are pending, the channel with the highest priority completes its transfer (single, block, or
burst-block transfer) first, then the second priority channel, then the third priority channel. Transfers in
progress are not halted if a higher-priority channel is triggered. The higher-priority channel waits until the
transfer in progress completes before starting."

"Round Robin" нужен чтобы приоритет каналов "менялся" от высшего к низшему "по кругу" с каждым циклом обмена. Вам нужно?
k155la3
Цитата(Obam @ Nov 10 2016, 17:26) *
Допустимо. Но работать будут согласно приоритету.
. . . .
"Round Robin" нужен чтобы приоритет каналов "менялся" от высшего к низшему "по кругу" с каждым циклом обмена. Вам нужно?

Спасибо за инф.

Я так понял, что пока не выполнится одна блочная передача, другая не запустится ?

Или надо включать Round Robin. Надо с этим заморачиваться или нет - пока не решил.

Хотелость бы "по максимуму" перебросить операции на периферию.
Пока на эксперименты времени нет. Разрулим на программном уровне, чтобы запуск DMA каналов не перекрывался.

ps - у меня запросы на DMA0 DMA1 шли полностью асинхронно, и гарантированно могли наложится.
Obam
"Будет ожидать" и "не запустится", согласитесь, не одно и то же.

Последние два предложения из того, что было зацитировано.
k155la3
Ok.
Спасибо. Будем попробовать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.