범용 입출력
General-purpose input/output범용입출력(GPIO)은 입력, 출력 또는 둘 다로 사용할 수 있는 집적회로 또는 전자회로기판상의 미커밋 디지털 신호핀으로 소프트웨어에 의해 제어된다.
GPIO는 사전 정의된 용도가 없으며 [1][2]기본적으로 사용되지 않습니다.GPIO를 사용하는 경우, GPIO의 목적과 동작은 어셈블리 레벨의 회로 설계자(집적회로 GPIO의 경우 회로 기판 설계자, 기판 레벨의 GPIO의 경우 시스템 인테그레이터)에 의해 정의 및 구현됩니다.
집적회로 GPIO
집적회로(IC) GPIO는 다양한 방법으로 구현됩니다.일부 IC는 GPIO를 주요 기능으로 제공하는 반면, 다른 IC는 GPIO를 다른 주요 기능의 편리한 "액세서리"로 포함합니다.전자의 예로는 24개의 GPIO를 병렬 통신 버스에 인터페이스하는 인텔 8255와 GPIO를 I²C나 SMBus 등의 시리얼 통신 버스에 인터페이스하는 다양한 GPIO 익스팬더 IC가 있습니다.후자의 예로는 Realtek ALC260 IC가 있으며, 오디오 코덱의 주요 기능과 함께 8개의 GPIO를 제공합니다.
마이크로컨트롤러 IC에는 보통 GPIO가 포함됩니다.어플리케이션에 따라 마이크로컨트롤러의 GPIO는 외부 회로에 대한 프라이머리 인터페이스를 구성하거나 아날로그 신호 I/O, 카운터/타이머, 시리얼 통신 등 여러 I/O 중 하나일 수 있습니다.
일부 IC, 특히 마이크로컨트롤러에서는 GPIO 핀이 GPIO 이외의 기능을 수행할 수 있습니다.이러한 경우 GPIO의 동작을 구성하는 것 외에 핀을 GPIO(다른 기능과 비교하여)로 작동하도록 구성해야 하는 경우가 많습니다.일부 마이크로컨트롤러 디바이스(예: Microchip dsPIC33 패밀리)에는 GPIO를 프로그램 방식으로 디바이스 핀에 매핑할 수 있는 내부 신호 라우팅 회로가 포함되어 있습니다.FPGA(Field-Programmable Gate Array)는 GPIO 핀 매핑, 인스턴스화 및 아키텍처를 프로그래밍 방식으로 제어할 수 있도록 함으로써 이 기능을 확장합니다.
24개의 GPIO에 대한 병렬 버스 인터페이스 (인텔 8255)
20개의 GPIO를 다른 범용 인터페이스와 조합한 "다기능 인터페이스 어댑터" (MOS Technology 6522)
보드 레벨의 GPIO
많은 회로 기판이 내장 전기 커넥터를 통해 기판 수준의 GPIO를 외부 회로에 노출시킵니다.일반적으로 이러한 각 GPIO는 전용 커넥터 핀을 통해 액세스할 수 있습니다.
IC 기반 GPIO와 마찬가지로, 일부 보드는 보드의 주요 기능을 강화하는 편리한 보조 자원으로 GPIO를 포함할 뿐이며, 다른 보드에서 GPIO는 보드의 중심적인 주요 기능입니다.GPIO는 Arduino, BeagleBone, Rasberry [3]Pi 등의 임베디드 컨트롤러 보드에서도 볼 수 있습니다.이러한 보드는 GPIO를 다른 범용 I/O와 함께 제공합니다.
보드 레벨의 GPIO에는 IC 기반의 GPIO에는 일반적으로 결여되어 있는 기능이 주어지는 경우가 많습니다.예를 들어 슈미트 트리거 입력, 고전류 출력 드라이버, 광 아이솔레이터 또는 이들의 조합을 사용하여 GPIO 신호를 버퍼링 및 조정하고 보드 회로를 보호할 수 있습니다.또한 입력 디바운스, 입력 신호 에지 검출, 펄스 폭 변조(PWM) 출력 등의 상위 수준의 기능이 구현되는 경우도 있습니다.
사용.
GPIO는 GPIO 인터페이스의 전기적 및 타이밍 사양과 충분한 타이밍에 GPIO와 상호작용할 수 있는 소프트웨어의 기능에 의해서만 제한되는 다양한 애플리케이션에서 사용됩니다.
GPIO는 통상 표준 로직레벨을 채용하고 있어 출력 부하에 상당한 전류를 공급할 수 없습니다.적절한 고전류 출력 버퍼(또는 기계식 또는 솔리드 스테이트 릴레이)가 이어지면 GPIO를 사용하여 조명, 솔레노이드, 히터 및 모터(예: 팬 및 송풍기)와 같은 고출력 장치를 제어할 수 있습니다.마찬가지로 입력 버퍼, 릴레이 또는 옵토 아이솔레이터는 호환성이 없는 신호(예를 들어 고전압)를 GPIO가 요구하는 논리 레벨로 변환하기 위해 자주 사용됩니다.
집적회로 GPIO는 일반적으로 기판상의 다른 회로(기타 IC 포함)를 제어 또는 감시하기 위해 사용됩니다.예를 들어 다른 회로의 동작(또는 전원 공급) 활성화 및 비활성화, 온보드 스위치 및 구성 션트 상태 읽기, LED(발광 다이오드) 상태 표시기 구동 등이 있습니다.후자의 경우 대부분의 경우 GPIO는 중간 버퍼를 사용하지 않고 LED에 직접 전력을 공급하기에 충분한 출력 전류를 공급할 수 있습니다.
복수의 GPIO가 비트뱅잉 통신 인터페이스로서 함께 사용되는 경우가 있습니다.예를 들어 2개의 GPIO를 사용하여 Inter-Integrated Circuit(I²C; 집적회로) 등의 시리얼 통신 버스를 구현하고 4개의 GPIO를 사용하여 시리얼 페리페럴 인터페이스(SPI) 버스를 구현할 수 있습니다.이러한 GPI는 일반적으로 시리얼 인터페이스(온도 센서 등)와 시리얼 통신을 용이하게 하기 위해 사용됩니다.부식 센서, 압력 센서, 가속도계) 및 모터 컨트롤러.극단적으로, 이 방법은 전체 병렬 버스를 구현하기 위해 사용될 수 있으며, 따라서 버스 지향 IC 또는 회로 기판과의 통신을 가능하게 한다.
GPIO는 기본적으로 디지털이지만 선형 프로세스를 제어하는 데 자주 사용됩니다.예를 들어 모터 속도, 광도 또는 온도를 제어하기 위해 GPIO를 사용할 수 있습니다.일반적으로 이 작업은 PWM을 통해 이루어집니다. PWM에서는 GPIO 출력 신호의 듀티 사이클에 따라 프로세스 제어 신호의 유효 크기가 결정됩니다.예를 들어 광도를 제어할 때 GPIO 듀티 사이클을 줄임으로써 빛을 어둡게 할 수 있습니다.일부 선형 프로세스에는 선형 제어 전압이 필요합니다.이 경우, PWM 출력으로서 동작하는 GPIO를 RC 필터에 접속해, 심플하고 저비용의 디지털/아날로그 컨버터를 작성할 수 있습니다.
실행
GPIO 인터페이스는 매우 다양합니다.경우에 따라서는 입력 또는 출력 중 하나로 그룹 전환이 가능한 핀 그룹입니다.또, 각 핀은, 드라이브 강도와 풀 업/다운을 구성 가능한 다른 로직 전압을 받아들이거나 공급하도록 설정할 수 있습니다.입력전압과 출력전압은 통상 GPIO를 탑재한 디바이스의 공급전압에 한정되어 있지 않고 전압의 증가에 의해 손상될 수 있습니다.
GPIO 핀의 상태는 메모리 매핑된 I/O 주변기기 등 다양한 인터페이스 중 하나 또는 전용 IO 포트 명령을 통해 소프트웨어 개발자에게 노출될 수 있습니다.일부 GPIO에는 5V 허용 입력이 있습니다. 장치에 낮은 공급 전압(2V 등)이 있더라도 장치는 손상 없이 5V를 수용할 수 있습니다.
GPIO 포트는 그룹으로 배열되어 그룹으로 제어되는 GPIO 핀의 그룹입니다(대개 8핀보다 작을 수 있습니다).
GPIO에는 다음이 포함됩니다.[2]
- GPIO 핀은 입력 또는 출력으로 구성 가능
- GPIO 핀 활성화/비활성화 가능
- 입력값을 읽을 수 있습니다(보통 높음 또는 낮음).
- 출력 값은 쓰기/읽기 가능
- 입력 값은 종종 IRQ로 사용할 수 있습니다(보통 웨이크업 이벤트용).
「 」를 참조해 주세요.
레퍼런스
- ^ White, Jon, ed. (2016). Raspberry Pi - The Complete Manual (7th ed.). Bournemouth, England, United Kingdom: Imagine Publishing. p. 36. ISBN 978-1785463709.
- ^ a b "General Purpose Input/Output". Oracle Java ME Embedded Developer's Guide (8 ed.). Oracle Corporation. 2014.
- ^ "GPIO - Raspberry Pi Documentation". Raspberry Pi Foundation. Retrieved 3 November 2016.