User Tools

Site Tools


nano_ardule_midi_controller:spi_connection_options_for_arduino_uno_and_usb_host_shield

SPI Connection Options for Arduino Uno and USB Host

Shield

개요

이 문서는 Arduino UnoUSB Host Shield(MAX3421E 계열)를 연결할 때 SPI 신호를 D11–D13 디지털 핀으로 연결하는 방식ICSP 6핀 헤더를 사용하는 방식 중 무엇을 선택해야 하는지 정리한 설계 문서입니다.

특히, 왜 두 방식을 동시에 사용하면 안 되는지를 전기적 관점에서 설명하며, USB Host Shield 사용 시 자주 겪는 불안정 문제를 예방하는 것을 목표로 합니다.

본 문서는 설계 노트 / README / 재삽질 방지 문서 용도로 작성되었습니다.


결론 요약 (핵심)

  • ICSP 6핀 SPI 연결은 필수가 아닙니다
  • SPI 연결 방식은 반드시 둘 중 하나만 선택해야 합니다
  • D11–D13과 ICSP를 동시에 연결하면 안 됩니다

선택지는 아래 두 가지뿐입니다.

  1. D11 / D12 / D13 핀을 통한 SPI 연결
  2. 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