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

 
 
> STM32F - прерывание от DMA раньше, чем ожидалось., Прерывание по завершении DMA передачи.
KnightIgor
сообщение Feb 22 2011, 12:53
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Добрый день мужики, а также немногочисленные дамы!

Имеем STM32F103RB.
Передаю периодически блок данных из памяти через USART (250kbps, 8 бит, 2 стоповых) посредством DMA в нормальном (не циклическом) режиме. Чтобы определить завершение передачи предыдущего пакета и начать следующий организовал прерывание по флагу DMA "Transfer Complete". Что я далее в прерывании делаю, пока не суть важно. Интересно то, что прерывание возникает не в момент, когда DMA засунул в USART последний байт, а раньше - когда предпоследний! Это я определил осциллографом, дергая в указаном прерывании отладочными ногами и наблюдая за передачей от USART: фронт возникает незадолго до того, как из USART начинает уходить предпоследний байт.

Конечно, раздел "Single byte communication", стр. 766 мануала RM0008, я читал. Там очевидно объяснено, что если USART было пустой, первые две следующие друг за другом быстрые записи в регистр данных USART возможны, т.к. флаг TXE возникает тут же и после первой записи. Однако в моем случае DMA передает довольно шибко пол-кило байтов, и к моменту прерывания USART еще возится в поте лица с предыдущими.

Это баг? Или я что проглядел?

Спасибо.

Сообщение отредактировал KnightIgor - Feb 22 2011, 12:54
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:10
Рейтинг@Mail.ru


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