0 / 0 / 0
Регистрация: 17.03.2012
Сообщений: 488
1

Опрос содержимого регистра NDTR на прием в UART.

11.04.2017, 12:18. Показов 4842. Ответов 3
Метки нет (Все метки)

Вопрос по поводу ответа Flip в этой теме:
http://stackoverflow.com/questions/2487 ... hal-dryver
I have also found a glitch where the controller says it has transferred the data (i.e. NDTR has decreased) but the data is not yet in the buffer. It may be some DMA/bus access contention issue, but it is annoying.
правду говорит или чушь..Имеет ли место проблема?
Может ли оказаться так, что значение в DMA1_Stream1->NDTR по приходу байтов уменьшилось, но DMA пропишет в память данные несколько позже?

Для экономии памяти переписал свой код работы с UART на прием:
код
Код
uint32_t getBytesCount(void)
{

uint32_t curPos = myPort[curIdx].bufSize-*myPort[curIdx].ntdrPtr;
uint32_t bc=0;

if (curPos>myPort[curIdx].pos)
{
bc=curPos-myPort[curIdx].pos;
}

if (curPos<myPort[curIdx].pos)
{
bc=myPort[curIdx].bufSize-1-myPort[curIdx].pos;
bc=bc+curPos+1;
}

return bc;
}
прогнал тестовые команды (чтение флеш и т.п. по UART), глюков не наблюдаю.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2017, 12:18
Ответы с готовыми решениями:

Прием данных с UART
Вопрос скорее архитектурного плана. МК принимает по UART пакеты данных. Протокол бинарный. Формат...

Прием строки по uart
Добрый день всем. Хочу реализовать прием строки из терминала по UART, но что-то не выходит. Прошу...

Не работает прием по UART
Отладочная плата stm32vlDyscovery. Контроллер не получает данные, прерывание не происходит при...

Прием по UART STM32F103
Здравствуйте. Тема заезженная, знаю- прием по ЮАРТу. Прежде чем сюда писать по изучал 3-4 статьи и...

3
1 / 1 / 0
Регистрация: 07.02.2106
Сообщений: 4,013
11.04.2017, 13:03 2
Мда ... Маразм крепчает . Использовать DMA и вручную проверять каждый байт.
Вы адепты калокуба или крестик снимите либо трусы оденьте...
0
0 / 0 / 0
Регистрация: 17.03.2012
Сообщений: 488
11.04.2017, 20:07 3
Не сердись, dosykus_2! Я и по одному и по несколько, всё как требуется. curIdx это у меня номер порта (прибор многопортовый), а не индекс байта. Добавлю некоторые детали моего вопроса: определяю количество необработанных байт в круговом массиве на прием как
разность длины_буфера и значения DMA1_Stream1->NDTR (код выше привел). Т.к. количество данных определяется по этому регистру, то хочется быть уверенным, что в DMA нет какой-нибудь задержки по переносу байт относительно момента изменения NDTR.
0
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 173
11.04.2017, 21:54 4
если я правильно помню, трабл может быть только при отправке ибо DMA радостно сообщает что Transmit Complete, но байтик-то последний только в сдвиговый попал.

При приеме такого нет, сказал переложил, значит переложил. Способу можно доверять, делал аналогичным образом прием данных.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2017, 21:54

Прием данных на пк с UART, ATMEGA16
Здравствуйте, не работает прием данных на пк, они не выводятся в TEXTBOX. Отправка с самого МК...

Прием данных по UART в 8052
Не могу разобраться с приемом по uart скорость 9600 на 11.0592МГц. 8ми битная посылка. Передача...

Прием данных по UART с прерыванями
Всем привет! У меня проблема пи работе с UART. Если отправить данные в терминал получается...

Приём данных по UART Atmega8
Доброго времени суток! Продолжаю постигать азы микроконтроллеров. В прошлой теме задавал, как уже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru