[AOSP] GPIO 에 대해서

1. GPIO란?

  • GPIO 내부 구조
    [ PAD (핀) ]
     ↓
    [ Pull-up / Pull-down / Drive Strength ]
     ↓
    [ Direction (Input / Output) ]
     ↓
    [ Data Register (High / Low 값)]
    

1) 예시

mux {
    pins = "gpio164";
    function = "gpio";
};
config {
    pins = "gpio164";
    drive-strength = <2>;
    bias-disable;
    output-low;
};
항목 의미
pins 실제 물리 핀
function GPIO로 쓸지, 다른 peripheral(UART, SPI 등) 쓸지
drive-strength 출력 전류 세기
bias 기본 전압 상태
output-low 초기 출력값

2. GPIO 설정 요소

function (mux)

// (핀 mux)
function = "gpio";
  • SoC 핀은 보통 다중 기능 지원 (gpio, uart, spi, i2c)

direction (입출력)

2) output

output-high;
output-low;
  • 출력 모드 + 초기 값 설정
  • register 기준: DIR = 1 (output), DATA = 1 or 0

1) input

input-enable;
  • 입력 모드 활성화
  • 없으면 output default 되는 SoC도 있음

bias

회로나 시스템에서 기본 동작 상태를 설정하는 기준 값 GPIO 입력 핀은 아무것도 연결 안 되어 있으면 전압이 떠있는 상태(floating)가 됨.

1) bias-disable

bias-disable;
  • 바이어스를 비활성화하거나 사용하지 않도록 설정하는 것
  • 특정 입력 상태에서 기본값(High/Low)을 설정하지 않고 부동 상태(floating)로 남겨둠.

2) bias-pull-up

bias-pull-up;
  • 외부에서 LOW로 당기지 않으면 계속 HIGH 유지
  • 인터럽트 (Active Low)

3) bias-pull-down

bias-pull-down;
  • 외부에서 HIGH 주지 않으면 LOW 유지
  • HIGH가 들어오면 동작하는 신호

drive-strength

drive-strength = <2>;
의미
2mA 약함
4mA 일반
8mA 강함
16mA 매우 강함

output-low

gpio164  output-low
  • 부팅 시 LOW 유지

output-high

gpio58  output-high
  • 부팅 시 HIGH 유지

input-pull-down

gpio102  pull-down + input
  • 기본 LOW
  • 외부에서 HIGH 주면 이벤트 발생

input-pull-up

gpio166  pull-up + input
  • 기본 HIGH
  • LOW로 떨어지면 이벤트

input-none

gpio117, gpio119  bias-disable
  • 외부 회로가 이미 pull-up/down 있음
  • SoC 내부 pull 안 쓰고 외부 회로에 맡김

Categories:

Updated:

Leave a comment