Easyelectronics.ru

Электроника для всех
Текущее время: 16 окт 2019, 05:53

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

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

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

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


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

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

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


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

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


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

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

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


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

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

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

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


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

Зарегистрирован: 26 апр 2019, 00:22
Сообщения: 33
Спасибо всем, подтяжка резисторами, однако, помогла. Возникла еще пара вопросов. Резисторы надо подбирать для формирования между 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
Сообщения: 1102
Атарасий писал(а):
Спасибо всем, подтяжка резисторами, однако, помогла. Возникла еще пара вопросов. Резисторы надо подбирать для формирования между 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
Сообщения: 230
На самом деле эти резисторы рассчитываются. Найди в Инете методику проектирования сетей 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
Сообщения: 33
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
Сообщения: 230
Во-первых, я не видел твоей схемы.
Во-вторых, на входе всегда должен быть детерминированный уровень сигнала. Даже если ты в данный момент не считываешь значение, "подтянутый" вход не будет грести помехи и переключаться с большой частотой, вызывая большое потребление тока микросхемой.
Если в твоей схеме !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 часов


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

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


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

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

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