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 согласует уровни (и инвертирует) сигнала 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 соединяет линии 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 с похожими пороговыми напряжениями затвора ведут себя здесь точно так же.