하드웨어 스펙¶
XM10 보드의 외부 인터페이스를 한 곳에 모았습니다. 보드에 뭐가 몇 개 있는지, 어디에 꽂으면 되는지 처음 시작할 때 가장 먼저 보게 되는 페이지입니다.
보드 외관 사진과 리비전별 GPIO 헤더 사진은
assets/img/에서 관리합니다.
한눈에¶
| 분류 | 개수 / 종류 | 비고 |
|---|---|---|
| 보드 LED | 3 개 | LED 1 (좌) · LED 2 (중) · LED 3 (우) |
| 채널 LED | 7 개 RGB | EMG / FES / IMU / HMMG / GRF_L / GRF_R / USB (모듈 상태 표시용) |
| 버튼 | 3 개 | BTN 1 (좌) · BTN 2 (중) · BTN 3 (우) |
| 외부 GPIO | DIO 8 + ADC 4 (+ 동적 ADC 8) | Rev 별 핀맵 참조 |
| CAN-FD 포트 | 2 개 | KIT H10 연결 + 센서 허브 확장 |
| USB-C | 1 개 | 시리얼 통신 (CDC) — PC 실시간 연결. Rev 2.0 은 USB 메모리에 저장할 수도 있습니다 (PC 와는 한 번에 하나만). (보드 확인 전) |
| 외부 UART | 1 개 (Rev 2.0 만) | 외부 장비와 직렬 통신 — 범용 Serial API. Rev 1.1 에는 이 포트가 없습니다 |
| SWD 디버그 | 4-pin | ST-Link 펌웨어 업로드·디버깅 |
| 메인 커넥터 | 1 개 | KIT H10 본체 연결 (24V 전원 + CAN-FD) |
각 인터페이스의 정확한 위치는 아래 보드 외관 사진을 참고하세요.
보드 외관¶

LED 3 개 / 버튼 3 개 / 메인 커넥터 / SWD / USB-C / CAN-FD / 외부 GPIO 헤더 / 외부 UART 의 물리적 위치를 한눈에 보여주는 사진입니다. 리비전별 외부 GPIO 헤더 핀맵은 Rev 1.1 / Rev 2.0 페이지를 따로 참조하세요.
외부 인터페이스¶
메인 커넥터 (KIT H10 연결)¶
XM10 의 전원 + 통신을 한 가닥으로 받습니다. Molex 1053081206 6-pin 커넥터.
| 핀 | 기능 |
|---|---|
| 1 | NC |
| 2 | 24 V (전원) |
| 3 | GND |
| 4 | GND |
| 5 | CAN HIGH |
| 6 | CAN LOW |
연결 절차: Getting Started — 01 하드웨어 연결
CAN-FD 포트¶
총 2 개. 하나는 메인 커넥터로 KIT H10 과 통신, 다른 하나는 센서 허브 (EMG/GRF/FSR 등) 확장용.
| 포트 | 용도 |
|---|---|
| CAN-FD #1 | KIT H10 외골격 ↔ XM10 (메인 커넥터에 포함) |
| CAN-FD #2 | 센서 허브 모듈 확장 |
EMG Hub 는 내부에서 개발 중인 모듈입니다. 사용하려면 https://huphailab.com/contact 로 문의해 주세요.
USB-C 포트¶
USB 시리얼 통신 (CDC) 로 실시간 데이터 스트리밍과 디버그 메시지를 주고받습니다. Rev 2.0 은 같은 포트에 USB 메모리를 꽂아 저장할 수도 있습니다. 포트가 하나라서 PC 와 USB 메모리는 한 번에 하나만 씁니다.
| 모드 | 용도 | 사용하는 함수 |
|---|---|---|
| 시리얼 (CDC) | PC 터미널(텍스트 디버그) / xm10 도구(사용자 구조체)로 전송. PhAI Studio 는 Total Data(0x20)를 표시 |
XM_SendUsbDebugMessage, XM_SendUsbDataWithId |
| USB 메모리 저장 🟢 Rev 2.0 전용 | USB 메모리에 구조체 하나를 정한 주기로 저장하고, 저장한 폴더를 PC 에서 풂 (USB 메모리 저장). 꽂아 두는 동안에는 PC 와 USB 로 연결되지 않습니다. (보드 확인 전) | XM_SetUsbLogSource, XM_StartUsbDataLog, XM_StopUsbDataLog |
외부 UART 포트 🟢 Rev 2.0 전용¶
외부 장비와 직렬(UART)로 통신하는 포트입니다. 상대는 다른 XM10, 아두이노, PC, 다른 MCU — 무엇이든 됩니다.
| 항목 | 값 |
|---|---|
| 페리페럴 / 핀 | USART2, TX = PD5(EXT_UART_TX) / RX = PD6(EXT_UART_RX) |
| 로직 레벨 | 3.3 V — 5 V 장비 직결 금지(레벨 시프터 필요) |
| 기본 설정 | 921600 8N1, 흐름 제어 없음 (속도만 변경 가능, 8N1 은 고정) |
| 1 회 송신 상한 | 128 바이트 |
배선할 때 TX ↔ RX 를 교차하고 GND 를 반드시 연결하세요. 가장 많이 틀리는 부분입니다.
소프트웨어: v2.7.0 부터 XM_AttachExternalUart() · XM_SetExternalUartBaudrate() ·
XM_SendExternalUartData() · XM_SendExternalUartDataBlocking() ·
XM_EnsureExternalUartRxArmed() 5 개 함수로 씁니다 —
API 레퍼런스 ·
Ex.43 External UART Ping-Pong.
XSENS MTi 같은 특정 IMU 를 이 포트에 붙이는 전용 드라이버도 있지만, 그건 범용 Serial API 와 동시에 쓸 수 없어 빌드 설정으로 하나만 고릅니다(기본은 범용 Serial). 자세한 내용은 위 API 레퍼런스의 5 번 절을 보세요.
🛑 Rev 1.1 에는 이 포트가 없습니다. 시리얼 포트는 발바닥 센서(GRF)용 UART7/UART8 뿐이고, Rev 1.1 의 PD6 은
USB_PWR_ON— USB 전원을 켜고 끄는 출력 핀입니다. Rev 2.0 배선을 Rev 1.1 보드에 그대로 적용하면 상대 보드의 TX 와 출력끼리 맞부딪칩니다. 본인 보드 리비전을 먼저 확인하세요.
SWD 디버그 포트¶
ST-Link V2/V3 디버거 연결용 4-pin 헤더. 펌웨어를 처음 올릴 때 + 디버깅할 때 사용.
보드 입력·출력¶
버튼¶
| 버튼 | 위치 | API | MCU 핀 (Rev 1.1) | MCU 핀 (Rev 2.0) |
|---|---|---|---|---|
| BTN 1 | 좌측 | XM_GetButtonEvent(XM_BTN_1) |
PC10 | PC11 |
| BTN 2 | 중앙 | XM_GetButtonEvent(XM_BTN_2) |
PC11 | PC12 |
| BTN 3 | 우측 | XM_GetButtonEvent(XM_BTN_3) |
PC12 | PC13 |
지원 이벤트: 눌림 (XM_BTN_PRESSED), 떼짐 (XM_BTN_RELEASED), 클릭 (XM_BTN_CLICK), 1 초 이상 길게 누름 (XM_BTN_LONG_PRESS).
⚠️ Rev 1.1 → Rev 2.0 으로 가면서 내장 버튼 3 개가 한 핀씩 옮겨졌습니다 (PC10 자리는 Rev 2.0 에서 외장 SRAM (PSRAM) 용으로 빠졌습니다). API 이름 (
XM_BTN_1/2/3) 은 양쪽에서 그대로 좌·중·우 의미를 유지하므로, 본인 보드와 같은 Rev 의 SDK ZIP 만 쓰면 신경 쓸 필요 없습니다. 다른 Rev 의 ZIP 을 올리면 버튼 매핑이 한 칸씩 어긋납니다.
LED¶
| LED | 위치 | API |
|---|---|---|
| LED 1 | 좌측 | XM_SetLedState(XM_LED_1, XM_ON) 등 |
| LED 2 | 중앙 | XM_SetLedState(XM_LED_2, ...) |
| LED 3 | 우측 | XM_SetLedState(XM_LED_3, ...) |
지원 효과: 켜기·끄기 (XM_LED_SOLID/OFF), 깜빡이기 (BLINK), 두근두근 (HEARTBEAT), 한 번만 (ONESHOT).
채널 LED (RGB 7 개)¶
각 센서 모듈의 연결 상태를 색으로 표시하는 RGB LED. 시스템이 자동으로 제어하지만, 필요하면 XM_SetChannelLedRGB() 로 사용자가 직접 색을 지정할 수도 있습니다.
| 채널 LED | 표시 모듈 |
|---|---|
XM_CH_LED_EMG |
EMG 모듈 |
XM_CH_LED_FES |
FES 모듈 |
XM_CH_LED_IMU |
IMU 모듈 |
XM_CH_LED_HMMG |
HMMG 모듈 |
XM_CH_LED_GRF_L / _GRF_R |
좌·우 GRF 슈즈 |
XM_CH_LED_USB |
USB 연결 상태 |
LED + 버튼 API 전체: LED & 버튼
외부 GPIO 핀맵¶
외부 GPIO 헤더는 사용자가 가장 자주 들여다보게 되는 부분입니다. 보드 리비전에 따라 커넥터 위치·라벨이 다르므로 사용 중인 보드에 맞는 페이지를 보세요.
| 보드 리비전 | 핀맵 페이지 |
|---|---|
| Rev 1.1 | external-gpio-rev1.1.md |
| Rev 2.0 | external-gpio-rev2.0.md |
핀 자체의 사용법 (어떻게 입출력 함수를 호출하는지) 은 외부 IO API 에 정리되어 있습니다.
보드 리비전 비교¶
본인 보드가 어느 리비전인지부터 확인하세요. 보드 라벨에 Rev 1.1 / Rev 2.0 표기가 있고, 외관상 가장 쉽게 구별되는 차이는 RJ45 Ethernet 포트의 유무 (Rev 2.0 만 있음) 입니다.
| 항목 | Rev 1.1 | Rev 2.0 |
|---|---|---|
| RJ45 Ethernet 포트 | 없음 | 있음 (외관 식별의 가장 빠른 지표) |
| 채널 LED (RGB 7 개) | 없음 (내장 LED 3 개만) | 있음 (PCA9957, XM_SetChannelLedRGB API) |
| 외장 SRAM (PSRAM) | 없음 | 있음 (MCU 핀 PC10 사용) |
| 외부 UART 포트 | 없음 (PD6 은 USB_PWR_ON 출력) |
있음 — USART2, PD5/PD6, 범용 Serial API |
| 내장 버튼 MCU 핀 | PC10 / PC11 / PC12 | PC11 / PC12 / PC13 (한 핀 시프트) |
| 외부 GPIO 커넥터 위치/라벨 | Rev 1.1 핀맵 | Rev 2.0 핀맵 |
| 배포 ZIP | Rev1.1.zip |
Rev2.0.zip |
본인 보드의 Rev 와 다른 ZIP 을 풀어 빌드하면 — 빌드 자체는 통과하지만 — 내장 버튼/LED 의 MCU 핀 매핑이 한 칸씩 어긋나 동작하지 않습니다. 보드 라벨을 먼저 확인하세요.
관련 문서¶
- Getting Started — 01 하드웨어 연결 — 보드 케이블 연결 순서
- 외부 IO API — GPIO/ADC 제어 함수
- LED & 버튼 API — LED·버튼 함수
- USB 시리얼 통신 API — USB-C 사용법
- KIT H10 Firmware — H10 본체 펌웨어 업데이트
- Bootloader — XM10 펌웨어 업로드 방법