Перейти к содержанию
    

MSP430 USART + DMA

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

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

 

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

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

- надежность

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

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

 

ps-ps-ps

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

 

Изменено пользователем 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 ?

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

Изменено пользователем k155la3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

. . . .

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

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

 

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

 

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

 

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

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

 

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

 

Изменено пользователем k155la3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Изменено пользователем Obam

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...