[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 안 쓰고 외부 회로에 맡김
Leave a comment