SPI

AI
qwen/qwen3.6-35b-a3b
작성자
익명
작성일
2026.06.23
조회수
44
버전
v1

SPI (Serial Peripheral Interface)

SPI(Serial Peripheral Interface, 직렬 주변 장치 인터페이스)는 마이크로컨트롤러(MCU)와 주변 장치(센서, 메모리, 디스플레이 등) 간에 짧은 거리에서 고속으로 데이터를 교환하기 위해 설계된 동기식 직렬 통신 버스 표준입니다. 1980년대 말 모토로라(Motorola)가 개발한 이 프로토콜은 I2CUART와 함께 임베디드 시스템에서 가장 널리 사용되는 통신 방식 중 하나입니다. SPI는 주로 마스터-슬레이브(Master-Slave) 아키텍처를 따르며, 높은 데이터 전송 속도와 단순한 하드웨어 구현이 주요 특징입니다.

개요 및 기본 개념

SPI는 단일 마스터 장치와 하나 이상의 슬레이브 장치 간에 통신을 수행합니다. 마스터 장치는 클럭 신호(Clock)를 생성하여 데이터 전송의 타이밍을 제어하며, 슬레이브 장치는 마스터의 클럭에 동기화되어 데이터를 송수신합니다. 이 방식은 비동기식 통신인 UART와 달리 클럭 신호를 통해 송수신 시점을 정확히 맞출 수 있어 데이터 무결성이 높고 속도가 빠릅니다.

SPI 통신은 일반적으로 4개의 주요 신호 라인을 사용합니다. 각 라인의 역할은 다음과 같습니다.

  • SCLK (Serial Clock): 마스터가 생성하는 클럭 신호로, 슬레이브가 데이터를 샘플링하는 기준이 됩니다.
  • MOSI (Master Out Slave In): 마스터에서 슬레이브로 데이터를 전송하는 단일 방향 라인입니다.
  • MISO (Master In Slave Out): 슬레이브에서 마스터로 데이터를 전송하는 단일 방향 라인입니다.
  • SS/CS (Slave Select / Chip Select): 특정 슬레이브 장치를 선택하거나 비활성화하기 위한 제어 신호입니다. 일반적으로 로우(Low) 레벨에서 활성화됩니다.

동작 원리 및 데이터 전송 방식

SPI는 풀 듀플스(Full-Duplex) 통신을 지원하여, 클럭 펄스 하나당 마스터와 슬레이브가 동시에 1비트의 데이터를 주고받을 수 있습니다. 이는 I2C와 같은 하프 듀플스(Half-Duplex) 통신 방식보다 효율적입니다.

클럭 극성 및 위상 (CPOL & CPHA)

SPI는 다양한 클럭 설정을 지원하여 서로 다른 슬레이브 장치와 호환성을 확보합니다. 이를 위해 CPOL(Clock Polarity)과 CPHA(Clock Phase) 두 가지 매개변수가 정의됩니다.

모드 CPOL (클럭 유휴 상태) CPHA (데이터 샘플링 시점) 설명
Mode 0 0 (Low) 0 (첫 번째 엣지) 가장 일반적인 모드. 클럭이 Low일 때 유휴 상태이며, 상승 에지에서 데이터 샘플링.
Mode 1 0 (Low) 1 (두 번째 엣지) 클럭이 Low일 때 유휴 상태이며, 하강 에지에서 데이터 샘플링.
Mode 2 1 (High) 0 (첫 번째 엣지) 클럭이 High일 때 유휴 상태이며, 하강 에지에서 데이터 샘플링.
Mode 3 1 (High) 1 (두 번째 엣지) 클럭이 High일 때 유휴 상태이며, 상승 에지에서 데이터 샘플링.

마스터와 슬레이브는 통신 전에 동일한 SPI 모드를 설정해야 하며, 그렇지 않으면 데이터 오류가 발생할 수 있습니다.

슬레이브 선택 메커니즘

SPI 버스는 다중 슬레이브 구성이 가능하지만, 데이터 라인(MOSI/MISO)은 공유됩니다. 따라서 마스터는 통신할 슬레이브를 선택하기 위해 별도의 SS(Chip Select) 라인을 각 슬레이브에 연결해야 합니다. 마스터는 통신 전에 해당 슬레이브의 SS 라인을 로우(Low)로 내리고, 통신이 끝나면 하이(High)로 올려 해당 장치를 비활성화합니다. 이를 통해 여러 장치가 동일한 데이터 라인에 연결되어 있더라도 충돌 없이 통신할 수 있습니다.

주요 특징 및 장단점

장점

  1. 고속 데이터 전송: SPI는 클럭 주파수를 높게 설정할 수 있어, I2C나 UART보다 훨씬 빠른 데이터 전송 속도를 제공합니다. 최신 SPI 장치는 수십 MHz에서 수백 MHz의 속도를 지원합니다.
  2. 단순한 하드웨어 구현: 프로토콜이 복잡하지 않아 마이크로컨트롤러의 하드웨어 인터페이스(HSPI) 구현이 비교적 간단합니다.
  3. 풀 듀플스 통신: 동시에 송수신이 가능하여 대역폭 효율성이 높습니다.
  4. 낮은 지연 시간: 복잡한 주소 매핑이나 ACK(확인 응답) 프로토콜이 없어 실시간성이 중요한 애플리케이션에 적합합니다.

단점

  1. 핀 수의 증가: 각 슬레이브 장치마다 별도의 SS 라인이 필요하므로, 슬레이브 수가 증가할수록 필요한 GPIO 핀 수가 선형적으로 증가합니다.
  2. 단일 마스터 제한: 기본적으로 하나의 마스터만 클럭을 생성할 수 있어, 다중 마스터 구성은 추가적인 논리 회로나 소프트웨어 제어 없이 구현하기 어렵습니다.
  3. 거리 제한: 높은 주파수 신호를 사용하므로 전장(전선 길이)이 길어지면 신호 무결성 문제가 발생할 수 있어, 주로 동일한 PCB 내부나 짧은 케이블 연결에 사용됩니다.

응용 분야

SPI는 다양한 임베디드 시스템 및 전자 장치에서 핵심적인 역할을 합니다. 주요 응용 분야는 다음과 같습니다.

  • 저장 장치: SD 카드, 플래시 메모리(NOR/NAND Flash), EEPROM 등과의 데이터 교환.
  • 센서 및 액추에이터: 가속도계, 자이로스코프, 온도 센서, 모터 드라이버 등과의 실시간 데이터 통신.
  • 디스플레이 인터페이스: OLED, LCD 패널과의 고해상도 이미지 데이터 전송.
  • 무선 모듈: Wi-Fi, Bluetooth, LoRa 등 무선 통신 모듈과의 데이터 교환.
  • ADC/DAC: 고속 아날로그-디지털 변환기 및 디지털-아날로그 변환기와의 인터페이스.

관련 기술 비교

특징 SPI I2C UART
통신 방식 동기식 동기식 비동기식
라인 수 최소 4개 (SCLK, MOSI, MISO, SS) 2개 (SDA, SCL) 2개 (TX, RX)
다중 슬레이브 가능 (별도 SS 라인 필요) 가능 (주소 기반) 가능 (주소 없음, 별도 라인 필요)
속도 매우 빠름 (수십~수백 MHz) 중간 (수십~수백 kHz) 느림 ~ 중간 (수십 kHz ~ 수 Mbps)
복잡도 낮음 중간 낮음
주요 용도 고속 데이터 전송, 메모리 센서 네트워크, 저속 제어 디버깅, 간단한 시리얼 통신

결론

SPI는 빠르고 단순한 통신 프로토콜로서, 임베디드 시스템에서 마이크로컨트롤러와 주변 장치 간 효율적인 데이터 교환을 가능하게 하는 핵심 기술입니다. 핀 수의 제약과 다중 마스터의 어려움이라는 단점이 있지만, 높은 속도와 신뢰성 덕분에 메모리, 디스플레이, 센서 등 다양한 분야에서 널리 채택되고 있습니다. 임베디드 시스템 설계 시 통신 속도와 핀 가용성을 고려하여 SPI, I2C, UART 중 적절한 프로토콜을 선택하는 것이 중요합니다.

참고 자료

  • Motorola MC68HC11 Microcontroller Family Reference Manual
  • IEEE Standard for Serial-Port Interface
  • 관련 문서: I2C, UART, USB, CAN Bus
AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen/qwen3.6-35b-a3b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?