Двухтактный выход
Двухтактный выход — самая распространённая схема цифрового выхода: один транзистор подключает вывод к питанию, другой — к общему проводу. Такой выход сам создаёт оба логических уровня и не нуждается в подтягивающем резисторе.
Обновлено Редакция 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 мА резистором.
Источники
- STMicroelectronics. RM0008: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx reference manual — рис. 13–14 и табл. 20: выходной каскад P-MOS и N-MOS, режимы двухтактного выхода и открытого стока
- STMicroelectronics. STM32F103x8, STM32F103xB datasheet (DS5319) — табл. 7 — 25 мА на вывод, 150 мА сумма; табл. 37 — уровни при ±8 и ±20 мА
- STMicroelectronics. AN4899: STM32 microcontroller GPIO hardware settings and low-power consumption — 5 В допустимы на выводе FT только в режиме входа или открытого стока
Нашли ошибку?