Например TDA7294

Форум РадиоКот • Просмотр темы - Проблемы обработки ошибок по UART в stm32
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вс сен 29, 2024 02:20:15

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Проблемы обработки ошибок по UART в stm32
СообщениеДобавлено: Вт окт 28, 2014 20:27:17 
Родился

Зарегистрирован: Пн мар 11, 2013 01:46:59
Сообщений: 19
Рейтинг сообщения: 0
Добрый вечер. Есть плата STM32VL Discovery. Делаю на ней мост.По UART передаю с компа данные, данные принимаются и передаются по SPI дальше и соответственно ответ от устройства принимаю по SPI и передаю по UART в компьютер.
UARTработает на 115200. В принципе программа работает при идеальных условиях(если посылка идет с компа на правильной скорости).Решил сделать обработчик ошибок по UART, если ошибка то просто пропускается байт и соответственно он не запихивается в SPI.
Возникла проблема, что при передаче например на другой скорости, умышленно передаю на 19200 например, то обработка работает как то через раз и не все байты отсекаются.Хотя ,например , на скорости 460800 все прекрасно отрабатывается.
Проект собран IAR 6.21.1. Использую UART1 прерывание по приему(данные в нем отправляю в SPI), SPI1(прерывание по приему,данные отправляются в UART). Может кто увидит где я накосячил. Спасибо


Вложения:
Repeater.rar [205.82 KiB]
Скачиваний: 189
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы обработки ошибок по UART в stm32
СообщениеДобавлено: Вт окт 28, 2014 20:43:39 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Код:
if(USART1->SR & (USART_SR_PE | USART_SR_FE | USART_SR_NE | USART_SR_ORE)){
        temp = USART1->SR;
        temp = USART1->DR;
        temp = USART1->DR;
        USART1->SR &= ~USART_SR_RXNE;



PE,FE,NE,ORE чистятся вычиткой SR с последующей вычиткой DR.
Вычитка SR уже происходит в if ( ...) .
RXNE чистится вычиткой DR .
Итого :
Код:
if(USART1->SR & (USART_SR_PE | USART_SR_FE | USART_SR_NE | USART_SR_ORE)){
        temp = USART1->DR;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы обработки ошибок по UART в stm32
СообщениеДобавлено: Вт окт 28, 2014 20:51:31 
Родился

Зарегистрирован: Пн мар 11, 2013 01:46:59
Сообщений: 19
Рейтинг сообщения: 0
Спасибо.То я подстраховаться так пытался. Поправил, но эффекта нет.Заметил что ставлю скорость больше передачи- все отлично, меньше чем 115200 - проскакивают байты(


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Проблемы обработки ошибок по UART в stm32
СообщениеДобавлено: Вт окт 28, 2014 20:56:25 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 1
ХЗ я подобными извращениями не занимался .
Может стоит перенести на F0 , там USART более навороченный с Auto baud rate detection.
И еще - у тебя CMSIS старая , в новой одни хэдеры ...


Вернуться наверх
 
Материалы вебинара «Пленочные конденсаторы Hongfa для источников питания и силовой электроники»

Опубликованы материалы вебинара, посвященного пленочным конденсаторам компании Hongfa, на котором была представлена текущая линейка и модельный ряд продукции этого направления, включая новые, недавно вышедшие серии. На вебинаре были приведены актуальные примеры применения пленочных конденсаторов Hongfa в источниках питания, зарядных станциях для электротранспорта, преобразователях частоты, фотоэлектрических преобразователях и ветрогенераторах.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Проблемы обработки ошибок по UART в stm32
СообщениеДобавлено: Вт окт 28, 2014 21:09:32 
Родился

Зарегистрирован: Пн мар 11, 2013 01:46:59
Сообщений: 19
Рейтинг сообщения: 0
Спасибо.Шаблон с этим CMSIS как сделал давно, так и пользуюсь. Контроллер возможности нет менять( Буду пыхтеть дальше.


Вернуться наверх
 
Помехоподавляющие пленочные конденсаторы Hongfa для бытовых и промышленных сетей

Компания Hongfa - один из лидеров азиатского рынка пленочных конденсаторов с полным циклом производства. Она выпускает пять серий помехоподавляющих конденсаторов этого типа как для бытовой, так и для трехфазной промышленной сети, а также для автомобильного применения. Продукция компании по ассортименту, параметрам и количеству серий конденсаторов ЭМП не уступает другим крупным производителям этого сегмента и может легко заменить ассортимент ушедших из РФ брендов.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Проблемы обработки ошибок по UART в stm32
СообщениеДобавлено: Вт окт 28, 2014 21:19:22 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 56
Зарегистрирован: Вт авг 28, 2012 22:21:33
Сообщений: 535
Рейтинг сообщения: 0
При передаче на скорости отличной от ожидаемой некоторые символы (последовательности символов) вполне могут быть распознаны как нормальные, значение у них будет уже другое, но тем не менее. Введи понятие кадра, определи его границы, используй контрольную сумму и будет тебе счастье.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы обработки ошибок по UART в stm32
СообщениеДобавлено: Вт окт 28, 2014 21:30:32 
Родился

Зарегистрирован: Пн мар 11, 2013 01:46:59
Сообщений: 19
Рейтинг сообщения: 0
Хотелось бы просто байт принял - байт отослал.Неужели мк не может отследить например ошибку кадра 100%?. Спасибо за совет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы обработки ошибок по UART в stm32
СообщениеДобавлено: Вт окт 28, 2014 21:42:49 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 56
Зарегистрирован: Вт авг 28, 2012 22:21:33
Сообщений: 535
Рейтинг сообщения: 0
Зависит от конкретной аппаратной реализации, но 100% никогда не будет. Лень рисовать картинки, к примеру, значение 0xFF, переданное на скорости 9600, распознается как 0x7F приемником настроенным на скорость 19200. Включение проверки четности позволит отсеять некоторые "коллизии", но не все.

Так что если нужна близкая к 100% вероятность распознавания ошибки, то без усложнений не обойтись (довольно значительных по сравнению с "принял байт, передал байт", но тем не менее вполне реализуемых).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблемы обработки ошибок по UART в stm32
СообщениеДобавлено: Вт окт 28, 2014 21:54:11 
Родился

Зарегистрирован: Пн мар 11, 2013 01:46:59
Сообщений: 19
Рейтинг сообщения: 0
Значит буду допиливать...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y