>  기사  >  gpio 인터페이스는 무엇을 합니까?

gpio 인터페이스는 무엇을 합니까?

WBOY
WBOY원래의
2022-08-26 11:34:3439143검색

gpio 인터페이스는 하드웨어와의 데이터 상호 작용에 사용됩니다. gpio는 "General Purpose I/O Ports"의 약자로 범용 입력 및 출력 포트를 의미하며 프로그램 제어 하에서 사용자가 자유롭게 사용할 수 있습니다. 인터페이스를 통해 출력되거나 핀의 상태가 높거나 낮은지 읽습니다.

gpio 인터페이스는 무엇을 합니까?

이 튜토리얼의 운영 환경: Windows 10 시스템, DELL G3 컴퓨터.

gpio 인터페이스란 무엇인가요?

GPIO는 General Input and Output의 약자로 8051의 P0-P3과 유사한 기능을 가지고 있습니다. 핀은 프로그램 제어를 통해 사용자가 자유롭게 사용할 수 있습니다. 실용적인 고려 사항을 기반으로 하는 일반 입력(GPI) 또는 CLK 생성기, 칩 선택 등과 같은 범용 출력(GPO) 또는 범용 입출력(GPIO)으로 사용됩니다.

GPIO(범용 I/O 포트) )는 일반 입/출력 포트를 의미하며, 이를 통해 하이 레벨과 로우 레벨을 출력하거나 이를 통해 핀 상태(하이 레벨인지 로우 레벨인지)를 읽을 수 있는 핀입니다.

GPIO 포트 1은 중요한 개념입니다. 사용자는 데이터 상호 작용(예: UART), 하드웨어 작업 제어(예: LED, 부저 등)를 위해 GPIO 포트를 통해 하드웨어와 상호 작용할 수 있으며 하드웨어 작동 상태 신호(예: 인터럽트 신호) )잠깐. GPIO 포트는 널리 사용됩니다.

gpio 인터페이스 사용 방법

GPIO를 사용하려면 먼저 시스템에서 GPIO를 할당하고 gpio_request()를 사용하여 시스템에 GPIO를 할당해야 합니다.

다음으로 할 일은 일반적으로 GPIO를 사용하여 platform_device(보드의 설정 코드에 있음)를 생성할 때 GPIO의 방향을 표시하는 것입니다.

  /* set as input or output, returning 0 or negative errno */
  int gpio_direction_input(unsigned gpio);
  int gpio_direction_output(unsigned gpio, int value);

 성공을 나타내려면 0을 반환하거나 음수 errno 오류 코드를 반환합니다. . get/set 호출은 오류를 반환하지 않으며 구성이 잘못되었을 수 있으므로 확인해야 합니다. 일반적으로 이러한 호출은 스레드 컨텍스트에서 사용해야 합니다. 그러나 스핀록 안전 GPIO의 경우 작업이 활성화되기 전에 초기 단일 보드 빌드로 사용할 수도 있습니다.

 출력 GPIO의 경우 value 매개변수는 초기 출력 값을 제공합니다. 이는 시스템 시작 중 신호 간섭을 방지하는 데 도움이 됩니다.

 초기 GPIO 인터페이스와 호환되기 위해서는 GPIO 방향을 암시적으로 설정하려면 GPIO 적용이 필요합니다. 이 호환성은 선택적 gpiolib 아키텍처에서 제거되었습니다.

 GPIO 번호가 유효하지 않거나 지정된 GPIO가 해당 모드에서 작동할 수 없는 경우 방향 설정이 실패합니다. 일반적으로 부팅 펌웨어에 의존하여 GPIO 방향을 설정하는 것은 좋지 않습니다. 부팅 기능이 확인되지 않을 수 있기 때문입니다(부팅 Linux 제외). (마찬가지로 단일 보드 설정 코드는 핀을 GPIO로 다중화하고 적절한 풀업/풀다운을 구성해야 할 수도 있습니다.)

 Spinlock-Safe GPIO 액세스

대부분의 GPIO 컨트롤러는 메모리 읽기 및 쓰기 지침을 사용할 수 있습니다. 입장. 절전 모드가 필요하지 않으며 내부 하드웨어 인터럽트 처리(비스레드) 및 유사한 컨텍스트에서 안전하게 완료될 수 있습니다.

이러한 GPIO에 액세스하려면 다음 호출을 사용하세요. 이때 gpio_cansleep은 항상 오류

  /* GPIO INPUT: return zero or nonzero */
  int gpio_get_value(unsigned gpio);
  /* GPIO OUTPUT */
  void gpio_set_value(unsigned gpio, int value);

를 반환합니다. 여기서 값은 부울 매개변수이고 0은 낮음을 의미하고 0이 아닌 경우 높음을 의미합니다. 출력 핀의 값을 읽을 때 반환되는 값은 핀에 표시되는 값이어야 합니다. . . 오픈 드레인 신호 및 출력 지연 문제로 인해 지정된 출력 값과 항상 일치하지는 않습니다.

gpio_direction_*()에 의해 "잘못된 GPIO"가 조기에 보고되었으므로 get/set 호출에서 오류가 반환되지 않습니다. 그럼에도 불구하고 모든 플랫폼이 출력 핀의 값을 읽을 수 있는 것은 아니며 읽을 수 없는 플랫폼은 항상 0을 반환해야 합니다. 동시에 절전을 유발할 수 있는 GPIO와 함께 이러한 인터페이스를 사용하는 것은 실수입니다.

플랫폼별 구현에서는 GPIO 값을 얻기 위해 이 두 호출을 최적화하는 것이 좋습니다. GPIO 번호가 일정한 경우 일반적으로 한 쌍의 명령어(하드웨어 레지스터 읽기 또는 쓰기)만으로 액세스할 수 있으며 스핀록이 필요하지 않습니다. 이러한 최적화를 통해 비트 분할 애플리케이션을 시간과 공간 측면에서 더 효율적으로 만들 수 있습니다(서브루틴 호출에 많은 명령을 소비하는 것과 비교할 때).

gpio 인터페이스는 무엇을 합니까?

gpio 인터페이스는 무엇을 위한 것인가요?

출력 값을 쓸 수 있습니다(높음=1, 낮음=0). 일부 칩은 "wired-OR" 또는 유사한 방식(오픈 드레인 신호 라인)을 지원하기 위해 이러한 값을 구동하는 방법을 선택할 수도 있습니다.

입력값은 읽을 수 있습니다(1, 0). 일부 칩은 출력 핀 리드백을 지원하는데, 이는 와이어 OR 상황(양방향 신호 라인 지원)에 유용합니다. GPIO 컨트롤러에는 입력 안전 장치/반바운스 논리가 있을 수 있으며 경우에 따라 소프트웨어 제어가 있을 수도 있습니다.

입력은 종종 인터럽트 신호로 사용되며 일반적으로 에지 트리거되지만 레벨 트리거될 수도 있습니다. 이러한 인터럽트는 저전력 모드에서 시스템을 깨우기 위한 시스템 깨우기 이벤트로 구성될 수 있습니다.

A GPIO는 제품 보드 요구 사항에 따라 입출력 양방향으로 구성되는 경우가 많지만 단방향 상황도 있습니다.

스핀록을 획득하면 대부분의 GPIO에 액세스할 수 있지만 직렬 버스를 통해 액세스하는 GPIO는 일반적으로 그렇게 할 수 없습니다(최대 절전 모드 이유). 일부 시스템에는 두 가지 형태의 GPIO가 모두 있습니다.

특정 보드에서 각 GPIO는 MMC/SD 카드 삽입/제거 모니터링, 카드 쓰기 보호 상태 확인, LED 구동, 송신기 구성, 직렬 버스 비트 제거, 하드웨어 감시 트리거, 스위치든 뭐든.

관련 지식이 더 궁금하시다면 FAQ 칼럼을 방문해 주세요!

위 내용은 gpio 인터페이스는 무엇을 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.