3.8. Согласование уровней

Вывод GPIO на камере выдаёт около 3,3 В в состоянии высокого уровня. Устройство на другой стороне может работать при 5 В (старые микроконтроллеры, многие платы датчиков) или 1,8 В (новые датчики, некоторые шины между микросхемами). Прямое соединение этих двух иногда безопасно, а иногда губительно; согласование уровней – это схема, которая надёжно перекрывает этот разрыв.

3.8.1. Почему прямое управление с пересечением напряжений может повредить вывод

У контактной площадки ввода-вывода каждой микросхемы есть пара встроенных защитных диодов: один от вывода к земле, другой от вывода к шине питания микросхемы. Они нужны для поглощения электростатического разряда (ESD) – кратковременного высоковольтного скачка от статического электричества, который может попасть на вывод при работе с платой. Человек, прошедший по ковру, может нести на себе несколько киловольт статики; прикосновение к не тому выводу передаёт этот заряд микросхеме за наносекунды. Верхний защитный диод открывается в прямом направлении и безопасно отводит импульс в шину питания, прежде чем тот достигнет транзисторов внутри микросхемы.

Когда сигнал 5 В подаётся непрерывно на вывод 3,3 В, не толерантный к 5 В, верхний защитный диод проводит ток постоянно. Диоды рассчитаны на короткие импульсы ESD, а не на установившийся ток; шина питания начинает подниматься выше 3,3 В, диод нагревается, и выходит из строя либо вывод, либо встроенный регулятор напряжения.

Выводы, толерантные к 5 В, используют другой входной каскад – верхний диод подключён к более высокой шине или отсутствует – поэтому подача 5 В безвредна. Толерантность выводов платы к 5 В зависит от платы; смотрите краткий справочник по OpenMV Cam.

У обратного направления своя проблема. GPIO с уровнем 3,3 В в состоянии высокого уровня даёт на проводе около 3,3 В. Приёмник на 5 В, которому для распознавания высокого уровня нужно 0.7 × Vcc, имеет порог на уровне 3,5 В; 3,3 В может быть прочитано как низкий уровень или как неоднозначное состояние. Даже без повреждений сигнал не работает надёжно.

Преобразователь уровней решает проблему в обоих направлениях.

3.8.2. N-MOSFET в роли ключа

В приведённых ниже схемах используется один N-канальный MOSFET. У него три вывода – затвор (gate), сток (drain) и исток (source) – и он ведёт себя как электрически управляемый ключ.

Управляющим входом служит напряжение между затвором и истоком, обозначаемое Vgs (напряжение затвор-исток):

Vgs = (gate voltage) - (source voltage)

MOSFET реагирует именно на эту разность, а не на абсолютное напряжение на каком-либо одном выводе. Его поведение определяется Vgs:

  • Когда Vgs выше порогового напряжения MOSFET (обычно около 1 В для маломощного логического элемента), транзистор открывается, и ток свободно течёт от стока к истоку.

  • Когда Vgs равно нулю или ниже, транзистор закрывается, и от стока к истоку ток практически не течёт.

Путь сток-исток – это коммутируемый токовый путь; Vgs открывает или закрывает этот ключ.

У N-MOSFET также есть паразитный диод (body diode) между стоком и истоком, который проводит ток, когда сток оказывается ниже истока более чем на ~0,6 В. Этот диод – побочный результат производства; рассматриваемый ниже двунаправленный преобразователь использует его намеренно.

3.8.2.1. Правила подключения

N-MOSFET – это не симметричный трёхвыводной прибор. Паразитный диод направлен от истока (анод) к стоку (катод), а каналом управляет Vgs. Отсюда следуют два правила, которые должны соблюдаться для каждой ключевой схемы на N-MOSFET:

  • Исток подключается к более низкому напряжению; сток – к более высокому. Когда сток подключён к более высокой шине, паразитный диод смещён в обратном направлении и не действует. Поменяйте их местами – и паразитный диод всё время смещён в прямом направлении: ток течёт от теперь более высокого истока через паразитный диод к теперь более низкому стоку независимо от того, что делает затвор. MOSFET перестаёт быть ключом – он непрерывно пропускает ток, сигнал нельзя выключить, и прибор часто перегревается и выходит из строя.

  • Затвор привязан к шине напряжения истока. Удержание затвора на той шине, на которой исток находится в покое, делает Vgs = 0 в режиме ожидания, что значительно ниже порога; MOSFET остаётся надёжно закрытым, пока что-то либо не поднимет затвор выше истока (одностороннняя схема ниже), либо не опустит исток ниже затвора (двунаправленная схема). Оставьте затвор подвешенным где-то ещё – и закрытое состояние перестаёт быть определённым: шум, утечка или паразитная ёмкость могут увести Vgs выше порога и случайно открыть MOSFET.

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

3.8.3. Односторонний 3,3 В → 5 В

Простейший преобразователь уровней проталкивает однонаправленный сигнал с GPIO камеры на вход 5 В. С задачей справляется один N-MOSFET плюс два резистора.

N-канальный MOSFET, включённый как инвертор. GPIO с уровнем 3,3 В управляет затвором; исток подключён к земле; сток подтянут к 5 В через 10 кОм; со стока также снимается выход 5 В.

N-MOSFET согласует уровни (и инвертирует) сигнала 3,3 В в выход 5 В.

Когда GPIO выдаёт высокий уровень (3,3 В на затворе), Vgs выше порога и MOSFET открывается; сток подтягивается к ~0 В. Когда GPIO выдаёт низкий уровень (0 В на затворе), MOSFET закрыт, и подтягивающий резистор 10 кОм поднимает сток до 5 В.

Выход является инверсией входа. Программа может вернуть сигнал в исходное состояние (записать 0 для «высокого уровня на выходе 5 В») либо каскадно соединить два каскада, чтобы получить неинвертированный сигнал при удвоенном числе компонентов.

3.8.4. Двунаправленный преобразователь на одном N-MOSFET

Для линии, которая должна управляться с любой из сторон – общей шины, где любой конец может опустить линию в низкий уровень – стандартной схемой является один N-MOSFET на линию с одним подтягивающим резистором к питанию каждой стороны.

Двунаправленный преобразователь уровней на N-MOSFET. MOSFET соединяет сигнальную линию 3,3 В слева и сигнальную линию 5 В справа; затвор подключён к питанию 3,3 В, исток -- к сигналу 3,3 В, сток -- к сигналу 5 В; каждая сигнальная линия имеет свой подтягивающий резистор к своему питанию.

Один N-MOSFET соединяет линии 3,3 В и 5 В; у каждой стороны свой подтягивающий резистор.

Затвор привязан к питанию 3,3 В, поэтому поведение MOSFET зависит от того, какая сторона управляет линией:

  • Обе стороны в покое. Исток находится на уровне 3,3 В через левый подтягивающий резистор; затвор на уровне 3,3 В; Vgs = 0; MOSFET закрыт. Сторона 5 В подтягивается к 5 В через правый подтягивающий резистор. Обе стороны читаются как высокий уровень.

  • Сторона 3,3 В опускает линию. Исток падает до 0 В; Vgs поднимается выше порога; MOSFET открывается и проводит ток от истока к стоку. Сторона 5 В опускается в низкий уровень через транзистор.

  • Сторона 5 В опускает линию. Сток падает до 0 В; паразитный диод MOSFET (от стока к истоку) смещается в прямом направлении и проводит ток; исток (сторона 3,3 В) опускается примерно до 0,6 В. Тогда Vgs превышает порог, и MOSFET полностью открывается, опуская обе стороны в низкий уровень.

BSS138 – это стандартный N-MOSFET для такой схемы; маломощные логические N-MOSFET с похожими пороговыми напряжениями затвора ведут себя здесь точно так же.