Notice
Recent Posts
Recent Comments
Link
관리 메뉴

거북이처럼 천천히

STM32의 GPIO Mode 본문

Embedded Programming (STM)

STM32의 GPIO Mode

유로 청년 2025. 10. 28. 21:49

1. GPIO Push-Pull (푸시-풀)

Push-Pull 모드는 내부적으로 두 개의 트랜지스터(일반적으로 P-MOSFET와 N-MOSFET)가 VDD(전원)와 GND(접지)에 각각 연결된 구조입니다.

  • High 출력 시: P-MOS가 켜지고(ON) N-MOS가 꺼져(OFF), GPIO 핀을 VDD(예: 3.3V)로 강하게 밀어 올립니다(Push).
  • Low 출력 시: P-MOS가 꺼지고(OFF) N-MOS가 켜져(ON), GPIO 핀을 GND(0V)로 강하게 끌어내립니다(Pull).

주요 특징:

  • 능동적인 출력: High와 Low 상태 모두를 MCU가 능동적으로 구동합니다.
  • 빠른 속도: 신호의 상승(Rising) 및 하강(Falling) 속도가 빠릅니다.
  • 높은 구동력: VDD로 전류를 공급(Source)하거나 GND로 전류를 흡수(Sink)하는 능력이 모두 좋습니다.
  • 일반적인 용도: LED 점등 (저항 필요), SPI, UART의 TX 핀 등 대부분의 범용 디지털 출력에 사용됩니다.

GPIO Push-Pull Circuit

 

 

 

2.  GPIO Open-Drain (오픈-드레인)

 

Open-Drain은 내부적으로 GND에 연결된 하나의 트랜지스터(N-MOSFET)만 사용합니다. "Drain"이 VDD에 연결되지 않고 "열려있다(Open)"고 해서 붙은 이름입니다.

  • Low 출력 시: N-MOS가 켜져(ON), GPIO 핀을 GND(0V)로 강하게 끌어내립니다(Pull). (Push-Pull의 Low 동작과 동일)
  • High 출력 시: N-MOS가 꺼져(OFF), GPIO 핀은 **MCU 내부의 어떤 것에도 연결되지 않은 상태(High-Impedance 또는 Hi-Z)**가 됩니다. 즉, '떠 있는(Floating)' 상태가 됩니다.

주요 특징:

  • 수동적인 High 상태: High 상태를 만들기 위해서는 반드시 외부에 풀업(Pull-up) 저항을 VDD(또는 다른 전압)와 핀 사이에 연결해야 합니다. 이 저항이 핀을 VDD 레벨로 '당겨'줍니다.
  • Wired-AND 기능: 여러 개의 Open-Drain 핀을 하나의 라인에 연결할 수 있습니다. 이 중 하나라도 Low를 출력하면 전체 라인이 Low가 됩니다. 모든 핀이 High(Hi-Z) 상태여야만 풀업 저항에 의해 라인이 High가 됩니다.
  • 느린 속도: High로 상승하는 속도가 외부 풀업 저항의 값과 라인의 커패시턴스(RC 시정수)에 의해 결정되므로 Push-Pull보다 느립니다.

 

GPIO Open Drain Circuit

 

 

 

 

3. 💡 핵심 차이점 및 사용 시기

특징 Push-Pull (푸시-풀) Open-Drain (오픈-드레인)
High 출력 내부 P-MOS가 능동적으로 VDD로 구동 외부 풀업 저항이 수동적으로 VDD로 당김
High 상태 VDD (강한 구동) Hi-Z (MCU는 연결을 끊음)
외부 소자 (일반적으로) 필요 없음 외부 풀업 저항 필수
주요 용도 단방향, 고속, 일반적인 출력 (UART-TX, SPI, LED 제어) 양방향 버스, 다중 마스터/슬레이브 (I²C, SMBus)
특별 기능 없음 Wired-AND 로직, 레벨 시프팅 (풀업을 다른 전압에 연결 시)

'Embedded Programming (STM)' 카테고리의 다른 글

게시글 작성할 것 정리  (0) 2025.09.01