Выход «с открытым коллектором» (у биполярного транзистора) или «с открытым стоком» (у MOSFET) — это выход, который умеет только притягивать линию к земле. Верхнего ключа внутри нет, поэтому единицу надо создавать снаружи, резистором к питанию.
Как выглядит: внутри чипа транзистор, коллектор которого выведен наружу. Открыт — линия на земле (0). Закрыт — линия «висит», и её подтягивает резистор (1).
Зачем так делают:
— Несколько устройств могут сидеть на одной линии без конфликта: если два выхода одновременно прижмут к земле, ничего не сгорит (в отличие от обычных push-pull выходов, которые будут «драться»).
— Можно согласовать разные напряжения: линия подтянута к 5 В, а чип питается от 3.3 В — он всё равно прижмёт её к нулю.
— Получается «монтажное ИЛИ» (wired-OR): линия в нуле, если хотя бы один выход активен.
Где это встречается постоянно: I2C (обе линии — открытый сток с подтяжками), прерывания от нескольких устройств на одной линии, входы сброса, драйверы светодиодов и реле (ULN2003), компараторы с открытым коллектором.
Что важно: без подтяжки линия не работает вообще (висит в воздухе). Номинал подтяжки — компромисс между скоростью (меньше резистор — быстрее фронт) и током (меньше резистор — больше потребление, когда выход прижат к земле).
Ограничение: ток прижат к земле равен U/R. При 5 В и 1 кОм это 5 мА через открытый транзистор — он должен это выдерживать. При 100 Ом — 50 мА, уже нужен мощный выход.
Открытый сток объясняет I2C, общие линии прерываний и то, почему без подтяжки шина мертва.
Найди на схеме I2C подтягивающие резисторы к питанию. Пойми, что оба устройства «тянут вниз», а вверх линию возвращает только резистор.
Проверь себя
Почему два обычных push-pull выхода нельзя соединить на одну линию, а два открытых стока — можно?
Если один выдаёт 1, а другой 0, push-pull выходы создают короткое замыкание через оба транзистора. Открытый сток умеет только прижимать к земле, поэтому конфликт сводится к «оба тянут вниз» — безопасно.
-
Wikipedia: Open collector
открытый коллектор и сток
-
Спецификация I²C-bus (NXP UM10204) на i2c-bus.org
шина с открытым стоком