
SPI는 직렬 주변 장치 인터페이스(Serial Peripheral Interface)의 약자로, 마스터와 슬레이브 장치 간의 고속, 동기식 직렬 통신에 사용되는 프로토콜입니다. 일반적으로 4개의 핀을 사용하며, 각 핀의 역할은 다음과 같다.
SPI는 4개의 핀을 사용하여 통신하며, I2C와 유사하게 마스터-슬레이브 구조를 통해 여러 장치와 통신할 수 있다. 하지만 I2C처럼 주소(Address) 방식이 아닌 각 슬레이브의 CS 핀을 이용해 선택한다는 차이가 존재. 또한, USART(UART)와는 달리 클럭 신호(SCLK)를 함께 사용하여 동기식 통신을 수행한다는 점이 특징. 이 세 가지 프로토콜의 주요 차이점을 비교하며 SPI의 특징을 자세히 알아보자.
SPI 통신은 마스터와 슬레이브 양쪽에 있는 시프트 레지스터(Shift Register)를 통해 이루어진다. 마스터가 SCLK 신호를 생성하면, 이 클럭 신호에 동기화되어 MOSI 라인을 통해 마스터의 데이터가 슬레이브로 1비트씩 이동하고, 동시에 MISO 라인을 통해 슬레이브의 데이터가 마스터로 1비트씩 이동합니다. 즉, 데이터는 클럭 신호에 맞춰 매 비트마다 교환되는 방식.
이는 마치 양방향으로 연결된 컨베이어 벨트와 같다. 마스터가 데이터를 실어 보내는 동안, 슬레이브도 동시에 자신의 데이터를 마스터에게 보낼 수 있다.
SPI 통신 설정에서 중요한 것은 클럭 극성(CPOL: Clock Polarity)과 클럭 위상(CPHA: Clock Phase)이다. 이 두 가지 설정에 따라 SCLK 핀이 유휴 상태일 때의 레벨과 데이터 샘플링 시점이 결정되며, 총 4가지 SPI 모드(Mode 0~3)가 존재한다. 통신하는 마스터와 슬레이브는 동일한 SPI 모드로 설정되어야 정상적인 통신이 가능하다.
SPI는 마이크로컨트롤러와 주변 장치 간에 데이터를 주고받는 고속, 동기식 직렬 통신 프로토콜임.
핵심 특징:
4개의 전용 핀 사용:
SCLK (Serial Clock): 마스터가 생성하는 클럭 신호로, 데이터 동기화에 사용됨.
MOSI (Master Out Slave In): 마스터가 슬레이브로 데이터를 보내는 라인임.
MISO (Master In Slave Out): 슬레이브가 마스터로 데이터를 보내는 라인임.
CS/SS (Chip Select/Slave Select): 마스터가 특정 슬레이브를 활성화하여 통신할 때 사용함.
마스터-슬레이브 구조: 마스터가 통신을 주도하며, CS 핀을 통해 여러 슬레이브 중 하나를 선택하여 통신할 수 있음.
동기식 통신: 클럭 신호를 함께 보내기 때문에 정확한 타이밍으로 데이터를 주고받을 수 있음.
장점:
단점:
통신 방식:
활용 분야: