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

DMA Circular и глобальный счетчик принятых данных

Здравствуйте!

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

Поясняю, включается ДМА и начинает забирать с УАРТа в массив (допустим DMA_BufferSize= 50), счетчик ДМА начинает уменьшаться с каждым принятым байтом на 1.

Все это происходит в режиме Circular, т.е. дойдя до 0 ДМА начнет переписывать массив с начала и счетчик снова станет = 50.

Хотелось бы Глобальный счетчик, так что бы считал не кол-во байт до конца (как стандартно делает ДМА) а общее кол-во принятых.

Пытался в прерывании по USART RXNE считать, но как я понял проц не выходит из прерывания, хотя флаг должен чистить ДМА при чтении из USART->DR.

Может кто-то так делал?

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


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

Здравствуйте!

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

Поясняю, включается ДМА и начинает забирать с УАРТа в массив (допустим DMA_BufferSize= 50), счетчик ДМА начинает уменьшаться с каждым принятым байтом на 1.

Все это происходит в режиме Circular, т.е. дойдя до 0 ДМА начнет переписывать массив с начала и счетчик снова станет = 50.

Хотелось бы Глобальный счетчик, так что бы считал не кол-во байт до конца (как стандартно делает ДМА) а общее кол-во принятых.

Пытался в прерывании по USART RXNE считать, но как я понял проц не выходит из прерывания, хотя флаг должен чистить ДМА при чтении из USART->DR.

Может кто-то так делал?

 

Что ж Вы DMA мешаете своим прерыванием RXNE? Используйте прерывание от того же DMA(Half, Full). Размер буфера DMA известен, перемножить не сложно.

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


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

а как быть если пришло 138 байт? 100 я в прерывании увижу, а дальше?нужно знать когда кончились данные

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


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

Добавьте прерывание по IDLE.

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

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


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

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

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

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

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

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

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

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

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

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