RDK X5 40핀 헤더: 핀 정의 및 GPIO 활용
요약
RDK X5 개발 보드의 40핀 헤더 핀 정의와 GPIO 활용 방법을 설명합니다. Raspberry-Pi 호환 레이아웃을 따르며, srpi-config 유틸리티를 통해 I2C, UART, SPI 등 주변 장치 기능을 설정하는 과정을 안내합니다.
핵심 포인트
- RDK X5 40핀 헤더는 3.3V 로직 전용이며 5V 인가 시 주의가 필요함
- 핀 멀티플렉싱을 통해 GPIO와 주변 장치(I2C, SPI 등) 기능을 전환 가능
- srpi-config 유틸리티를 사용하여 메뉴 방식으로 주변 장치 활성화/비활성화 가능
- 핀 기능 설정 변경 후에는 시스템 재부팅이 필수적임
RDK X5 40핀 헤더: 핀 정의 및 GPIO 활용
RDK X5 개발 보드는 센서, 액추에이터(actuators), 주변 장치 버스(peripheral buses)와 인터페이스할 수 있는 40핀 헤더를 제공합니다. 이 가이드는 핀 정의, 멀티플렉싱(multiplexing) 규칙, 그리고 사용자 공간(userspace)에서 즉시 하드웨어를 제어할 수 있도록 실습용 GPIO 예제를 안내합니다.
40핀 헤더 개요
RDK X5 40핀 헤더는 친숙한 Raspberry-Pi 호환 레이아웃을 따릅니다. 회로를 설계할 때 다음의 전기적 제한 사항을 유의하십시오:
| 파라미터 (Parameter) | 값 (Value) |
|---|---|
| 로직 전압 (Logic voltage) | 3.3 V |
| ... |
⚠️ 주의: 어떤 GPIO 핀에도 3.46 V보다 높은 전압을 인가하지 마십시오. 헤더는 3.3 V 로직 전용이며 5 V 내성(tolerant)이 없습니다.
핀 정의
아래 표는 40핀 헤더의 모든 핀과 기본 기능 및 멀티플렉싱된 대체 기능(alternate functions)을 나열합니다.
| 핀 (Pin) | 기본 기능 (Default Function) | 대체 기능 (Alternate Function) | 비고 (Notes) |
|---|---|---|---|
| 1 | 3.3V 전원 (3.3V Power) | — | 최대 800 mA |
| ... |
핀 멀티플렉싱 규칙
헤더의 여러 핀은 전용 주변 장치 기능(I2C, UART, SPI, PWM)과 일반 GPIO 사이를 전환할 수 있습니다. 멀티플렉싱 그룹은 다음과 같습니다:
- UART3 / I2C5 — 8/10번 핀(UART3)과 27/28번 핀(I2C5)은 동일한 컨트롤러 구성을 공유합니다.
- I2C0 / PWM2 — 3/5번 핀은 I2C0 또는 PWM 채널로 작동할 수 있습니다.
- SPI2 / PWM0 — 19/23번 핀은 SPI2 신호 또는 PWM0를 전달합니다.
- SPI2 / PWM1 — 21/23번 핀은 SPI2 신호 또는 PWM1을 전달합니다.
- I2C1 / PWM3 — 12번 핀은 I2C1 또는 PWM3로 작동할 수 있습니다.
설정 후 멀티플렉싱이 보고되는 방식은 간단합니다:
| 설정 상태 (Configuration Status) | 의미 (Meaning) |
|---|---|
okay | 핀이 전용 주변 장치 기능(예: I2C, UART)에 할당됨. |
disabled | 핀을 일반 GPIO로 사용할 수 있음. |
📌 참고: 핀의 멀티플렉싱 모드를 변경하면 적용을 위해 **재부팅(reboot)**이 필요합니다. 하드웨어를 연결하기 전에 구성 단계를 계획하십시오.
srpi-config를 이용한 핀 기능 구성
RDK X5는 온보드 주변 장치(peripherals)를 활성화하거나 비활성화할 수 있는 메뉴 기반 유틸리티인 srpi-config(raspi-config와 유사함)를 제공합니다.
1단계: 구성 도구 열기
sudo srpi-config
2단계: 주변 장치 메뉴로 이동
- 3 Interface Options를 선택합니다.
- I3 Peripheral bus config를 선택합니다.
3단계: 주변 장치 활성화 또는 비활성화
주변 장치 버스(UART, I2C, SPI, PWM) 목록이 표시됩니다. 필요에 따라 각 항목을 전환하십시오:
- 버스를 선택하고 Enter를 누르면 활성화됩니다.
- 이미 활성화된 버스를 선택하고 Enter를 누르면 비활성화됩니다.
4단계: 재부팅
sudo reboot
재부팅 후, 활성화한 핀은 해당 주변 장치 기능(상태 okay)으로 할당되며, 비활성화한 핀은 GPIO(상태 disabled)로 되돌아갑니다.
GPIO 응용: 버튼 + LED 데모
이 예제는 37번 핀(입력)에 연결된 버튼을 읽고, 31번 핀(출력)에 있는 LED를 구동합니다. 버튼을 누르면 LED가 켜집니다.
하드웨어 설정
| 구성 요소 | 헤더 핀 |
|---|---|
| LED 양극 (약 ~220Ω 저항 경유) | Pin 31 (GPIO 출력) |
| ... |
소프트웨어 요구 사항
사용 중인 핀이 GPIO로 구성되어 있는지 확인하십시오(srpi-config에서 주변 장치 기능이 disabled 상태여야 함). GPIO 라이브러리가 설치되어 있지 않다면 다음 명령어로 설치하십시오:
pip3 install gpio
예제 실행
데모 스크립트는 보드 이미지의 /app/40pin_samples/ 경로에 포함되어 있습니다. 해당 디렉토리로 이동하여 실행하십시오:
cd /app/40pin_samples
sudo python3 button_led.py
예상 출력
스크립트가 시작되면 다음과 같은 메시지가 표시됩니다:
Starting demo now!
데모가 실행되는 동안, 버튼을 누르거나 뗄 때마다 스크립트는 31번 핀으로 구동되는 새로운 출력 상태를 출력합니다:
Outputting 0 to Pin 31
Outputting 1 to Pin 31
0은 LED가 꺼짐을 의미하고, 1은 켜짐을 의미합니다.
소스 코드: button_led.py
#!/usr/bin/env python3
# button_led.py
# Pin 37: input (button)
...
💡 Tip: 만약 LED 동작이 반대로 보인다면, 사용 중인 버튼 모듈에 풀업 저항 (pull-up resistor)이 포함되어 있을 수 있습니다. 하드웨어 구성에 맞춰 if button_state == 0: 블록 내의 0과 1 로직을 서로 바꾸어 보세요.
Troubleshooting (문제 해결)
- Permission denied (권한 거부): GPIO 접근에는 루트 (root) 권한이 필요합니다. 항상
sudo를 사용하여 스크립트를 실행하세요. - Pin not responding (핀 응답 없음):
srpi-config에서 해당 핀이disabled(GPIO 모드)로 설정되어 있는지, 그리고 설정을 변경한 후 재부팅을 했는지 확인하세요. - Demo file missing (데모 파일 누락): 샘플 파일은
/app/40pin_samples/디렉토리에 있습니다. 디렉토리가 없다면 보드 이미지 (board image)를 업데이트하거나 공식 RDK X5 문서에서 샘플을 복사하세요.
Summary (요약)
이제 다음 내용을 숙지했습니다:
- RDK X5 40핀 헤더의 핀아웃 (pinout) 및 전기적 제한 사항 읽기.
- 핀 멀티플렉싱 (pin multiplexing) 및
okay/disabled상태의 의미 이해. srpi-config를 사용하여 주변 장치 버스 (peripheral buses)를 활성화 또는 비활성화하기.- 사용자 공간 (userspace) Python을 사용하여 버튼 + LED 회로 구동하기.
여기에서 더 나아가 I2C 센서, UART 통신, SPI 디스플레이, 그리고 PWM 모터 제어까지 동일한 40핀 헤더를 통해 확장할 수 있습니다.
*이 기사는 D-Robotics 공식 문서를 바탕으로 작성되었습니다. 원문 출처: https://d-robotics.github.io/rdk_x_doc/en/Basic_Application/01_40pin_user_sample/40pin_define?v=3.5.0&p=RDK+X5
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기