주요 시리얼 통신 프로토콜 - 2. SPI (Serial Peripheral Interface)

2025. 2. 10. 14:18프로그래밍/시스템

2장: SPI (Serial Peripheral Interface)

SPI(Serial Peripheral Interface)는 동기식(Synchronous) 시리얼 통신 프로토콜 중 하나로, 빠른 데이터 전송 속도를 지원하는 간단한 마스터-슬레이브(Master-Slave) 구조를 가집니다.
UART와 달리 클럭 신호(Clock Signal)가 필요하며, 여러 개의 장치를 제어할 수 있지만 하드웨어적으로 많은 핀이 필요하다는 특징이 있습니다.

이번 장에서는 SPI의 개념과 특징, 데이터 전송 방식, 장점과 단점, 그리고 주요 활용 사례를 자세히 살펴보겠습니다.


1. SPI 개념과 특징

✅ SPI란?

SPI(Serial Peripheral Interface)는 마이크로컨트롤러(MCU)와 주변 장치 간의 빠른 데이터 통신을 위한 동기식 시리얼 프로토콜입니다.
SPI는 클럭 신호를 사용하여 데이터 전송을 동기화하므로, UART보다 빠른 속도로 데이터를 전송할 수 있습니다.

📌 SPI의 핵심 특징

  • 동기식(Synchronous) 통신클럭 신호(SCLK)를 사용하여 데이터를 전송
  • Master-Slave 구조 → 하나의 마스터(Master) 장치가 여러 개의 슬레이브(Slave) 장치를 제어
  • 빠른 전송 속도 → 일반적으로 수십 MHz(최대 수백 MHz)까지 지원
  • 풀 이중(Full-Duplex) 통신 가능 → 데이터를 동시에 송수신 가능

📌 SPI는 LCD, OLED 디스플레이, SD 카드, 플래시 메모리, 센서 등에서 널리 사용됩니다.


2. 동기식 통신 방식 (클럭 필요)

SPI는 동기식 통신 방식이므로 마스터(Master) 장치가 슬레이브(Slave) 장치에 클럭 신호(SCLK)를 제공합니다.
즉, 마스터와 슬레이브가 같은 속도로 데이터를 주고받을 수 있도록 클럭을 기반으로 동기화된 데이터 전송이 이루어집니다.

📌 SPI에서 클럭(SCLK)은 마스터가 생성하며, 슬레이브는 이를 기반으로 동작합니다.


3. Master-Slave 구조 (MOSI, MISO, SCLK, SS 사용)

SPI는 마스터-슬레이브(Master-Slave) 구조를 사용하여 데이터를 전송합니다.
하나의 마스터가 여러 개의 슬레이브 장치를 제어할 수 있습니다.

✅ SPI에서 사용하는 핀

핀 이름 역할
MOSI (Master Out Slave In) 마스터 → 슬레이브 데이터 전송
MISO (Master In Slave Out) 슬레이브 → 마스터 데이터 전송
SCLK (Serial Clock) 마스터가 생성하는 클럭 신호
SS (Slave Select) 또는 CS (Chip Select) 특정 슬레이브를 선택하는 신호

📌 SS/CS 핀이 LOW(0)일 때만 해당 슬레이브가 활성화되어 통신 가능

🛠️ 예제: 마스터와 슬레이브 간 연결

[마스터] MOSI  ---->  MISO [슬레이브]
[마스터] MISO  <----  MOSI [슬레이브]
[마스터] SCLK  ---->  SCLK [슬레이브]
[마스터] SS(LOW) -->  SS [슬레이브]

📌 여러 개의 슬레이브를 제어하려면, 각각의 SS 핀을 개별적으로 설정해야 함.


4. 빠른 데이터 전송 속도 (MHz 단위 지원)

✅ SPI의 데이터 전송 속도

SPI는 매우 빠른 데이터 전송 속도를 지원하며, 일반적으로 1MHz~50MHz 이상의 속도를 사용합니다.
일부 고속 SPI 장치는 100MHz 이상의 속도를 지원하기도 합니다.

📌 UART(수십 Kbps~수 Mbps)와 비교하면 SPI는 훨씬 더 빠른 데이터 전송이 가능!

📌 SPI의 데이터 전송 방식

  • 클럭(SCLK) 신호를 기준으로 데이터를 주고받음
  • 풀 이중(Full-Duplex) 통신 지원 → 송신과 수신이 동시에 가능
  • 지속적인 데이터 스트림 처리 가능 (Start/Stop Bit 필요 없음)

📌 SPI는 UART와 달리 Start Bit, Stop Bit이 필요 없고, 연속적인 데이터 전송이 가능하므로 효율적입니다.


5. SPI의 장점과 단점

✅ SPI의 장점

  1. 매우 빠른 데이터 전송 속도 → MHz 단위의 고속 통신 가능
  2. 하드웨어적으로 간단한 프로토콜 → 데이터 프레임이 단순
  3. 풀 이중(Full-Duplex) 통신 가능 → 송신과 수신이 동시에 가능
  4. 동기식 통신 방식 → 데이터 전송이 안정적이며 정확한 타이밍 보장

❌ SPI의 단점

  1. 연결할 수 있는 장치 수 제한 → 슬레이브가 많아질수록 SS/CS 핀이 추가적으로 필요
  2. 배선이 많음 → 최소 4개 핀 필요 (MOSI, MISO, SCLK, SS)
  3. 멀티마스터 지원 어려움 → 보통 하나의 마스터만 사용 가능

📌 SPI는 빠르고 효율적이지만, 많은 핀이 필요하므로 확장성이 제한될 수 있습니다.


6. SPI의 사용 사례

SPI는 고속 데이터 전송이 필요한 환경에서 널리 사용됩니다.

🔹 고속 데이터 전송 (LCD, OLED 디스플레이)

  • LCD, OLED 같은 디스플레이 장치는 고속 데이터 갱신이 필요하므로 SPI를 통해 데이터를 주고받습니다.
  • 특히, TFT LCD, 터치 스크린 등은 SPI 인터페이스를 사용하여 빠른 화면 업데이트를 지원합니다.

📌 SPI는 높은 대역폭이 필요한 디스플레이 장치에 최적화되어 있음.


🔹 SD 카드 인터페이스

  • SD 카드(Secure Digital)는 SPI 모드를 지원하며, MCU와 쉽게 연결 가능
  • 파일을 읽고 쓰기 위해 SPI 통신을 활용하여 데이터 전송
  • 일반적인 파일 저장 및 로깅 시스템(예: 데이터 로거, 임베디드 파일 시스템) 에 사용됨

📌 SPI는 SD 카드와 같은 대용량 저장 장치에서 데이터를 고속으로 읽고 쓸 때 사용됨.


🔹 플래시 메모리, 센서 통신

  • EEPROM, NOR/NAND 플래시 메모리 등은 빠른 데이터 액세스를 위해 SPI를 사용
  • MPU6050, BMP280 같은 센서도 SPI를 통해 빠르게 데이터를 송수신 가능

📌 SPI는 빠른 데이터 처리 속도가 필요한 센서 및 메모리 장치에 널리 사용됨.


📌 요약

SPI는 동기식 시리얼 통신 방식으로, 클럭 신호를 사용하여 데이터를 동기화하여 전송
Master-Slave 구조를 가지며, MOSI, MISO, SCLK, SS 핀을 사용하여 통신
매우 빠른 속도(MHz 단위)와 풀 이중(Full-Duplex) 통신을 지원
하드웨어가 간단하지만, 장치 수가 많아지면 SS 핀이 추가적으로 필요하여 확장성이 제한될 수 있음
LCD, OLED 디스플레이, SD 카드, 플래시 메모리, 센서 등의 고속 데이터 전송에 사용됨