SPI(Serial Peripheral Interface)는 마스터–슬레이브 구조의 동기식 직렬 통신 방식입니다. 임베디드 보드(Raspberry Pi, STM32, ESP32, Arduino 등)와 주변기기(센서, LCD, 플래시 메모리, ADC/DAC 등)를 연결할 때 가장 많이 쓰입니다. 핵심 요소를 정리하면:
🔹 기본 구성
- Master: 클럭(SCK)을 생성하고 전송을 제어하는 쪽 (보통 MCU, SoC).
- Slave: 마스터의 클럭에 맞춰 데이터 송수신 (보통 주변장치).
- 버스 구조
- SCK (Serial Clock) : 마스터 → 슬레이브로 클럭 제공
- MOSI (Master Out, Slave In) : 마스터가 슬레이브로 데이터 전송
- MISO (Master In, Slave Out) : 슬레이브가 마스터로 데이터 전송
- CS/SS (Chip Select/Slave Select) : 특정 슬레이브 활성화 (Active Low)
🔹 특징
- 동기식: 클럭(SCK)에 맞춰 데이터 비트가 전송됨.
- 풀 듀플렉스: MOSI와 MISO 라인이 분리되어 있어 동시에 송수신 가능.
- 빠른 속도: 수 MHz ~ 수십 MHz까지 가능 (I²C보다 빠름).
- 단순 프로토콜: 시작/종료 비트, 주소 프레임이 없음 → CS로 구분.
- 버스 확장성 제한: 슬레이브가 많아지면 CS 핀 수가 늘어남.
🔹 SPI 모드 (Mode 0~3)
SPI는 CPOL(Clock Polarity) 과 CPHA(Clock Phase) 두 가지 파라미터로 동작 모드를 정의합니다.
모드CPOLCPHA클럭 Idle 상태샘플링 시점
| 0 | 0 | 0 | Low | 상승 에지에서 샘플링 |
| 1 | 0 | 1 | Low | 하강 에지에서 샘플링 |
| 2 | 1 | 0 | High | 하강 에지에서 샘플링 |
| 3 | 1 | 1 | High | 상승 에지에서 샘플링 |
👉 디바이스 데이터시트에서 요구하는 모드를 반드시 맞춰야 정상 통신됨.
예: ST7789 LCD → 일반적으로 Mode 3 필요.
🔹 전송 과정 예시 (1바이트)
- 마스터가 CS를 Low로 내려 특정 슬레이브 선택.
- 마스터가 SCK 클럭을 발생.
- MOSI를 통해 비트 단위 데이터 전송. 동시에 MISO에서 슬레이브 데이터 수신.
- 설정한 모드(클럭 극성/위상) 에 맞춰 각 비트 샘플링.
- 전송 종료 후 CS를 High로 올려 연결 해제.
🔹 장점
- 단순하고 빠름 (I²C보다 속도 높음).
- 풀 듀플렉스 지원.
- 데이터 프레임 길이 유연 (8, 16, 24, 32bit 등 장치별 지정 가능).
🔹 단점
- 슬레이브 수가 늘어나면 CS 핀 낭비.
- 케이블 길이에 약함 (수십 cm 이상에선 신호 무결성 문제 발생).
- 멀티마스터 구조가 복잡.
'하드웨어 > 상식' 카테고리의 다른 글
| RS-232 : 고전 직렬 바이너리 통신 프로토콜 (0) | 2025.09.30 |
|---|---|
| I²C (Inter-Integrated Circuit) : MCU & 주변 장치들 간 데이터 통신 프로토콜 (0) | 2025.09.30 |
| LM358N : 듀얼 로우파워 연산증폭기 (0) | 2025.09.21 |
| LM324N : 쿼드(Quad) 오퍼레이셔널 앰프 (Op-Amp) (0) | 2025.09.21 |
| LM3914N : LED 바 그래프/도트 디스플레이 드라이버 IC (0) | 2025.09.21 |