전자 회로 설계/회로 및 제어

전자 회로 설계 - [I/O] PUSH-PULL, OPEN-DRAIN

engineer4ever 2025. 3. 16. 00:02

 

1. Push-Pull

- 0 아니면 1의 상태를 출력하는 회로 구성

 

- 입력이 0이면 OUTPUT은 1 : 위의 PNP TR(N-Channel)이 켜져서 VCC와 연결

- Push 상태일 때 VCC 전압을 IC 외부로 전류를 밀어냄

 

- 입력이 1이면 OUTPUT은 0 : 아래 NPN TR(P-Channel)이 켜져서 GND와 연결

- Pull 상태일 때 IC 내부의 GND와 연결되어 IC 외부의 핀으로부터 전류를 끌어당김

BJT MOSFET

 


2. Open-Drain(Open-Collector)

- Push-Pull의 PNP(P-Channel)을 제거

- BJT의 경우 Open-Collector, MOSFET의 경우 Open-Drain이라고 부름

(Collector는 BJT의 Collector, Drain은 MOSFET의 Drain 핀을 의미. Open-Drain과 Open-Collector는 동일한 동작 원리를 가지는 구성을 BJT로 만들었는지, MOSFET로 만들었는지의 차이. Push-Pull은 BJT나 MOSFET구분 없이 부름)

 

- 입력이 0이면 OUTPUT은 0 : 아래 NPN TR(P-Channel)이 켜져서 GND와 연결

- 입력이 1이면 출력은 Open(floating)

Open-Collector Open-Drain

 

 

- 출력이 나오려면 pull-up 저항을 달아야 함

Open-Collector Open-Drain

그러면 왜 굳이 이렇게 사용할까?

 

(1) Open-Drain 사용하는 이유 1

여러개의 장치를 한개의 선으로 양방향 통신을 해야 할때

 

- 여러개의 장치가 한개의 선을 제어하려고 할때, Push-Pull의 경우 어떤 장치는 High, 어떤 장치는 Low이면 Short로 파손 될 수 있음

- 여러개의 장치가 한개의 선을 제어하려고 할때, Open-Drain의 경우, 한개라도 드라이브 하면 Low가 되며 다른 장치에 영향을 주지 않음

 

ex) 아래와 같이 I2C처럼 여러개의 Port를 묶어 사용할때 Open-Drain이 필요함

여러개의 I2C 소자중 한개라도 SCL, SDA 버스를 드라이브 하면 Low가 됨

I2C 연결 및 포트 구조(이미지 출처 : UM10204, Fig.32 발췌)

 

(2) Open-Drain 사용하는 이유 2

연결되어 있는 장치의 레벨이 다를때(Level shifter 용도)

 

ex) MCU가 3.3V이고 연결되는 IC가 5V 출력일 경우, MCU를 Open-Drain 설정하고 pull-up 저항 달아서 사용(VDD 3.3V라고 하더라도, 5V tolelance 지원 되는 MCU가 있긴함)

 

참고 문서 : MAX7325, MAXIM

UM10204, NXP