Перейти к содержанию

Двухтактный выход

Двухтактный выход — самая распространённая схема цифрового выхода: один транзистор подключает вывод к питанию, другой — к общему проводу. Такой выход сам создаёт оба логических уровня и не нуждается в подтягивающем резисторе.

Обновлено Редакция GAW

Двухтактный выход (push-pull) — схема цифрового выхода из двух транзисторов, включённых последовательно между питанием и общим проводом, с выводом в средней точке. В КМОП-микросхемах это P-канальный MOSFET к питанию и N-канальный к земле. При логической единице открыт верхний транзистор и «толкает» (push) вывод к питанию, при нуле открыт нижний и «тянет» (pull) его к земле. Оба уровня выход создаёт сам и с одинаково быстрыми фронтами — в отличие от выхода с открытым стоком, где единицу медленно поднимает подтягивающий резистор.

В микроконтроллере

Выходной каскад вывода STM32 — пара транзисторов P-MOS и N-MOS. В двухтактном режиме работают оба, в режиме открытого стока P-MOS не включается никогда. У STM32F1 режим выбирают полем CNF регистра GPIOx_CRL/CRH, у STM32F4 — битом OTYPER: 0 — двухтактный выход, 1 — открытый сток. Регистры, скорость выводов и альтернативные функции разобраны в статье о GPIO STM32.

Параметр STM32F103ЗначениеДокумент
Ток вывода, абсолютный максимум25 мАDS5319, табл. 7
Сумма токов всех выводов150 мАDS5319, табл. 7
Уровни при ±8 мА≤ 0,4 В и ≥ VDD − 0,4 ВDS5319, табл. 37
Уровни при ±20 мА≤ 1,3 В и ≥ VDD − 1,3 ВDS5319, табл. 37

Когда двухтактный выход не подходит

  • Общая линия. Два двухтактных выхода, выдающих разные уровни, замыкают питание на землю через свои транзисторы. Шины с несколькими передатчиками, как I²C, строят на открытом стоке.
  • Другое напряжение. Двухтактный выход поднимает линию только до своего питания. Чтобы получить 5 В от микроконтроллера на 3,3 В, нужен открытый сток с подтяжкой к 5 В на выводе, который это допускает, или преобразователь уровней.

Для светодиода на двухтактном выходе ток ограничивают резистором — его рассчитает калькулятор резистора для светодиода.

Частые вопросы

Чем двухтактный выход отличается от открытого стока?

Двухтактный выход формирует оба уровня сам: единица включает верхний транзистор к питанию, ноль — нижний к земле, поэтому оба фронта быстрые. Открытый сток умеет только прижимать линию к нулю, а единицу создаёт внешний резистор. Зато выходы с открытым стоком можно соединять на одной линии, а двухтактные — нельзя.

Почему нельзя соединять два двухтактных выхода?

Если один выход выдаёт единицу, а другой ноль, верхний транзистор первого и нижний транзистор второго замкнут питание на землю через себя. Ток ограничен только сопротивлением открытых транзисторов, выходы перегреваются, а уровень на линии оказывается неопределённым. Для общих линий используют открытый сток или выходы с третьим состоянием.

Какой ток может отдать двухтактный выход STM32?

У STM32F103 абсолютный максимум — 25 мА на вывод и 150 мА на все выводы вместе с потреблением самого микроконтроллера. Нормированные уровни даташит гарантирует при ±8 мА: низкий не выше 0,4 В, высокий не ниже VDD − 0,4 В. Для светодиода удобно ограничить ток 8 мА резистором.

Источники

  1. STMicroelectronics. RM0008: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx reference manual — рис. 13–14 и табл. 20: выходной каскад P-MOS и N-MOS, режимы двухтактного выхода и открытого стока
  2. STMicroelectronics. STM32F103x8, STM32F103xB datasheet (DS5319) — табл. 7 — 25 мА на вывод, 150 мА сумма; табл. 37 — уровни при ±8 и ±20 мА
  3. STMicroelectronics. AN4899: STM32 microcontroller GPIO hardware settings and low-power consumption — 5 В допустимы на выводе FT только в режиме входа или открытого стока

Нашли ошибку?