Jump to content
    

MSP430 USART + DMA

Для обеспечения асинхронности передачи по USART

использую DMA (MSP430F5438A). Операционной системы нет.

 

Какие есть отзывы по этому режиму, если кто использует.

- удобстово работы

- надежность

- отсутствие глюков (в разрезе errata и прочих).

- использование DMA0, DMA1 для USART1, USART2 (т.е. одновременная работа на 2 каналах DMA)

 

ps-ps-ps

- работа с подключенным отладчиком (MSP430FET-UIF) - есть ли ограничения по конфликтности с DMA

 

Edited by k155la3

Share this post


Link to post
Share on other sites

Итак, "по одному" в MSP340F5438A все работает так как и ожидалось

DMA0 --> USART_1 (только передача, без приема)

DMA1 --> USART_2 (только передача, без приема)

Прерывания от обоих USART запрещены. Вектор прерывания от DMA - "пустышка" без кода.

 

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

то идут глючки по выдаваемой информации (контроль в HEX на терминалка PC).

 

(?) 1.

-----------

Допустимо ли стартовать более 1 канала DMA одновременно ?

(в том смысле, не будет ли конфликта по доступу к RAM)

 

(?) 2.

-----------

Требуется ли устаналивать режим Round Robin в настройках DMA

(в данном случае, когда запускаются 2 канала "в параллель")

Когда нужна эта установка ?

 

(?) 3.

-----------

Есть ли у Ti, или где-либо, пример работы (настройки) для одновременной работы 2 каналов DMA ?

(То, что есть в стандартных примерах - для одного канала)

Edited by k155la3

Share this post


Link to post
Share on other sites

Допустимо. Но работать будут согласно приоритету. "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" нужен чтобы приоритет каналов "менялся" от высшего к низшему "по кругу" с каждым циклом обмена. Вам нужно?

Share this post


Link to post
Share on other sites

Допустимо. Но работать будут согласно приоритету.

. . . .

"Round Robin" нужен чтобы приоритет каналов "менялся" от высшего к низшему "по кругу" с каждым циклом обмена. Вам нужно?

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

 

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

 

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

 

Хотелость бы "по максимуму" перебросить операции на периферию.

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

 

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

 

Edited by k155la3

Share this post


Link to post
Share on other sites

"Будет ожидать" и "не запустится", согласитесь, не одно и то же.

 

Последние два предложения из того, что было зацитировано.

Edited by Obam

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...