[임베디드 6강] gpio 설정

강지원·2024년 6월 25일

STM32 강의

목록 보기
9/33

1. gpio output 설정 - LED

PC13이 low가 되어야 전류가 흐름 = LED on
PC13이 High면 전류가 흐르지 않음 = LED off

  • GPIO output level : high, low
    설정한 핀의 초기 출력 값
  • GPIO mode : Push Pull, open Drain
  • GPIO Pull-up/Pull-down
    주로 입력모드에서 사용
  • Maximum output speed : high, Medium, low
    논리값 변화(0v -> 3.3v, 3.3v-> 0v로 변하는 속도)

GPIO output level

high 상태로 설정
= PC13이 High면 LED가 OFF된 상태가 초기값이다

typedef enum
{
  GPIO_PIN_RESET = 0u,
  GPIO_PIN_SET  // set 상태 = 1
} GPIO_PinState;

GPIO mode

Push Pull, Open Drain 이 있다

PUSH-PULL 회로

BJT회로, MOSFET회로 두 경우가 있다

전류는 높은 전압에서 낮은 전압으로 흐름

Open Drain


단순히 gnd를 열었다 닫았다 하는 동작

  • 스위치를 닫으면 gnd와 연결되어 0v low level이 출력됨
  • 스위치를 open하면 floating 상태

MCU에서 3.3V를 사용하는데
5V로 작동하는 칩을 사용할 경우 사용한다
LED를 사용하기에는 맞지 않음

2. gpio input pull up/pull down

풀업 : 위로 끌어당기다, 기본값 1
풀다운 : 아래로 끌어당기다, 기본값 0

floating

디지털 신호는 high or low
0,1도 되지만 실제는 그렇지 않은 경우가 많음

정전기, 잡음에 의해 오류가 생길 수 있음

풀업저항

저항을 전원 앞에 붙여줌
저항으로 인해 input pin은 high 상태 = 풀업 상태

* 주로 4.7k ~ 10k 저항
i2c같은 경우 4.7k를 붙이고
많은 i2c를 연결하면 2.7k로 낮추기도 함
-> 데이터 시트 확인해서 설정

스위치를 닫으면 gnd로 전류가 흐름 -> input이 low

만약 저항이 없다면?

스위치를 닫으면 과전류가 흘러서 쇼트상태

아예 전원을 빼면?

스위치를 닫으면 0v가 되지만 스위치를 열면 floating 상태여서 충분하게 high가 될 수 없음

풀다운 저항

저항을 gnd 쪽에 붙임 -> input pin 이 low 상태
스위치를 닫으면 저항 때문에 input이 high가 된다

  • 일반적으로 풀다운 보다는 풀업이 노이즈나 충격에 강하기 때문에 풀업을 사용한다

  • 풀업 / 풀다운은 입력 또는 오픈 드레인 구성에서만 유효하다
    -> 오픈드레인일때 외부회로와 같이 사용하기 때문에 아웃풋에서 의미가 생김

3. gpio input 설정 - button

gnd쪽에 풀다운 저항이 없음 -> 풀업상태이다

0개의 댓글