MAX13487/13488 выкинем лишнее из RS-485!

Мне пришли сэмплы от MAXIM драйвера RS-485 — MAX13487 и MAX13488. Казалось бы чего нового они могли учудить? Ответ прост Auto Direction Control…

Самая неудобная вещь в RS-485 то, что надо дрыгать ногой на контроллере TX Enable (ноги 2 и 3 драйвера) при передаче. C этими микросхемами проблема не актуальна! Ничего дрыгать не надо, оно само с помощью блока State machine определяет наличие передачи (в обычных драйверах типа MAX1487/487 его естественно нет).

И теперь легко можно использовать бутлоадер на ARM через RS-485 без костылей и опторазвязка упрощается 2 канала вместо трех.
datasheets.ru/datasheets/586453/data-MAX13487.html
Ну и первое поделие сделанное с применением MAX13487 стал преобразователь Bluetooth с HC-05 в RS-485 — седня весь день его гонял работает нормально.

Для использования Auto Direction Control необходимо соединить ноги 2 и 3 и подтянуть их к +5В (у меня подтяжка через резистор 1к )и все.
Естественно эти микросхемы могут работать и по обычному — с дрыганьем ногой TX Enable.
P.S. немного поднасрали китайцы — BT модуль с DX пришел с прошивкой HC-05 и светодиод индикации переместился на другую ногу… проводком
  • +1
  • 06 февраля 2012, 17:14
  • GYUR22

Комментарии (50)

RSS свернуть / развернуть
Хорошие микросхемки. Серийно их юзаю.
0
Гм. ЕМНИП в даташите на модуль требуют наличия вокруг него большего пространства без меди.
Алсо, мог было бы и схему показать. А то любопытно, что там например за деталька в SOT23-6.
И я думаю, можно это и в «детальку» унести.
0
  • avatar
  • Vga
  • 07 февраля 2012, 00:44
схемы не делал- да ее там и нету фактически (никак не могу себя заставить перейти с лэйоута на что нито посерьезнее) sot-23-5 это level shifter 74VHC1GT125D.
По некоторому опыту с bt модулями этого пространства достаточно для нормальной работы.
Если надо выложу плату в лэйоуте.
0
Ну может он все же лучше работать будет, если место от меди освободить :)
0
Работать-то он и на полигоне будет, вопрос в дальности и форме ДН.
схемы не делал- да ее там и нету фактически
Ну, как бы, ты публикуешь в общем доступе статью. ИМХО, можно специально для нее подготовить дополнительные материалы. В том числе схему нарисовать, даже если для разработки она не требовалась.
0
ну вот опять здрасти мордасти…
статья называется — «MAX13487/13488 выкинем лишнее из RS-485!» — а не BT2RS485

зы специально пишу в личном блоге во избежании непоняток и когда спросили про схему все честно написал и добавил — «Если надо выложу плату в лэйоуте. » выводы делаем сами.
0
Так-то оно так, но лично мне было бы интересно увидеть не только фотографию применения, но и как оно в схеме выглядит. А плата — нафига она мне? Схему по ней читать неудобно, а повторять я не намерен. Если уж показываешь пример применения — покажи вместе со схемой.
0
Так нормально?
0
Честно говоря, не вижу, что изменилось.
0
дорисовал схему применения — первая картинка
0
А, В — обвязочку можно (номиналы сопротивлений), ловлю шум.
Можно лаут, если есть номиналы.
0
там правильнее ставить самовосстанавливающиеся предохранители и супрессоры на 6v8
сопротивления я ставил 56ом входные и 10к смещения( на устройствах 47-100к)
Шум ловите либо от отсутствия общего провода, либо от его наличия и привязки к зашумленой земле
0
Вот если еще сделать устройство более компактным и снабдить аккумулятором Li-ion со схемой контроля зарядки…
0
ну это да
но обычно просто питают от тaргета
0
0
никак картинка не всталяется
поищите в гогле MS-BTCVT и посмотрите картинки
0
Была у меня недавно мысль сделать подобный переходник, что бы с помощью КПК программировать устройства кое-какие. Сейчас приходится для этого пользоваться ноутбуком с адаптером RS485 и ходить с ним пешком на большие расстояния, что неудобно, учитывая несколько килограмм экипировки и инструментов носимых в довесок к ноутбуку. Проблема только в том, что специфический софт для этих целей в версии под PocketPC мельком упоминается в документации к приборам, но в живую я его так и не нашел в инете.
0
обычно на кпкшках софт неполноценный по сравнению с ноутами
0
Огромное спасибо, думаю это очень облегчит жизнь тому кто начинает изучать 485. Я так понимаю, если у меня стоит задача «продлить» UART, то две такие микросхемы напрямую к МК UART с обоих сторон решат вопрос?

Ну и если можно, подскажите ссылочку на читабельный практический материал по 485. Например, как решать вопрос с несколькими получателями на линии — как определять кому уходит то что в UART
0
  • avatar
  • whoim
  • 31 октября 2012, 12:55
это решается адресацией и использованием протоколов обмена — например Modbus,BACnet,N2Open итд итп
либо написанием собственного протокола, но в любом случае получается что то типа:
<адрес> <тип запроса/ответа> <данные> <контрольная сумма>
0
не так давно попадалось что то про аппаратную адресацию, помню — утсановка бита приводила к тому что порт слушал адреса (ждал свой) и т.д. Не подкинете ключевик по этому поводу, что искать? И доступно ли такое на ATXMega?
0
9-битный UART в режиме межпроцессорного обмена. Приемник в этом режиме автоматически дропает байты, у которых девятый бит не установлен.С установленным битом передается только адрес, в результате до прерывания доходит только байт адреса. После чего он сверяется (уже ручками) с адресом устройства и если совпадает — то UART переводится в обычный режим и начинает принимать байты с снятым 9-м битом. Тащемта, сама адресация тут тоже выполняется ручками, аппаратно только откидываются пакеты данных.
0
во, спасибо! а нет случайно ссылочки на пример? быстрее бы воткнулся. например — как вообще задавать адресацию. Ну и как я понимаю, в таком режиме напрямую к например jpeg-камере не достучаться — надо ее через МК вешать?
0
Где-то тут была статья. Называлась, ЕМНИП, «Время говорить с камнями». В блоге AVR, скорее всего.
0
А насколько эта штука быстро переключается на приём и обратно на передачу? А если две одновременно начнут передачу или одна чуть раньше другой? =)
0
коллизий надо избегать часто применяемые варианты:
1.Мастер слейв
2.Передача токена между устройствами
0
Понятно, что надо. Но, например, в протоколе RDM (ANSI/ESTA E1.20) они непременно будут при поиске устройств на линии, если устройств больше одного. Протокол такой =D

Вот мне и интересно, как эти драйвера поведут себя =)
0
это как мне кажется уже не важно т.к. ток в них ограничен + рекомендуется ставить свп ну и самое главное вы не получите отклика. Ну и второй момент если вам важно следить за целостностью посылки на линии то соотественно используйте обычные драйверы и одну ногу на передачу — не отключать RE тогда вы увидите что у вас на выходе ваша посылка или каша но тут наверное вам два усарта уже понадобятся
0
Там именно сама суть в детекте мастером коллизии в ответе=)

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

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

С мастером всё понятно, он инициирует обмен, он либо отправляет, либо получает, третьего не дано. С ведомыми же всё не так ясно: если в том же искомом диапазоне (а начинается поиск с диапазона всех адресов) есть ещё кто-то, они начнут слать в линию данные одновременно =)

Я не знаю, как устроен конечный автомат внутри и влияет ли на него вообще входящий из RS-485 поток, или ему важен только факт передачи от контроллера… Если так, то всё нормально будет, если, конечно, задержки переключения не слишком велики.
0
Можешь еще CAN попробовать — шина похожа на полудуплексный RS-485, коллизии аппаратно разрешаются.
Правда — плата за это более сложный протокол, тяжелее осваивается.
0
Мне не нужен CAN и я с ним работал =) Мне нужна поддержка протокола RDM =D

Пока что с ручным дёрганием ноги направления. И мне интересно, может ли тут помочь автоматичесий выбор направления. Или же он не успеет, или запутается. Подозреваю, должен не запутаться и успеть, но не уверен.
0
конечно все зависит от скорости… я сейчас ваяю типа хаба для протокола DMX с поддержкой RDM, все заработало отлично, при передаче от мастера к слейву все отлично, при передаче от слейва к мастеру — все отлично, при коллизии от слейвов мастеру приходит мясо, а вот когда передача от мастера и от слейва приходит одновременно микра зависает до тех пор пока не передернешь питание. пока немогу побороть эту траблу :(
0
Схема подключения соответствует указанной в даташите (подтягивающие резисторы на линиях А и В, например)?
0
это да, все соблюдено.
0
если точнее описывать природу происходящего, то микросхема виснет в тот момент, когда в момент приема, на пин DI поступает поток данных.
0
Удалось побороть зависание или нет? Интересно, что аж жуть.
0
Да поборол, правда не совсем штатными методами, я поставил буффер с защелкой на выхода слейвов, и в момент когда передает мастер закрывается защелка, соответственно на вход мастера ничего не приходит и микра работает в штатном режиме.
0
Спасибо, что ответил. Правда, это называется не поборол, а выкрутился из положения. Поборол — это когда что-то не правильно делал. Жаль, что микросхема MAX13487 оказалась косячная. Хотел её использовать для изготовления своего адаптера USB-485. Придётся делать как все — ставить контроллер для определения передачи ведущего, и им уже переключать направление передачи. У меня вопрос к вам: не пробовали испытывать адаптеры USB-485 на основе FTDI232RL на помехоустойчивость? Держит FTDI232RL нано- и микро секундные помехи? Адаптер на основе СР2101 Silicon, как я не старался, помех не держит, виснет.
0
нет, по мне FT232 необоснованно дорогая и при этом довольно капризная… для массового производства не подходит.
0
Очень интересно узнать — удалось ли побороть зависание?
0
  • avatar
  • zloy
  • 27 января 2014, 19:42
В схемах в DS нарисованы «растяжки» с A на плюс и с B на минус. В схеме отладочной борды они подключаемые, номиналы 220 Ом. Жестко. У Вас есть «растяжки»? Если да, то какого номинала?
0
Подтягивающие резисторы ставить обязательно. Без них работающее устройство вдруг перестаёт работать. У меня стоят на ведущем устройстве по 620 ом.
0
Спасибо. С бОльшим сопротивлением не пробовали? 2-5 кОм?
0
Не нужно большее. В документации на 485 рекомендуют 330-560 ом.
0
Зачем искать, если можно посчитать:
Дано, порог срабатывания — 200мВ на нагрузке 60 Ом (два терминатора в параллель).
Получаем ток через растяжку — 0.2/60 = 1/300 А. Значит на обоих резисторах растяжки должно упасть (5 — 0.2) В при токе 1/300 А, что даёт сопротивление 1.44 кОм на оба резистора. То есть каждый должен быть по 720 Ом. Добавляем запас и выбираем ближайший номинал из стандартного ряда E24 — получаем 680 Ом.
0
Это если такими резисторами формировать передачу. При снятии TE после передачи обычно на выходе 1 и растяжка, ИМХО, для того, чтобы висящая линия не передавила до 0.2 В обратной полярности. Предполагаю, что если поставить те же 220-470 Ом при «обычном» MAX485 и т.п., то если на TX подать 0, а на TE инвертированный сигнал передачи, то скорее всего получим результат аналогичный этим MAX13487.
0
Резисторами никто передачу не формирует. При снятии DE, выходы драйвера уходят в Z-состояние. Остальное не понял, но любая растяжка используется, что бы исключить состояние висящей линии (когда ни одного передатчика на линии нету). Растяжка удерживает линию в т.н. состоянии 1. Олдовые трансиверы не имели защиты от висящей линии, поэтому требовалась растяжка, современным такое счастье не надо уже (Их можно узнать по фразе «Failesafe: Open, Idle» в даташите).
0
Приемников без гистерезиса давно не найти. Но продолжаем греть воздух. Подавляющее большинство трансиверов с Failsafe жрут так, как-будто резисторы (с терминатором вместе)у них просто внутри. А насчет остального имел в виду примерно такое или такое
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.