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

 
 
> DMA Circular и глобальный счетчик принятых данных
Balabes
сообщение Nov 28 2014, 11:27
Сообщение #1


Участник
*

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



Здравствуйте!
Хочется, но не можется пока что реализовать глобальный счетчик.
Поясняю, включается ДМА и начинает забирать с УАРТа в массив (допустим DMA_BufferSize= 50), счетчик ДМА начинает уменьшаться с каждым принятым байтом на 1.
Все это происходит в режиме Circular, т.е. дойдя до 0 ДМА начнет переписывать массив с начала и счетчик снова станет = 50.
Хотелось бы Глобальный счетчик, так что бы считал не кол-во байт до конца (как стандартно делает ДМА) а общее кол-во принятых.
Пытался в прерывании по USART RXNE считать, но как я понял проц не выходит из прерывания, хотя флаг должен чистить ДМА при чтении из USART->DR.
Может кто-то так делал?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
DmitryM
сообщение Nov 28 2014, 14:02
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(Balabes @ Nov 28 2014, 14:27) *
Здравствуйте!
Хочется, но не можется пока что реализовать глобальный счетчик.
Поясняю, включается ДМА и начинает забирать с УАРТа в массив (допустим DMA_BufferSize= 50), счетчик ДМА начинает уменьшаться с каждым принятым байтом на 1.
Все это происходит в режиме Circular, т.е. дойдя до 0 ДМА начнет переписывать массив с начала и счетчик снова станет = 50.
Хотелось бы Глобальный счетчик, так что бы считал не кол-во байт до конца (как стандартно делает ДМА) а общее кол-во принятых.
Пытался в прерывании по USART RXNE считать, но как я понял проц не выходит из прерывания, хотя флаг должен чистить ДМА при чтении из USART->DR.
Может кто-то так делал?


Что ж Вы DMA мешаете своим прерыванием RXNE? Используйте прерывание от того же DMA(Half, Full). Размер буфера DMA известен, перемножить не сложно.
Go to the top of the page
 
+Quote Post
Balabes
сообщение Nov 28 2014, 14:23
Сообщение #3


Участник
*

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



а как быть если пришло 138 байт? 100 я в прерывании увижу, а дальше?нужно знать когда кончились данные
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 28 2014, 14:43
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Добавьте прерывание по IDLE.
Вот вам ccылочка на тему про приём из UART-а с использованием DMA.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Balabes
сообщение Nov 28 2014, 17:41
Сообщение #5


Участник
*

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



Спасибо, почитаю! По первому сообщению ТС очень похоже на то что мне надо
Go to the top of the page
 
+Quote Post

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

 


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


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