Поиск
Показаны результаты для тегов 'sch3114'.
-
Странное поведение схемы с RS-422 интерфейсом
uni опубликовал тема в RS232/LPT/USB/PCMCIA/FireWire
В общем, требуется помощь телепатов. Ситуация такая. Есть две платы, одна из них - это клон CPC310 (x86 одноплатник), вторая - своя на STM32. Объединены через RS-422. Со стороны первой платы используется связка SCH3114 + LTM2881, на второй используется драйвер ADM3490E. Первый драйвер изолированный, второй нет. Первый имеет управление RE, DE, второй нет. У x86 платы есть особенность при работе с COM-портом, там размер FIFO равен 16 байтам, поэтому при передаче с неё на скоростях больших 115200 пакет "бьётся" по 16 байт с произвольными паузами, длительностью от 0 до нескольких байт. Проблема следующая. При объединении земель - изолированной у LTM2881 и неизолированной у ADM3490E после драйвера ADM3490E на логической стороне на линии Rx появляются нулевые импульсы, длительностью до 0,5 мкс примерно. Появляются они строго после последнего стоп бита в пакете. На картинке ниже демо-пример, сняты логическим анализатором. Здесь, как выглядит приём, если RS-422 без земли (115200 8-N-1). Ниже то же, но с землёй. После 16 байта появляется короткий нулевой импульс. В конце посылки точно также (115200 8-N-1). См знак ! над байтами. Это разность A-B на линии RS-422, снятые осциллографом, без общей земли. Импульса нет, байт 0x16 в конце. Стоп бит почему-то короткий. Скорость 115200, dt = 86,8 мкс (байт помечен маркерами). Последний байт в посылке не меняется и его можно увидеть выше на графиках, снятых логическим анализатором. Эта картинка - то же, что снято логическим анализатором, только теперь на осциллографе. Линия Rx у драйвера ADM3490E (со стороны STM32). Земли общие у драйверов и злополучный нулевой импульс есть. Показан тот же байт 0x16 в конце посылки на скорости 115200. Драйвер обнаружил idle-режим и подтянул Rx в high состояние. Непонятно откуда появляется этот импульс, который портит связь напрочь. Появляется строго после самых последних стоп-битов в посылке. Проверяли только одну сторону, т.к. подлезть к драйверу со стороны логики можно только у STM32. Замечено, что при замене одноплатника моксой (Moxa) таких проблем при приёме нет. Не все пакеты имеют такие импульсы на конце, а примерно половина из них. Пакеты передаются непрерывно с темпом около 20 пакетов в сек. Пробовали другие скорости передачи, проблема не исчезает. У каждой платы свой БП. Подозрение есть следующее. Когда LTM2881 перестаёт управлять передачей (отключает передатчик сигналом DE) Y-Z подтягивающими резисторами (которые есть по схеме) переводится в состояние с высоким уровнем. Из-за какого-то "перекоса", связанного с объединением земель, на короткое время разница A-B интерпретируется как нулевое состояние, в связи с чем появляется этот самый импульс именно в моменты окончания передачи части пакета. Что-то похожее обсуждалось тут, но в обратную сторону: https://ez.analog.com/interface-isolation/f/q-a/561007/ltm2881-unexpected-logic-low-at-the-ro-output Разводка RS-422 со стороны LTM2881 выглядит так: Со стороны ADM3490E стоит терминальный резистор, подтяжек нет. Любые мысли по решению/обнаружению проблемы приветствуются.