BJT для предотвращения отладки платы UART?

Вопрос

Может ли простой 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и начать вызывать проблемы.

введите описание изображения здесь

Рассмотрим что-то вроде широко используемой схемы сдвига уровня для I2C.
Может оптоизолятор?

Ответы (5)

Основная идея в порядке. Но детали неверны. При 3,3 В на базе транзистора транзистор будет в странном состоянии. В тот момент вы могли бы думать об этом больше как о двух диодах с минимальным действием транзистора. Переход база-эмиттер будет подобен подтягивающему диоду для MCU_UART_RX, а переход база-коллектор будет подобен подтягивающему диоду для FTDI_TX.

Я думаю, что FTDI_TX будет трудно снизить уровень коллектора, если база подключена к 3,3 В. ВОЗМОЖНО, базовый резистор мог бы спасти ситуацию, но мне он все еще не нравится и я ему не доверяю.

Что вам, вероятно, нужно, так это переключатель PMOS верхнего плеча. Это может иметь затвор, управляемый NMOS, затвор которого привязан к 3,3 В. Если у вас есть место для двух пакетов SOT-23, это должно работать нормально. Возможно, вы сможете найти PMOS и NMOS вместе в одном пакете, чтобы сэкономить место, если места слишком мало для SOT-23.

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

ИЛИ вы можете использовать переключатель аналоговой шины с функцией Ioff. Они обеспечивают изоляцию при отключении питания. Я позволю вам использовать поисковую систему, чтобы узнать больше об этом варианте.

Если вы решите использовать буфер (что в некоторых отношениях является самым простым решением, но немного менее интересным), вы можете посмотреть номер детали SN74LVC1G34. Это простой буфер. Но из-за функции «Ioff» он будет иметь высокий импеданс на всех входах, когда он не включен. Он не будет передаваться через MCU_UART_RX.

Нет, это не сработает.

Независимо от того, подключен FTDI_TX или нет, при включенном питании микроконтроллера 3,3 В он всегда будет поддерживать высокий уровень эмиттера, делая передачу данных невозможной.

Duoh! ... хороший момент! Эмиттер никогда не бывает более чем на 0,7 меньше базы, независимо от того, что вы собираетесь делать с транзистором, это по сути диод от B до E.

Хакерская, но функциональная альтернатива состоит в том, чтобы иметь последовательный диод в сочетании с подтягивающим напряжением на стороне MCU.

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Когда высокий уровень передается по FTDI, подтяжка подтягивает сигнал RX к высокому уровню. Когда передается низкий уровень, диод подтягивает его к низкому уровню. За счет падения напряжения на диоде запас помехоустойчивости микроконтроллера снижается примерно на 0,3 В.

Из-за уменьшенного запаса шума я бы не рекомендовал это для основных коммуникационных шин. Однако это может быть приемлемым решением для порта отладки, который используется только с короткими кабелями.

на самом деле это было решение, о котором я тоже думал. Не супер элегантный, но, вероятно, работает.
Мне нравится простота! Одна вещь, с которой следует быть осторожным, это тот факт, что RX MCU больше не приводится в высокий уровень с сильным приводом, а только подтягивается, и это округлит края цифрового сигнала в зависимости от емкости. Предполагая, что емкость составляет 10 пФ (емкость выводов плюс дорожки на печатной плате) в сочетании с подтяжкой 100 кОм, мы получаем постоянную времени 1 мкс (t = RC). Это примерно 1/10 битового периода при работе с обычной 115200скоростью передачи UART. Это, вероятно, будет хорошо, но потенциальное уменьшение подтяжки до 10 кОм (постоянная времени теперь составляет 1/100 битового периода) было бы хорошей идеей.
@gbmhunter Верно. Емкость диода способствует сохранению фронтов, поэтому она также будет немного зависеть от соотношения между входной емкостью и емкостью диода.
@jpa хорошее замечание относительно емкости диода. Напоминает мне «ускоряющие конденсаторы», добавленные параллельно резисторам в некоторых схемах.

На этот вопрос есть отличные ответы. Теперь я еще немного прочитал и хотел привести полный пример одного из вариантов, предложенных в качестве комментария. Как упоминал @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 к цели, но вы не только допускаете различные варианты напряжения, но также решаете проблему обратного питания через защитные диоды.