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

stm32f407 отслеживание логического нуля на UART

6 минут назад, jcxz сказал:

ТС-у нужно определить, что длительность 0-я не менее чем сколько-то мсек.

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

Возможа еще и ситуация, уарт начал нормально принимать данные - значит это была просто ошибка кадра по помехе.

Изменено пользователем mantech

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


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

Можно ещё так: по получению ошибки фрейма (начало BREAK), запустить периодический поллинг через GPIO (период ~1мсек) и параллельно продолжать принимать UART-ом.

Обнаружение завершения BREAK: или очередной поллинг вернул лог.1 или UART что-то принял - что первое случилось, то и служит маркером конца BREAK.

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


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

6 минут назад, jcxz сказал:

Можно ещё так: по получению ошибки фрейма (начало BREAK), запустить периодический поллинг через GPIO (период ~1мсек) и параллельно продолжать принимать UART-ом. 

Обнаружение завершения BREAK: или очередной поллинг вернул лог.1 или UART что-то принял - что первое случилось, то и служит маркером конца BREAK.

Я об этом ранее уже писал

 

Изменено пользователем Neo_Matrix

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


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

2 минуты назад, Neo_Matrix сказал:

Я об этом ранее уже писал

Тогда остается проверить одновременную работу gpio in и уарта без переключения функций, если работает - то так самый простой выход.

 

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


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

Кому лень читать реф.мануал могут просто посмотреть на картинки fig.25 и fig.26

Сигнал во входа доступен через GPIOx->IDR всегда, а вот сигналы от периферии подключаются к ноге через мультиплексоры и в каждый момент времени нога может быть подключена только к одному из периферийных устройств.

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


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

А я читал руководство пользователя и для определения выдергивания/подключения шнурка к УСАПП использую флаг прерывания BREAK вместе с проверкой UDR на ноль и флаг прерывания IDLE. В задаче автора темы можно еще считать таймером время между этими событиями.

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


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

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

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

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

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

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

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

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

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

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