본문 바로가기
임베디드 개발/펌웨어

GPIO output mode , Push-Pull 과 Open drain 의 차이

by eteo 2022. 6. 5.

출처 : 

 

 

 

 

 

 

 

 

Push-Pull 일때

 

인풋이 1이면 아웃풋이 1이 나오고

 

 

 

 

인풋이 0이면 아웃풋이 0이 나온다.

 

 

 

 

 

 

 

 

 

 

 

Open Drain 일때

단순히 Push-Pull에서 위의 PMOS 트랜지스터가 disabled 된 형태이다.

 

 

 

 

 

 

 

인풋이 0일때 아웃풋이 0이다.

 

 

 

 

 

 

 

인풋이 1일때는 아웃풋이 플로팅 상태이다.

 

 

 

 

 

 

 

 

 

이러한 회로는 외부 전원과 풀업저항을 연결해서 사용해야하는데, MCU의 출력레벨인 3.3V가 아닌 레벨이 다른 전원 소스를 사용할 수 있게끔하여 유연성을 제공한다.

 

 

 

 

 

 

또한 오픈드레인은 I2C버스를 구성하는데도 쓰인다. 

https://deepbluembedded.com/stm32-i2c-tutorial-hal-examples-slave-dma/

SCL, SDA 라인에는 풀업저항이 달려있고 다수의 디바이스가 연결된 형태로, 통신을 하지 않을 때는 라인이 HIGH상태를 유지하다가 어떤 마스터가 신호를 LOW로 당기고 통신을 시작했을 때 다른 마스터가 끼어들 수 없는 충돌 방지 기능이 있다.