Электромагнитные наводки и преобразователь логических уровней
- Войдите на сайт для отправки комментариев
Продолжение проблемы, что я затронул в теме про "кривые руки".
Предисловие - управляю RGB матрицами на СТМ32. Матрицы на 5в, стм - 3.3в. Некоторые матрицы заводятся от 3.3в, другим требуется преобразователь. Сигнал (16 линий) передается по ленточным кабелям, которые соединяются разъемами с интерфейсом HUB75:
преобразователь уровня собрал на двух 8-миканальных чипах TXS0108E. Пины с левой половины разъема HUB75 заведены на один чип, с правой - на другой.
Вот как выглядит чистый сигнал
а вот так - после преобразователя
насколько я понимаю, пачки выбросов на линиях LAT, OE и A - это наводки от сигнала CLK. Но ведь сигналы CLK и LAT идут через две разные микрсхемы конвертеров уровня?! - значит это наводки еще в кабеле? (линии LAT CLK в ленточном кабеле - соседние, OE и A - тоже рядом). Но почему тогда в чистом сигнале, который я снимаю с этого же кабеля, этих наводок нет?
Мое предположение такое - высокочастотный сигнал CLK наводит в соседних линиях помехи, которые сильно меньше логического уровня, поэтому в исходном сигнале их не видно и они не мешают. Однако левел-шифтер почему-то воспринимает эти выбросы как логическую единицу и усиливает их до "настоящих" сигналов.
Вопрос - прав ли в своих предположениях и, главное, можно ли эти наводки как-то устранить?
Примечание: У меня есть другой преобразователь, собранный на чипах 74HCT224 - там такой проблемы нет. Точнее, при внимательном рассмотрении там тоже попадаются такие выбросы, но их на осциллограмме надо искать, частота их появления в сигнале на пару порядков меньше.
На приёмном конце нужно иметь сопротивление. Какое? Длина кабелей какая?
На приёмном конце нужно иметь сопротивление. Какое? Длина кабелей какая?
в данном случае на приемном конце стоит логиканализатор Салеае, думаю у его входов входное сопротивление порядка мегаома или более.
Длина кабелей 15см до преобразователя и 15см после. От длины не очень зависит, если взять метровый кабель - внешне картинка не меняется.
в данном случае на приемном конце стоит логиканализатор Салеае, думаю у его входов входное сопротивление порядка мегаома или более.
Попробуй нагрузить, хотя бы для пробы - 1кОм. Изменится картина?
В похожей ситуаци пустил CLK отдельно по экранированному проводу с нагрузкой 50 Ом. Проблемы ушли.
В похожей ситуаци пустил CLK отдельно по экранированному проводу с нагрузкой 50 Ом. Проблемы ушли.
с нагрузкой 50 ом - как это? через 50 омный резистор?
Блин, ну почему на HCT244 нет таких проблем?
Нагрузка на конце провода. Вообще обычно все такие проблемы решатся правильной нагрузкой. На заре компостроения основным способом коммуникации были токовые петли. Как раз из за борьбы с наводками. Чем меньше сопротивление нагрузки, тем лучше ситуация с наводками. Это общий принцип. Последуй совету BOOM. Нагрузи входы на которых возникают наводки. Резистор в идеале 50 Ом. Но можно поиграть до 100k в зависимости от длины провода. Чем длиннее провод, тем меньше резистор.
Нагрузка на конце провода. Вообще обычно все такие проблемы решатся правильной нагрузкой. На заре компостроения основным способом коммуникации были токовые петли. Как раз из за борьбы с наводками. Чем меньше сопротивление нагрузки, тем лучше ситуация с наводками. Это общий принцип. Последуй совету BOOM. Нагрузи входы на которых возникают наводки. Резистор в идеале 50 Ом. Но можно поиграть до 100k в зависимости от длины провода. Чем длиннее провод, тем меньше резистор.
Одним словом "терминатор", не ?
Зависит от волнового сопротивления линии...
По моему и так должно быть понятно - чем выше сопротивление, тем больше вероятность наводок. Тем более кабель, близко лежащие проводники...
Нагрузка на конце провода. Вообще обычно все такие проблемы решатся правильной нагрузкой. Чем меньше сопротивление нагрузки, тем лучше ситуация с наводками. Это общий принцип. Последуй совету BOOM. Нагрузи входы на которых возникают наводки. Резистор в идеале 50 Ом.
нагрузка - это значит между сигналом и GND - я верно понял? Потому как включать резистор последовательно сигналу не вижу ни малейшего смысла.
Но если между логической единицей и GND поставить 50 ом - ток через выход СТМ32 составит 3.3 в / 50 ом = 66 мА. что явно больше предельно допустимого тока GPIO 20 мА. То есть либо я нихера не понял и резистор включается как-то по другому. либо 50 Ом слишком мало и надо включать не менее 500 ом - 1 к. как советует BOOM
поставь минимальную скорость фронтов в настройках пинов
Просто pullup на 1-10 ком.
Просто pullup на 1-10 ком.
имхо, pullUP тут нахер не нужен, если уж ставить. то только pulldown.
Все выбросы наводятся только на низком уровне сигнала
В общем спасибо, попробую для начала притянуть все проблемные пины к земле резистороами 1-3к. О результате отпишу.
Да похрен. Хоть up, хоть down.
Вешать 50 Ом на ногу STM это конечно круто :-) 50 ом ставят в длинных линиях после шинных и прочих формирователей сигналов. Для коротких проводов соласование не столь актуално, но нагрузка на не большое сопротивление помогает уйти от таких, как у тебя наводок. При этом pullUP или pullDOWN без разницы. Это отределяется логикой схемы. Для STM 3.3к с 1мА нагрузки на ногу вполне достаточно. Ставить резистор желательно как можно ближе к входу, куда соединяется провод.
можно попробовать кинуть по трём проводам, сам сигнал по среднему, а крайние заземлить
можно попробовать кинуть по трём проводам, сам сигнал по среднему, а крайние заземлить
в кабеле 14 сигнальных проводов, вокруг каждого по два GND кидать? :)
На 15 см ничего кидать не надо. Нужно обеспечить только НЕ ВЫСОКИЙ импенданс линий.
На 15 см ничего кидать не надо. Нужно обеспечить только НЕ ВЫСОКИЙ импенданс линий.
+100500. Не 50 Ом, конечно. Но провести испытания в этом направлении. Вообще такая наводка - ненормально и хорошо бы причину найти, но можно и "костылём" лечить. Вот таким. Проверь еще раз программные моменты - а именно точно ли выходные пины в OUTPUT? Не поверишь, но такие наводки признак несбалансированной линии - высокое выходное сопротивление передатчика, при высоком же входном на приемнике.
Теперь уже и сам сообразишь, что проверять и как лечить, да?
можно попробовать кинуть по трём проводам, сам сигнал по среднему, а крайние заземлить
в кабеле 14 сигнальных проводов, вокруг каждого по два GND кидать? :)
В шлейфах HDD, так и сделано.
Вообще такая наводка - ненормально и хорошо бы причину найти, но можно и "костылём" лечить. Вот таким. Проверь еще раз программные моменты - а именно точно ли выходные пины в OUTPUT?
да не... не такая уж это наводка...
Обьясняю - для удобства коммутации кабелей HUB75 сделал на jlcpcb плату, у которой один вход и три выхода. Один выход пустил через конвертер уровня. а два параллельно ему - напрямую. И на прямых выходах ОДНОВРЕМЕННО с тем, как на конвертере это безобразие - никаких наводок нет. Так что источник сигнала вне подозрений, да и проверен он давно. я на этом коде уже наверно под сотню примеров запустил.
считаю что виноваты китайские конвертеры, которые транслируют шумы на входе как высокий уровень на выходе. Это китайское чудо TXS0108 почему-то считает шумы в кабеле "настоящими" сигналами и усиливает их до нормального логического уровня. Кстати сказать. конвертеры на чипах HCT244 такого эффекта не имеют(проверяю не только на том же коде, но и конкретно на той же СТМ32 и тех же самых кабелях)
На конвертерах на основе HCT244 я успешно работаю с этим протоколом уже три месяца. Но они у меня собраны на трех отдельных макетках с огромной бородой проводов (и даже в этом состоянии шумов не дают!). А с этими китайцами я связался именно для того, чтобы убрать провода и "сделать красиво" :) - развел специальную плату, припаял чипы... и вот на тебе. такой облом :)
Простейший конвертер.
+питания МК -> резистор на ногу МК -> диод между МК и нагрузкой -> резистор на +питания нагрузки
Всё!
Подобрать резисторы чтоб не спалить МК и пользоваться.
Если разброс между питанием МК и нагрузкой большой - между ногой мк и диодом влепить рёзюк килоом на 100, до мегаома. Ведь на входе полевики, а им важна напруга.
vrd - прочитайте тему сначала, а потом.... комментируйте
В ленточных кабелях, по-моему, GND пускают через одну жилу: GND-SIG1-GND-SIG2-GND-....
Это увеличивает зазор между сигнальными проводами, снижает наводки и т.д.
Гриша, здесь пихать GND просто некуда, в кабеле 16 жил, 14 из которых сигнальные....
Я тут не причём.
Можно, наверное, высокочастотные не рядом располагать, а раделив менее шумными. Искусство это целое - наэкономить в кабеле проводников.
результаты вечерних тестов - снижение импеданса линий дало очень мало. Поставил между каждым сигнальным проводом и GND по резистору 2.7к. Наводки стали реже на тех проводах. что далеко от высокочастного сигнала, на соведних практически не уменьшились. Снижать ниже 2.7К - не думаю, что это что-то даст...
Короче, эта идея не прошла, давайте другую :)
Я рассказывал про выделение высокочастотного в отдельный экранированный провод. Но! Если 2.7 к не помогло, то вывод печален - полная хрень с землёй. Чисто для проверки возьми толстый медный кабель и протяни землю от ближайшего к МК керамического конденсатора к земле микросхемы уровней. Ну и по плате своей землю толстыми медными проводниками позакорачивай в разных углах. Глядишь найдёшь откуда наводка лезет.
земля на плате разведена полигонами. На лицевой стороне покрывает примерно половину площади, на задней - две трети
Зы. это я не спорю - это просто для информации.
попробую выложить картинку печатки, если найду
Плата, обсирайте
Лицевая сторона
Разъем INPUT1 - соответвенно основной вход, правее U1 U2 - микросхемы конвертеров, правее них по направлению нарисованной стрелки - выводной разъем (зеркально, припаяивается с обратной стороны)
В нижней части два других разьема, совмещенных по пинам со входом INPUT1 и блок преобразователя напряжения 5в -> 3.3в
оборот
Ну так красиво, но не наблюдаю ни одной керамики по питанию около МС. Попробуй для начала прямо над корпусами по 0.1мкф на ноги земля - +5 и +3 припаять.
Попробую зачистить маску и припаять смд кондеры вот так: - больше некуда
но это уже завтра...
Может всё ж просто на ноги припоять для проверки?
по даташиту керамика по 0.1 обязательна
на какие ноги? если ноги микросхемы - то там питание и GND на разных концах, не знаю как туда можно припаять
Классическая цоколевка: https://pinov.net/connector/FDD
https://www.chipdip.ru/product0/77059545
а так ты просто неудачный чип выбрал, вернись к 244, 245
ты просто неудачный чип выбрал, вернись к 244, 245
у 244-ого распиновка уродская... у него входы и выходы через один по одной стороне...
ребяты... я не против... но это же не я выдумал! Описанный мной кабель - это промышленный стандарт для DMD-матриц. Применяется миллионами экземпляров. И как-то же он работает у всех без наводок.
Так что скорее всего дело не в кабеле, а в том что я где-то накосячил. надо найти где.
В старых платах логики керамику паяли на каждый чип именно сверху корпуса ногами конденсатора по кратчайшему расстоянию от земли до питания.
Надо просто логически подумать - От чего (из-за чего) могут быть такие выбросы?
1. Не согласованность линии, уже выше советовали притянуть ее резисторами (как я понял не помогло, но попробовать уменьшить резистор до 1...0,5кОм все же нужно).
2. Возбуд может такой эффект давать? Тогда нужны блокировочные емкости.
3. Наводки от рядом идущих линий. Что там в стандарте для DMD-матриц говорится? Может логические уровни другие?
4. Мошт реально земли больше нужно? Попробуй еще отдельными проводами все земли соединить (на КВ частотах часто без подобного ничего работать не будет по хорошему).
5. Думаем дальше вместе...
Б707! Выложи еще и принципиальную схему. Причем именно от твоей платы. Не может таких помех быть без ошибки. Нужно её просто найти!
На всякий случай можешь без платы, на макетке собрать модель и проверить, будет ли тоже самое? Микрухи к макетке пристыковать через переходную платку, если есть. Если нет - тут конечно сложно будет. Переходник можно быстренько ЛУТом или фоторезистом сделать. Я держу в мастерской "фирменные", типа таких, только красненькие! ;))
понял. Не уверен, что у меня есть выводная керамика 0.1, если найду - припаяю как советуешь. Если нет - напаяю смд как выше рисовал - смд 0.1 у меня есть точно
Б707! Выложи еще и принципиальную схему. Причем именно от твоей платы. Не может таких помех быть без ошибки. Нужно её просто найти!
ща выложу
конечно есть :) Напомню - все началось с того, что я купил эти левелконверты как раз на таких платах и снял их оттуда феном :)
конечно есть :) Напомню - все началось с того, что я купил эти левелконверты как раз на таких платах и снял их оттуда феном :)
Супер! Я, грешным делом, подумал, что с какой-то рабочей платы сдувал, а не с переходника. Береги переходники! Они в ЧиД денег стоят - нереально много!
Тогда собери на макетке один канал. 5 и 3.3 - из чего-то самого простого возьми, линейные стабы просто в макетку воткнуть или еще как. Без сложностей, просто один канал все твоих сигналов, которые ты показал на логанадизаторе. Тогда станет ясно, есть ли проблемы у конвертора или нужно искать в плате.
схема
могу еще фото готовой платы выложить, если надо :)
Вроде я ничего не вижу. Собирай макет. Попробуй стянуть к земле через 10К сигналы. Хоть один, на который наводятся помехи от клока. И погляди осликом или логаном. У меня как-то открывался мосфет в корпусе д2пак от проходящей параллельно чужому гейту дорожке.
Попробуй так - стянуть к земле. Потом посмотрим. Просто в разъем воткни резистор 10К между сигналом и землей. Даже паять не надо. И посмотри, изменится ли картинка.
Попробуй так - стянуть к земле. Потом посмотрим. Просто в разъем воткни резистор 10К между сигналом и землей. Даже паять не надо. И посмотри, изменится ли картинка.
это уже вчера пробовали. Поставил между каждым сигналом и землей по резистору 2.7к. изменения минимальны
в приведенной тобой картинке с логана помеха есть только тогда, когда сигнал в низком уровне. Отсюда возникла мысль, что низкий "слабоват". Сними осликом прямо на чипе преобразователя входной и выходной сигналы. А то фигня какая-то! Ей Б..гу!
И все же стенд без платы желателен. Без тройника многоногого, вдруг там что-то? самый "чистый" стенд. может просто два искусственных сигнала - типа клока и того, который "портится".
Можно еще такой эксперимент: на вот-эту-вот, свою плату запусти не рабочий, а искусственный сигнал, спецом его сделай на СТМ-ке. Будет ли тоже самое?
Я просто, как еще 30 лет назад меня учили - "ловлю льва в пустыне" ;). Исключаю варианты, пусть даже они и странными кажутся.