Push-pull VS open-drain.
В конце прошлой статьи обещал рассказать чем отличается выход push-pull(PP) от open-drain(OD).
Для того чтобы разобраться, предлагаю рассмотреть устройство выхода push-pull.
По сути, он состоит из двух ключей, один подтягивает вывод к питанию, другой к земле.
А теперь open-drain.
На картинке видно, что open-drain может быть с внутренней подтяжкой и без неё.
Если использовать подтяжку становится вообще непонятно чем он отличается от push-pull.
А теперь давайте подумаем, что будет если мы соединим два PP выхода и установим на них разные логические уровни?
Из-за конфликта уровней один из выходов просто выгорит, так как ток, возникший из-за разности потенциалов, ни чем не ограничен.
А теперь так же соединим два вывода OD.
Видно, что потенциал линии притянется к земле и ничего не сгорит. Следовательно выводы OD можно соединять между собой не боясь чего-нибудь сжечь. Но если через один вывод можно пропустить 20 мА, то объединив 5 выводов, через них можно пропустить 100мА.
Это и есть тот случай когда PP не может заменить OD.
А теперь представим другую ситуацию, есть шина данных, например, I2C у которой логическая единица не соответствует напряжению нашего МК и равна либо 1.8, либо 5 вольт. В обоих случаях, используя PP выход, подключить МК к такой шине не получится потому, что PP не может выдать ни 1.8, ни 5 вольт. Но это очень просто сделать, используя OD и внешний подтягивающий резистор.
На этом всё, в следующей статье опишу как отследить переполнение стека.
Для того чтобы разобраться, предлагаю рассмотреть устройство выхода push-pull.
По сути, он состоит из двух ключей, один подтягивает вывод к питанию, другой к земле.
А теперь open-drain.
На картинке видно, что open-drain может быть с внутренней подтяжкой и без неё.
Если использовать подтяжку становится вообще непонятно чем он отличается от push-pull.
А теперь давайте подумаем, что будет если мы соединим два PP выхода и установим на них разные логические уровни?
Из-за конфликта уровней один из выходов просто выгорит, так как ток, возникший из-за разности потенциалов, ни чем не ограничен.
А теперь так же соединим два вывода OD.
Видно, что потенциал линии притянется к земле и ничего не сгорит. Следовательно выводы OD можно соединять между собой не боясь чего-нибудь сжечь. Но если через один вывод можно пропустить 20 мА, то объединив 5 выводов, через них можно пропустить 100мА.
Это и есть тот случай когда PP не может заменить OD.
А теперь представим другую ситуацию, есть шина данных, например, I2C у которой логическая единица не соответствует напряжению нашего МК и равна либо 1.8, либо 5 вольт. В обоих случаях, используя PP выход, подключить МК к такой шине не получится потому, что PP не может выдать ни 1.8, ни 5 вольт. Но это очень просто сделать, используя OD и внешний подтягивающий резистор.
На этом всё, в следующей статье опишу как отследить переполнение стека.
Похожие статьи