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


Что ж Вы DMA мешаете своим прерыванием RXNE? Используйте прерывание от того же DMA(Half, Full). Размер буфера DMA известен, перемножить не сложно.
Balabes
а как быть если пришло 138 байт? 100 я в прерывании увижу, а дальше?нужно знать когда кончились данные
AHTOXA
Добавьте прерывание по IDLE.
Вот вам ccылочка на тему про приём из UART-а с использованием DMA.
Balabes
Спасибо, почитаю! По первому сообщению ТС очень похоже на то что мне надо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.