nano_ardule_midi_controller:spi_connection_options_for_arduino_uno_and_usb_host_shield
Table of Contents
SPI Connection Options for Arduino Uno and USB Host
Shield
개요
이 문서는 Arduino Uno와 USB Host Shield(MAX3421E 계열)를 연결할 때 SPI 신호를 D11–D13 디지털 핀으로 연결하는 방식과 ICSP 6핀 헤더를 사용하는 방식 중 무엇을 선택해야 하는지 정리한 설계 문서입니다.
특히, 왜 두 방식을 동시에 사용하면 안 되는지를 전기적 관점에서 설명하며, USB Host Shield 사용 시 자주 겪는 불안정 문제를 예방하는 것을 목표로 합니다.
본 문서는 설계 노트 / README / 재삽질 방지 문서 용도로 작성되었습니다.
결론 요약 (핵심)
- ICSP 6핀 SPI 연결은 필수가 아닙니다
- SPI 연결 방식은 반드시 둘 중 하나만 선택해야 합니다
- ❌ D11–D13과 ICSP를 동시에 연결하면 안 됩니다
선택지는 아래 두 가지뿐입니다.
- D11 / D12 / D13 핀을 통한 SPI 연결
- ICSP 6핀 헤더만을 통한 SPI 연결
왜 하나만 사용해야 하나?
Arduino Uno에서는 SPI 신호가 물리적으로 두 곳에 중복 배선되어 있습니다.
- 디지털 핀 헤더: D11 / D12 / D13
- 프로그래밍용 헤더: ICSP 6핀
이 두 포트는 MCU 내부에서 완전히 동일한 전기적 노드에 연결되어 있습니다.
따라서 두 경로를 동시에 연결하면 다음과 같은 문제가 발생할 수 있습니다.
- 신호 반사(reflection)
- 루프(loop) 형성
- 접촉 저항 차이에 따른 글리치(glitch)
- SPI 통신 불안정 및 USB 열거 실패
👉 결론적으로 한 가지 물리적 경로만 사용해야 합니다.
Arduino Uno 기준 SPI 핀 매핑
| SPI 신호 | Arduino Uno 핀 | ICSP 핀 |
|---|---|---|
| MOSI | D11 | ICSP-4 |
| MISO | D12 | ICSP-1 |
| SCK | D13 | ICSP-3 |
| 5V | — | ICSP-2 |
| GND | — | ICSP-6 |
| RESET | — | ICSP-5 |
>위 표에서 보듯,
D11–D13과 ICSP는 동일 신호의 다른 물리적 출구일 뿐입니다.
권장 방식 ①
D11 / D12 / D13 핀을 사용하는 경우 (가장 일반적)
Arduino Uno → USB Host Shield -------------------------------------- D13 (SCK) → SCK D12 (MISO) → MISO D11 (MOSI) → MOSI D10 → SS (CS) D9 → INT 5V → 5V GND → GND RESET → RESET
이 방식을 사용할 때의 원칙
- ✅ ICSP 6핀은 연결하지 않습니다
- 가장 직관적이며 자료와 예제가 많습니다
- Uno 기반 DIY 프로젝트에 가장 적합합니다
권장 방식 ②
ICSP 6핀 헤더를 사용하는 경우 (대안)
Arduino Uno ICSP → USB Host Shield ICSP ------------------------------------------- MISO → MISO 5V → 5V SCK → SCK MOSI → MOSI RESET → RESET GND → GND
추가로 반드시 아래 신호를 연결해야 합니다.
D10 → SS (CS) D9 → INT
이 방식을 사용할 때의 원칙
- ✅ D11 / D12 / D13 핀은 사용하지 않습니다
- 배선을 짧고 한 덩어리로 정리하기 좋습니다
- 보드 종류에 독립적인 SPI 연결 방식입니다
언제 ICSP 방식을 쓰는 것이 좋은가?
다음과 같은 경우 ICSP 방식이 유리합니다.
- Arduino Uno가 아닌 보드를 사용하는 경우 (Mega, Leonardo 등)
- 보드마다 SPI 핀 번호가 다른 경우
- 배선을 최대한 짧고 깔끔하게 구성하고 싶을 때
- 실드가 ICSP 기반 설계를 전제로 할 때
그 외 대부분의 Uno 기반 프로젝트에서는
D11–D13 직결 방식이 더 단순하고 이해하기 쉽습니다.
주의사항 (중요)
- ❌ D11–D13 + ICSP 동시 연결 금지
- SS(D10)는 반드시
OUTPUT으로 설정하고HIGH상태를 유지해야 합니다 - SS / INT 신호는 접촉 불량에 매우 민감하므로
- 와이어 직결을 권장
- 긴 스태킹 헤더 의존은 피하는 것이 좋습니다
한 줄 요약
Arduino Uno에서 SPI는
D11–D13 또는 ICSP 중 하나만 선택해서 사용합니다.
이미 D11–D13으로 연결했다면 ICSP는 연결하지 않습니다.
한 경로만 사용하는 것이 정답입니다.
nano_ardule_midi_controller/spi_connection_options_for_arduino_uno_and_usb_host_shield.txt · Last modified: by hyjeong
