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

 
 
> STM32F0: заморочка с UART
k000858
сообщение Mar 18 2016, 05:12
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Сколько переюзал юартов на разных линейках STM32 впервые столкнулся с такой заморочкой: принимаю простым поллингом байты по UART. Если следующий байт пришел раньше чем я забрал предыдущий, UART перестает работать - в регистре предпоследний пришедший байт, при всех последующих пришедших байтах соответствующий RXNE флаг не взводится.

Говоря простым языком, если принимать байты медленнее, чем они приходят, UART становится глухим.

STM32F030x08

Быть может кто нибудь встречался с таким?
Может у F0 линейки какой то особенный UART?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Mar 18 2016, 06:22
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Ну упрощённо говоря так. Кроме того, в F0 эти два флага надо явным образом сбросить через ICR
Go to the top of the page
 
+Quote Post
k000858
сообщение Mar 18 2016, 07:31
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978



Цитата(Genadi Zawidowski @ Mar 18 2016, 10:22) *
Ну упрощённо говоря так. Кроме того, в F0 эти два флага надо явным образом сбросить через ICR

Спасибо за информацию. Разрешилась моя заморочка.

HAL/SPL минус бал за отсутствие обработки такой ситуации.

отругал STшников https:/my.st.com/cf00cd8e

Если кто то столкнется с таким эффектом (аномалией, багом или особенностью - называйте как хотите) при использовании HAL, решение простое: перед вызовом блокирующей функции приема байта(ов)
Код
HAL_UART_Receive(&UartHandle, &byte, 1, 1000)
, вызывать макрос
Код
__HAL_UART_CLEAR_OREFLAG(&UartHandle);
для сброса флага overrun'а.
Go to the top of the page
 
+Quote Post



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

 


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


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