Easyelectronics.ru

Электроника для всех
Текущее время: 13 июл 2020, 21:09

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



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: STM32, ST3485EB и Framing error при работе по RS-485
СообщениеДобавлено: 29 июл 2019, 15:36 
Заглядывает иногда

Зарегистрирован: 26 апр 2019, 00:22
Сообщения: 62
Откуда: Москва
Здравствуйте. Разработал устройство с STM32 и подключенным к нему драйвером ST3485EB, к которому в свою очередь по интерфейсу RS-485 подключается неизвестно кем и как сделанная клавиатура. STM32 - master, Клавиатура - slave, линия передачи данных - 30 см, подтяжек ни у линий UART, ни у линий RS-485 нет. Программных нареканий к STM32 тоже нет.
Однако, из четырех изготовленных устройств - абсолютно исправно работают два. У двух других информационный обмен с клавиатурой работает, однако в регистре USART_ISR постоянно возникает бит FE (Framing error).
При подключении к линиям UART логическим анализатором, стал свидетелем следующей картины:
Вложение:
485bad1.jpg
485bad1.jpg [ 33.04 Кб | Просмотров: 603 ]
Изначально, STM32 находится в режиме приема, однако потенциалы на линиях A и B получаются равны, что определяется как "0", который поступает на линию RX STM32. В момент посылки запроса, происходит переключение на передачу, и на линии RX STM32 появляется "1". После успешной передачи происходит переключение на прием и на RX опять поступает "0", который должен являться стартовым битом входящей посылки, но таковым не является и определяется как Framing error (!). Обратное переключение RX в "1" происходит незадолго перед приемом ответа, после чего, вскоре после передачи ответа происходит второй аналогичный Framing error (!) и все возвращается на круги своя:
Вложение:
485bad2.jpg
485bad2.jpg [ 26.95 Кб | Просмотров: 603 ]
Сами по себе пакеты верные, и если закрыть глаза на постоянные Framing error, обмен работает исправно. Можно было-бы списать данную проблему на корявую клавиатуру, однако, перепайка двух проблемных драйверов ST3485EB на два новых (из этой же упаковки) решила проблему. Также, при использовании проблемных ST3485EB в паре с другими устройствами, подключаемыми к ним по RS-485 ошибок не наблюдается, драйверы работают исправно.

В связи с недостатком собственного опыта, интересуюсь у знающих и опытных, в чем тут может быть дело и можно ли с этим как-то побороться?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32, ST3485EB и Framing error при работе по RS-485
СообщениеДобавлено: 29 июл 2019, 19:32 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 11:56
Сообщения: 3911
Откуда: Винница
Линию "B" на землю, линию "A" на питание ST3485 через резисторы в несколько кОм. Или же взять т.н. "fail-safe" драйверы.

_________________
Китайская комплектация - европейское качество!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32, ST3485EB и Framing error при работе по RS-485
СообщениеДобавлено: 29 июл 2019, 22:11 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 518
Дополню Katz'а. Возьми резисторы для растяжки 3485, примерно, 4.7-6.8 кОм. Я бы ещё подключил Rx через pull-up резистор к "плюсу" питания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32, ST3485EB и Framing error при работе по RS-485
СообщениеДобавлено: 29 июл 2019, 22:54 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 11:56
Сообщения: 3911
Откуда: Винница
Да, обычно ставлю 4,7 к. По мотивам SAE J1708. :)
Некоторые гуру с электроникса уверяли, что растяжки - зло, framing errors нужно непременно обрабатывать программно, и только так. Оно, конечно, здорово, если все устройства в сети - собственной разработки, но зачастую это не так.

_________________
Китайская комплектация - европейское качество!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32, ST3485EB и Framing error при работе по RS-485
СообщениеДобавлено: 29 июл 2019, 23:31 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 518
Хочешь совсем по честному? Поставь внешний источник на 5В и сделай растяжки.

Растяжки нужны обязательно! Другое дело как их реализовать. Тут я с гуру соглашусь. Но говорить, что растяжки зло... Лови ошибки дальше. Сделай как я тебе предложил: растяжки, подтяжку RX.

Я приложил фрагмент схемы. Обрати внимание, что параллельно 6.8 кОм зарезервированы места для распайки дополнительных резисторов.
Этот пример взят из схемы повторителя EIA-485 с гальванической развязкой сегментов и питания. Особенностью схемы является автоматическое определение сегмента, в котором идёт передача. Если бы в сети был такой же "мусор" как сейчас у тебя, то не видать мне ни автодетекта, ни 921 кБит, ни 1200 метров.


Вложения:
Screenshot_4.jpg
Screenshot_4.jpg [ 75.77 Кб | Просмотров: 556 ]
Screenshot_3.jpg
Screenshot_3.jpg [ 21.01 Кб | Просмотров: 556 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32, ST3485EB и Framing error при работе по RS-485
СообщениеДобавлено: 30 июл 2019, 18:52 
Заглядывает иногда

Зарегистрирован: 26 апр 2019, 00:22
Сообщения: 62
Откуда: Москва
Спасибо всем, подтяжка резисторами, однако, помогла. Возникла еще пара вопросов. Резисторы надо подбирать для формирования между A и B разницы в 200 мВ? Или алгоритм подбора иной? У меня разница получилась с резисторами 4.7 кОм ~100 мВ, 2 кОм ~150 мВ, 1 кОм ~300 мВ, Framing error ушел во всех случаях. И второй вопрос - ST3485 питается напряжением 3.3 В, которое идет с преобразователя 5 в 3.3, минус общий. К чему лучше подтянуть A - к 5 В или к 3.3 В?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32, ST3485EB и Framing error при работе по RS-485
СообщениеДобавлено: 30 июл 2019, 22:51 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1507
Атарасий писал(а):
Спасибо всем, подтяжка резисторами, однако, помогла. Возникла еще пара вопросов. Резисторы надо подбирать для формирования между A и B разницы в 200 мВ? Или алгоритм подбора иной? У меня разница получилась с резисторами 4.7 кОм ~100 мВ, 2 кОм ~150 мВ, 1 кОм ~300 мВ, Framing error ушел во всех случаях. И второй вопрос - ST3485 питается напряжением 3.3 В, которое идет с преобразователя 5 в 3.3, минус общий. К чему лучше подтянуть A - к 5 В или к 3.3 В?


Подтяжка к напряжению питания вашего драйвера RS485, если питается от 3.3 значит на 3.3в.

P\S про зло от растяжек и от терминаторов обычно говорят те кто не работал с длинными линиями :) а когда у тебя сегменты отваливаться начинают, тут приходится забивать на мнения диванных экспертов и решать проблему. на своих устройствах ставлю 3 джампера, которые позволяют подключить растяжки и терминатор, резисторы стоят копейки, точно так же как линейка PLS а в случае каких либо проблем, вопрос закрывается просто перекидыванием джамперов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32, ST3485EB и Framing error при работе по RS-485
СообщениеДобавлено: 30 июл 2019, 23:12 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 518
На самом деле эти резисторы рассчитываются. Найди в Инете методику проектирования сетей EIA-485.
Растягивать можно хоть к 1000В, напряжение питание приёмо-передатчика тут роли никакой не играет (sed_alex ошибается). К 5В может оказаться проще, ибо в этом случае сопротивление R4||R5||R6 получается больше, чем при растягивании к 3.3В. Главное, чтобы передатчик 3485 обеспечивал на этой нагрузке нужный ток (и DC/DC конвертер, разумеется). И не забудь подключить RX через внутренний pull-up резистор контроллера.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32, ST3485EB и Framing error при работе по RS-485
СообщениеДобавлено: 31 июл 2019, 01:38 
Заглядывает иногда

Зарегистрирован: 26 апр 2019, 00:22
Сообщения: 62
Откуда: Москва
sed_alex писал(а):
Найди в Инете методику проектирования сетей EIA-485.
Спасибо, да, и правда, статьи с расчетом есть практически у всех производителей микросхем. У TI (Журнал, стр. 17) даже на русском языке.
sed_alex писал(а):
И не забудь подключить RX через внутренний pull-up резистор контроллера.
А зачем для RX включать Pull-up? В смысле на практике какое это значение будет иметь и в какой ситуации? Если произойдет обрыв линии 485, драйвер перейдет в Z-состояние, RX с включенным Pull-up подтянется сам к "1". Смысла в этом для информационного обмена мало уже будет конечно, но допустим. Но опять таки, если A и B будут подтянуты внешними резисторами, то даже при обрыве линии будет разница между A и B и эта ситуация не случится. Другие варианты и придумать не могу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32, ST3485EB и Framing error при работе по RS-485
СообщениеДобавлено: 31 июл 2019, 09:15 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 518
Во-первых, я не видел твоей схемы.
Во-вторых, на входе всегда должен быть детерминированный уровень сигнала. Даже если ты в данный момент не считываешь значение, "подтянутый" вход не будет грести помехи и переключаться с большой частотой, вызывая большое потребление тока микросхемой.
Если в твоей схеме !RE сидит на GND, то можешь не подтягивать RX к питанию. Ну, а если ты им управляешь сам, то, посмотрев в таблицу 4 на станице 4 ,
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=2ahUKEwj0_rOFot7jAhUEpIsKHdoOD9gQFjAAegQIAxAC&url=https%3A%2F%2Fwww.st.com%2Fresource%2Fen%2Fdatasheet%2Fst3485eb.pdf&usg=AOvVaw1z6IWEKB3VltEGFpLv-efr
видим, что при !RE=1 и DE=0 к входу RX оказывается подключен выход RO, находящийся в третьем состоянии.
Или история с ошибкой формата тебя ничему не научила?


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


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


Кто сейчас на конференции

Сейчас этот форум просматривают: Wadimas


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB