14

Как и зачем Согласовывать логические уровни Цифровых МИКРОСХЕМ

Зачем согласовывать логические уровни Микросхем

В цифровой электронике часто приходится соединять между собой микросхемы, работающие от разных напряжений питания и имеющих различные Логические Уровни.

Казалось бы, что тут сложного — «логический ноль» это ноль, а «логическая единица» это единица. Но на практике всё не так просто.

Несогласованность уровней может привести не только к сбоям в работе, но и к выходу из строя дорогостоящих модулей.

Приглашаю всех на одноимённый Telegram канал и чат: Telegram Канал Азбука РадиоСхем

Что такое логические уровни?

Любая цифровая микросхема понимает только два состояния:

  • 0 (логический ноль) – низкий уровень напряжения.

  • 1 (логическая единица) – высокий уровень напряжения.

Но вот значения этих уровней зависят от технологии, в которой выполнен чип, и от его питания.

Например:

  • CMOS на 3.3 В:0 = 0…0.8 В
    1 = от 2.0 В и выше

  • TTL на 5 В:0 = 0…0.8 В
    1 = от 2.0 В и выше

Отсюда сразу видно: если подключить выход 3.3 В логики к входу 5 В микросхемы — скорее всего всё будет работать(но опять же , не всегда).

А вот наоборот — подача 5 В на вход, рассчитанный на 3.3 В, может его просто сжечь.

Параметры уровней напряжения для цифровых схем

Для цифровых входов:

•Uвх.0.мин. (VIL.min) – минимальное напряжение, воспринимаемое как «0»;

•Uвх.0.макс.(VIL.max) – максимальное напряжение, воспринимаемое как «0»;

•Uвх.1.мин.(VIH.min) – минимальное напряжение, воспринимаемое как «1»;

•Uвх.1.макс.(VIH.max) – максимальное напряжение, воспринимаемое как «1»;

•Uвх.п (VIT) – напряжение переключения (threshold voltage), значения выше которого воспринимаются как «1», а ниже – как «0».

Для цифровых выходов:

•Uвых.0 (VOL.typ) – типовое напряжение, которое устанавливается при выводе «0»;

•Uвых.0.мин.(VOL.min) – минимальное напряжение, которое может быть установлено при выводе «0»;

•Uвых.0.макс.(VOL.max) – максимальное напряжение, которое может быть установлено при выводе «0»;

•Uвых.1(VOH.typ) – типовое напряжение, которое устанавливается при выводе «1»;

•Uвых.1.мин.(VOH.min) – минимальное напряжение, которое может быть установлено при выводе «1»;

•Uвых.1.макс. (VOH.max) – максимальное напряжение, которое может быть установлено при выводе «1».

Зачем нужно согласование уровней?

  1. Защита микросхем – 3.3-вольтовые входы не выдержат прямой подачи 5 В.

  2. Корректная работа логики – микросхема может не «увидеть» единицу, если она недостаточно высока.

  3. Совместимость модулей – большинство современных датчиков, дисплеев и модулей Arduino работают на 3.3 В, а сами Arduino (UNO, Nano) – на 5 В.

Без согласования есть риск получить «мертвый» дисплей или датчик, а иногда и целую плату в утиль.

Подключение Дисплея GMT130-V1.0 (IPS 240×240, контроллер ST7789) к Arduino Nano

Основные способы согласования уровней

1. Делитель напряжения на резисторах

Самый простой вариант для сигналов в одну сторону (5 В → 3.3 В).
Формула простая: Vout=Vin⋅R2R1+R2V_{\text{out}} = V_{\text{in}} \cdot \frac{R2}{R1+R2}Vout=Vin⋅R1+R2R2

Например, при R1 = 2 кОм и R2 = 3.3 кОм из 5 В получаем примерно 3.3 В.
Минус

  • — не всегда это работает

  • – плохо подходит для высоких частот (SPI, I²C).

2. Специальные микросхемы-переводчики уровней

Существуют готовые чипы (например, TXB0108, 74LVC245), которые умеют переводить уровни в обе стороны и на высоких скоростях.
Это надёжный вариант для «серьёзных» проектов.

3. Транзисторные согласователи

Можно собрать схему на MOSFET или даже на биполярных транзисторах (например, на советских КТ315 или современных BC547).
Такой преобразователь работает быстро и позволяет согласовывать линии в обе стороны, включая шину I²C.

Ниже представлен пример схемы на биполярном транзисторе обратной проводимости. Транзисторы можно использовать различные.

Схема — это дублируется в зависимости от того сколько вам ножек одной микросхемы нужно согласовать с другой

Для этих целей также кроме биполярных микросхем очень хорошо а можно сказать даже идеально подходят и  mosfet.

Вот очередной пример такой схемы

Пример из практики

В одном из моих проектов я подключал дисплей на контроллере ST7789, работающий от 3.3 В, к Arduino Nano на 5 В. Сначала я сделал соединение напрямую – результат: один из дисплеев вышел из строя.

После этого я собрал плату согласования уровней на старых советских транзисторах КТ315. Несмотря на возраст этих деталей, схема заработала отлично, и теперь дисплей работает стабильно.

Это хороший пример того, что согласование уровней – не формальность, а необходимость.

Выводы

  • Никогда не соединяйте напрямую микросхемы, работающие на разных напряжениях.

  • Для односторонних медленных сигналов можно использовать резистивный делитель.

  • Для двусторонних и быстрых шин лучше ставить транзисторные согласователи или специализированные микросхемы.

  • Даже простая самодельная схема на старых транзисторах может спасти ваш модуль от поломки.

Arduino & Pi

1.5K постов20.8K подписчиков

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу