포스트

SPI (Serial Peripheral Interface)

임베디드 시스템 엔지니어링 로드맵

인터페이스 & 프로토콜 파트 중 BASIC

SPI (Serial Peripheral Interface)


SPI는 모토로라에서 개발한 고속 동기식 직렬 프로토콜로, 단거리 통신에서 MCU와 주변 장치 간 고속 데이터 전송에 적합하다. 이 프로토콜은 하나의 마스터와 여러개의 슬레이브 장치 간의 통신을 지원하며, 클럭 신호 주파수에 따라 데이터의 전송 속도가 결정된다.

장점

  1. 고속 데이터 전송
    • 일반적으로 수십 MHz까지 지원
    • 일부 고속 SPI 장치는 50MHz, 100MHz 이상의 속도를 지원함
    • I2C보다 높은 데이터 전송 속도
  2. 임베디드 시스템에 적합함
    • 구현이 쉽고, 시스템 리소스를 적게 사용함
    • MCU와 주변 장치 간 통신 처럼 대량의 고속 데이터를 전송할 필요가 없는 통신에 적합함
    • 수신부를 간단한 시프트 레지스터로 구성할 수 있어 하드웨어 구현이 간단함
    • 다른 통신 프로토콜에 비해 시스템 리소스와 하드웨어 요구사항이 낮음
  3. 양방향 및 유연한 통신
    • MOSI, MISO를 분리하여 동시에 양방향 전송이 가능
    • 시작 및 중지 비트가 없어, 중단 없이 데이터를 계속해서 전송 가능
  4. I2C와 같은 복잡한 슬레이브 주소 지정 시스템이 없음

단점

  1. 배선의 복잡성
    • 여러 개의 슬레이브 장치를 연결할 경우, 다수의 연결 선으로 배선이 복잡함
    • 4개의 선으로 I2C, UART 보다 선이 많음
  2. 장거리 통신에 부적합
    • 선이 길어질수록 노이즈에 취약해져서, 단거리 통신에 적합
  3. 오류 검출 및 확인 부족
    • 데이터가 성공적으로 수신되었는지 확인하지 않음
    • 오류 검사 형식이 없음
  4. 하나의 마스터만 사용 가능
  5. 다른 고속 통신 프로토콜에 비해선 느리다
    • USB, 이더넷, Bluetooth, WiFi 같은 프로토콜에 비해 속도가 느림

2. SPI Interface


spi

  • 데이터를 중간의 방해 없이 계속해서 전송할 수 있다
    • 임의의 수의 비트를 연속적인 데이터 스트림으로 송수신 가능
    • 시작과 정지 조건으로 데이터 패킷의 시작과 끝을 정의하므로, 데이터는 전송 중에 중단됨
    • I2C, UART가 데이터 패킷으로 전송되는 것과는 대조됨
  • 마스터 슬레이브 구조를 가짐
    • 일반적으로 마스터는 MCU, 슬레이브는 센서, 액추에이터와 같은 주변 장치를 가리킴
    • 마스터는 하나 이상의 슬레이브를 제어
    • 연결 가능한 슬레이브의 개수는 일반적으로 시스템의 로드 캐패시턴스(Load Capacitance)에 의해 제한됨

Basics-of-the-SPI-Communication-Protocol-Specifications-Table-768x243

  • 4개의 와이어로 직렬 동기화 통신을 하며, 최대 10Mbps의 데이터 전송 속도를 가짐

SE-0f569a21-7a02-4642-8479-831114d6bfe3

  • MOSI(Master Output/Slave Input) : 마스터가 슬레이브에게 전송할 데이터 비트 스트림
  • MISO(Master Input/Slave Output) : 슬레이브가 마스터로 전송할 데이터 비트 스트림
  • SCLK(클럭) : 동기식 클럭
  • SS/CS(슬레이브 선택/칩 선택) : 마스터가 데이터를 전송할 슬레이브를 선택하는 신호

3. SPI Operation


SCLK (동기화 클럭)

클럭 신호인 마스터의 데이터 비트 출력을, 슬레이브의 비트 샘플링으로 동기화 한다

SPI 통신은 직렬 통신이므로, 각 클럭 사이클에서 1비트의 데이터가 전송된다.

이 클럭 신호의 주파수에 따라 데이터 전송 속도가 결정된다

마스터가 클럭 신호를 구성하고 생성하기 때문에, 사이클은 항상 마스터에 의해 시작한다

네트워크에 연결된 모든 장치가 동일한 신호 클럭을 공유하기 때문에 동기(Synchronous)식이라고 한다

SS/CS (슬레이브, 칩 선택)

마스터는 SS/CS 와이어를 Idle, 전송 불가 상태에서는 High 레벨로 유지한다

데이터를 전송할 때 Low 레벨로 설정하여 통신할 슬레이브를 선택한다

image

여러개의 슬레이브와 병렬로 연결될 수 있으며, 여러개의 SS/CS 와이어 핀을 가질 수 있다

SS/CS 핀이 하나라면, 데이지 체인(Daisy-Chain) 방식을 통해, 여러 슬레이브를 마스터에 연결한다

MOSI, MISO

2711223657E3401735

마스터는 MOSI 와이어를 통해 데이터 비트를 직렬로 슬레이브에 전송한다

슬레이브는 MOSI 와이어핀으로 마스터로부터 전송된 데이터를 수신한다

슬레이브 또한 직렬로 MISO 와이어를 통해 마스터로 데이터를 다시 보낼 수 있다

슬레이브에서 마스터로 전송된 데이터는 일반적으로 최하위 비트(LSB) 가 먼저 전송된다

4. SPI Modes


SPI 통신의 마스터와 슬레이브는 마스터의 출력인 클럭에 맞추어 동기화된다

SPI 통신은 클럭의 극성과 위상에 따라 4가지 모드가 존재

클럭 극성(CPOL, Clock Polarity)

클럭의 기본 상태를 설정하는 속성

클럭이 Idle 상태일 때의 전압 수준을 의미함

CPOL이 Low(0)라면, 기본 상태가 Low,

반대로 CPOL이 High라면 기본 상태가 High(1)을 의미

클럭 위상(CPHA, Clock Phase)

데이터 샘플링 시점을 지정

클럭 신호의 첫번째 엣지에서 데이터가 샘플링 되는지, 두번째 엣지에서 샘플링 되는지를 정의

CPHA가 0이라면, 비활성 상태에서 활성 상태로 바뀌는 에지에서 샘플링

CPHA가 1이라면, 활성 상태에서 비활성 상태로 바뀌는 에지에서 샘플링됨

Clock-polarity-and-clock-phase

  • 클럭 극성과 위상을 이용한 4가지 모드

5. SPI 데이터 전송 과정


  1. 마스터가 동기화 클럭 신호 출력 Introduction-to-SPI-Data-Transmission-Diagram-Clock-Signal-768x198

  2. 마스터는 SS/CS 핀을 Low로 변경하여 슬레이브를 활성화 Introduction-to-SPI-Data-Transmission-Diagram-Slave-Select-Activation-768x19

  3. 마스터는 데이터를 한번에 한 비트씩 MOSI 와이어를 따라 슬레이브에게 전송
    슬레이브는 MOSI 와이어로부터 핀으로 수신한 비트를 읽어온다 Introduction-to-SPI-Data-Transmission-Diagram-Master-to-Slave-Data-Transfer-

  4. 응답이 필요한 경우, 슬레이브는 MISO 와이어를 따라 한번에 한 비트씩 마스터에게 전송한다.
    마스터는 MISO 와이어로부터 핀으로 수신한 비트를 읽어온다 Introduction-to-SPI-Data-Transmission-Diagram-Slave-to-Master-Data-Transfer-

6. 사용 예시


  • SD카드
  • RFID
  • 2.4GHz 무선 송수신기
  • LCD 디스플레이
  • 플래시 메모리
  • ADC/DAC 등

참조


윌리의 테크니컬 레퍼런스

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.