본문으로 건너뛰기

GPIO

digital_io

딥스위치(DIP Switch)​

위 사진의 딥스위치는 GPIO 전압을 설정하는 핀입니다.

  • 1번 스위치 ON: 5V 입출력
  • 2번 스위치 ON: 3.3V 입출력
위험

주의: 절대로 두 스위치를 동시에 ON으로 설정하지 마십시오. 3.3V와 5V가 단락되어 장치가 손상될 수 있습니다.

입력 하이 임계값​

  • 5V 기준: 3.5V 이상
  • 3.3V 기준: 2.0V 이상

출력 최대 전류​

  • 20mA

GPIO 핀 번호 매핑​

GPIO핀 번호GPIO 칩
DOUT0PCC.02gpiochip1 14
DOUT1PCC.03gpiochip1 15
DIN0PAA.04gpiochip1 4
DIN1PAA.07gpiochip1 7
EXT_SELPBB.01gpiochip1 9

멀티플렉서(Mux) 설정​

EXT_SEL 설정을 통해 DIN0와 DOUT0를 GPIO 또는 카메라 프레임 동기화(FrameSync)로 사용할 수 있습니다.

  • EXT_SEL = 1:

    • DIN0: GPIO
    • DOUT0: GPIO
  • EXT_SEL = 0:

    • DIN0: 카메라 프레임 동기화 입력
    • DOUT0: 카메라 프레임 동기화 출력 (입력 신호를 그대로 전달)

GPIO 설정 및 제어 가이드​

JetPack 버전에 따라 GPIO를 설정하고 제어하는 방법이 다릅니다. 아래는 JetPack 5와 JetPack 6에서의 GPIO 사용 방법을 정리한 가이드입니다.

JetPack 5에서의 GPIO 설정 및 제어​

JetPack 5에서는 /sys/class/gpio 인터페이스를 통해 GPIO를 제어합니다. 다음은 GPIO를 활성화하고 방향을 설정하는 방법입니다.

  1. GPIO 활성화:

    echo 330 > /sys/class/gpio/export
    echo 331 > /sys/class/gpio/export
    echo 320 > /sys/class/gpio/export
    echo 323 > /sys/class/gpio/export
    echo 325 > /sys/class/gpio/export
  2. GPIO 방향 설정:

    echo out > /sys/class/gpio/gpio330/direction # DOUT0: 출력
    echo out > /sys/class/gpio/gpio331/direction # DOUT1: 출력
    echo in > /sys/class/gpio/gpio320/direction # DIN0: 입력
    echo in > /sys/class/gpio/gpio323/direction # DIN1: 입력
    echo out > /sys/class/gpio/gpio325/direction # EXT_SEL: 출력
  3. GPIO 값 설정 및 읽기:

    • DOUT0 설정:

      echo 1 > /sys/class/gpio/gpio330/value # High
      echo 0 > /sys/class/gpio/gpio330/value # Low
    • DOUT1 설정:

      echo 1 > /sys/class/gpio/gpio331/value # High
      echo 0 > /sys/class/gpio/gpio331/value # Low
    • DIN0 값 읽기:

      cat /sys/class/gpio/gpio320/value
    • DIN1 값 읽기:

      cat /sys/class/gpio/gpio323/value
    • EXT_SEL 설정:

      echo 1 > /sys/class/gpio/gpio325/value # High
      echo 0 > /sys/class/gpio/gpio325/value # Low

JetPack 6에서의 GPIO 설정 및 제어​

JetPack 6에서는 libgpiod 유틸리티를 사용하여 GPIO를 제어합니다. gpioset과 gpioget 명령어를 사용하여 GPIO의 값을 설정하거나 읽을 수 있습니다.

  1. DOUT0 설정:

    gpioset -m hold gpiochip1 14=1 # High
    gpioset -m hold gpiochip1 14=0 # Low
  2. DOUT1 설정:

    gpioset -m hold gpiochip1 15=1 # High
    gpioset -m hold gpiochip1 15=0 # Low
  3. DIN0 값 읽기:

    gpioget gpiochip1 4
  4. DIN1 값 읽기:

    gpioget gpiochip1 7
  5. EXT_SEL 설정:

    gpioset -m hold gpiochip1 9=1 # High
    gpioset -m hold gpiochip1 9=0 # Low
팁

gpioset 명령어는 기본적으로 실행 후 핀을 설정하고 종료되면 Low 상태로 돌아갑니다. 이를 방지하려면 -m hold 옵션을 사용하여 설정 상태를 유지할 수 있으며, 이 경우 명령어를 백그라운드에서 실행하거나 별도의 터미널 창에서 작업하는 것이 좋습니다. 자세한 내용은 gpioset --help를 통해 확인할 수 있습니다.

카메라 프레임 동기화 신호 출력 및 입력​

이 가이드를 통해 JetPack 5와 JetPack 6에서 GPIO를 설정하고 제어하는 방법을 익힐 수 있습니다. 각 버전에 맞는 방법을 사용하여 GPIO를 효과적으로 관리하시기 바랍니다.

팁

gpioset을 통하여 내부 camera frame sync용 pwm 신호를 외부로 출력 하거나, 외부 camera frame sync 신호를 내부로 입력 받을 수 있습니다. 이를 통해 외부 Lidar sync 신호를 내부 카메라에 전달하여 camera와 lidar 동기화가 가능합니다.

gpioset -m hold gpiochip1 9=1 # High, DIN0 pin을 통해 외부 camera frame sync를 입력 받음
gpioset -m hold gpiochip1 9=0 # Low, DOUT0 pin을 통해 내부 camera frame sync를 외부로 출력