Вопрос
Может ли простой NPN BJT-транзистор предотвратить отладочный UART от обратного питания MCU на целевой печатной плате?
Проблема
UART и соответствующие ключи USB-to-UART (например, под брендом FTDI) обычно используются для отладки микроконтроллеров на печатных платах. Проблема заключается в том, что на TX
линии от устройства FTDI к микроконтроллеру устанавливается высокий уровень, когда устройство FTDI находится в режиме ожидания. Это может помешать вам сбросить MCU, выключив и снова включив питание платы, так как, когда вы отключаете питание от VCC
, +3.3V
линия TX
подается обратно через внутренние диоды ESD MCU на VCC
, и поддерживает шину напряжения. Последовательные резисторы хорошо работают, чтобы предотвратить повреждение, вызванное этим, но они не совсем подходят для обеспечения того, чтобы цепь VCC
падала почти до нуля.0V
, так как потребляемая от MCU мощность значительно падает, когда он начинает выключаться (например, из-за «обнаружения отключения»), что означает, что MCU зависает в странном состоянии или, что еще хуже, постоянно зависает, пытаясь включиться!
Возможное решение
Решит ли эту проблему NPN BJT, как показано на рисунке ниже? Я проверю это на макетной плате, когда у меня будет возможность, но подумал, что было бы неплохо спросить и здесь! По крайней мере, это может начать интересный разговор или обсуждение других решений этой проблемы.
Я думаю, что 0.7V
падение от базы к эмиттеру будет в порядке, это просто будет означать, что MCU видит примерно 2.6V
как ВЫСОКОЕ, а не как 3.3V
. Первоначально я разработал это с использованием MOSFET, но эквивалентное пороговое напряжение затвор-исток обычно намного больше, чем падение напряжения база-эмиттер 0.7V
, а это означает, что логический ВЫСОКИЙ уровень может быть даже меньше 2.6V
и начать вызывать проблемы.
Основная идея в порядке. Но детали неверны. При 3,3 В на базе транзистора транзистор будет в странном состоянии. В тот момент вы могли бы думать об этом больше как о двух диодах с минимальным действием транзистора. Переход база-эмиттер будет подобен подтягивающему диоду для MCU_UART_RX, а переход база-коллектор будет подобен подтягивающему диоду для FTDI_TX.
Я думаю, что FTDI_TX будет трудно снизить уровень коллектора, если база подключена к 3,3 В. ВОЗМОЖНО, базовый резистор мог бы спасти ситуацию, но мне он все еще не нравится и я ему не доверяю.
Что вам, вероятно, нужно, так это переключатель PMOS верхнего плеча. Это может иметь затвор, управляемый NMOS, затвор которого привязан к 3,3 В. Если у вас есть место для двух пакетов SOT-23, это должно работать нормально. Возможно, вы сможете найти PMOS и NMOS вместе в одном пакете, чтобы сэкономить место, если места слишком мало для SOT-23.
смоделируйте эту схему - схема, созданная с помощью CircuitLab
ИЛИ вы можете использовать переключатель аналоговой шины с функцией Ioff. Они обеспечивают изоляцию при отключении питания. Я позволю вам использовать поисковую систему, чтобы узнать больше об этом варианте.
Нет, это не сработает.
Независимо от того, подключен FTDI_TX или нет, при включенном питании микроконтроллера 3,3 В он всегда будет поддерживать высокий уровень эмиттера, делая передачу данных невозможной.
Хакерская, но функциональная альтернатива состоит в том, чтобы иметь последовательный диод в сочетании с подтягивающим напряжением на стороне MCU.
смоделируйте эту схему - схема, созданная с помощью CircuitLab
Когда высокий уровень передается по FTDI, подтяжка подтягивает сигнал RX к высокому уровню. Когда передается низкий уровень, диод подтягивает его к низкому уровню. За счет падения напряжения на диоде запас помехоустойчивости микроконтроллера снижается примерно на 0,3 В.
Из-за уменьшенного запаса шума я бы не рекомендовал это для основных коммуникационных шин. Однако это может быть приемлемым решением для порта отладки, который используется только с короткими кабелями.
115200
скоростью передачи UART. Это, вероятно, будет хорошо, но потенциальное уменьшение подтяжки до 10 кОм (постоянная времени теперь составляет 1/100 битового периода) было бы хорошей идеей.На этот вопрос есть отличные ответы. Теперь я еще немного прочитал и хотел привести полный пример одного из вариантов, предложенных в качестве комментария. Как упоминал @Justme, метод BJT не будет работать, поскольку база будет удерживать излучатель и препятствовать прохождению сигнала TX. Как упоминали @brhans и @mckeith, логическая ИС с функцией «Ioff»/«защита от отключения питания» является одним из решений, как показано ниже:
Обратите внимание, что эти ИС имеют немного другую конфигурацию драйвера тотемного полюса CMOS, которая предотвращает переход диода от линии ввода-вывода к формированию Vcc (который иногда используется или называется «ESD-диод»). Вместо того, чтобы подключать подложку P-канального МОП-транзистора непосредственно к источнику (Vcc), они добавляют дополнительный блокировочный диод, который обеспечивает функциональность Ioff.
Подробнее об этом можно узнать на странице https://www.ti.com/lit/an/scea026/scea026.pdf .
Я хотел бы набросать несколько иной метод решения этой проблемы, хотя он может не применяться из-за требований к дизайну.
На всех этих дешевых маленьких коммутационных платах FTDI есть перемычка, позволяющая выбрать, должна ли плата подтягивать целевое напряжение до 3,3 В или 5 В. Однако есть и третий вариант: оставьте перемычку отсоединенной и подключите VCC цели к контакту VCC коммутационной платы.
Таким образом, вам нужно 4 провода (RX, TX, VCC и GND) для подключения FTDI к цели, но вы не только допускаете различные варианты напряжения, но также решаете проблему обратного питания через защитные диоды.
брахи
брызнуть