SPI란?, SPI 통신, SPI 통신 이론, CPOL, CPHA, Clock Polarity, Clock Phase

728x90
반응형

SPI(Serial Peripheral Interface)는 IC를 제어하는 직렬 통신이다. I2C와 함께 가장 많이 사용되는 통신 프로토콜로 보통 센서, 메모리 등의 IC를 보면 I2C와 공통으로 지원하는 경우가 많다.

용어 정리 

  • MOSI, Master Out Slave In, 마스터에서 데이터를 출력하고 슬레이브에서 마스터 데이터를 입력받는 핀
  • MISO, Master In Slave Out, 슬레이브에서 데이터를 출력하고, 마스터에서 데이터를 입력받는 핀 
  • SCK, SCLK, CLK, SCL 모두 Clock을 의미 
  • CS, SS, nSS, NSS, CE 모두 Chip Select를 의미

 

특징을 정리해보면,

  • 1:1 통신이 기본이지만 Cihp Select(또는 Slave Select)를 이용해 1:N으로 다수의 IC를 제어할 수 있다. 
  • Master가 전체적인 통신을 제어한다. Slave는 Master에 먼저 통신을 요청할 수 없다.
  • Single, Dual, Quad SPI가 있다.
  • Master만 데이터를 전송하는 3-Wire모드(Half Duplex)와 Master, Slave 양방향으로 데이터를 송수신하는 4-Wire(Full Duplex) 모드가 있다.(Singe SPI)
  • Dual SPI는 Single SPI에 비해 속도가 2배 빠르고, Quad SPI는 4배 빠르다.
  • CS(SS) 핀이 Low(0, GND)인 상태에서만 데이터를 송수신할 수 있다.
  • 최대 16bit 데이터를 전송할 수 있고, 데이터 길이를 변경할 수 있다.
  • I2C에 비해 소비전력이 낮다.
  • Motorola방식과 TI 방식이 있는데 Motorola 방식이 가장 많이 사용된다.
  • MSB First, LSB First 방식이 있다.
  • 전이중 통신
  • 통신 거리가 짧다. UART, CAN 등에 비해 거리가 짧기 때문에 IC 간 통신에서만 주로 사용된다.
  • 별도의 트랜시버가 필요하지 않다. 
  • 통신 에러를 확인할수 있는 오류 검사 프로토콜이 정의되어 있지 않다.

 

아래 그림은 SPI 연결 방법이다. 왼쪽 그림이 일반적으로 많이 사용되는 SPI 연결방식이고, 오른쪽 그림은 Daisy chain방식이다. Daisy chain방식은 많이 사용하지 않기 때문에 저런 게 있구나 정도로 알고 넘어가면 될 것 같다.  

(왼쪽)일반적인 SPI 연결 방식, (오른쪽) Daisy chain SPI 연결방식

 

 

SPI에서 중요한것중 하나가 바로 CPOL(Clock Polarity)와 CPHA(Clock Phase)다. 설정은 총 4가지가 될 수 있다.

mode CPOL CPHA
0 0 0
1 0 1
2 1 0
3 1 1

 

mode 0, 1 

CPOL이 0이면 Clock핀이 Low상태를 유지하다가 Clock이 발생되면 Low -> High(Rising edge) -> Low(Falling edge) 순서로 클럭을 만든다. [mode0] CPHA는 데이터를 읽는 타이밍이다. CPHA가 0인 경우 상승(Rising edge)에서 bit값을 읽고 하강 에지(Falling edge)에서 bit 값을 변경할 수 있다. [mode 1] 반대로 CPHA가 1이면 하강 에지에서 bit값을 변경할 수 있고, 상승 에지에서 bit값을 읽는다.

mode 2, 3 

CPOL이 1이면 Clock핀이 High를 유지하다가 Clock이 발생되면 High -> Low(Falling edge) -> High(Rising edge) 순서로 클럭을 만든다. [mode2] CPHA는 데이터를 읽는 타이밍이다. CPHA가 0인 경우 하강(Falling edge)에서 bit값을 읽고 상승 에지(Rising edge)에서 bit 값을 변경할 수 있다. [mode3]반대로 CPHA가 1이면 상승 에지에서 bit값을 변경할 수 있고, 하강 에지에서 bit값을 읽는다.

 

Clock의 발생 시점은 아래 그림과 같이 SS가 High에서 Low 변경된 다음이다. 아래 그림을 보면 좀 더 쉽게 이해될 것이다.

Rising, Falling edge에 대한 포스팅 참고

https://vuzwa.tistory.com/entry/Falling-edge-Rising-edge-%EC%83%81%EC%8A%B9%EC%97%A3%EC%A7%80-%ED%95%98%EA%B0%95%EC%97%A3%EC%A7%80-%EC%8A%A4%EC%9C%84%EC%B9%98-%EC%B1%84%ED%84%B0%EB%A7%81switch-chattering?category=953317 

 

Falling edge, Rising edge, 상승엣지, 하강엣지, 스위치 채터링(switch chattering)

디지털에서는 정보의 표현을 0과 1로 하는데 0과 1을 간단히 설명하자면 전자회로에서 발생하는 신호가 5V 또는 3.3V를 High level(1)이라 하고, 0V 또는 GND를 Low level(0)이라고 한다. 그럼 Falling edge, Risi.

vuzwa.tistory.com

 

 

SPI에 대한 이론적인 설명은 이 정도면 충분할 것 같다. 모든 그림의 출처는 위키백과입니다. 더 자세한 설명이 필요하면 위키백과 참고.

https://en.wikipedia.org/wiki/Serial_Peripheral_Interface

 

Serial Peripheral Interface - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Synchronous serial communication interface The Serial Peripheral Interface (SPI) is a synchronous serial communication interface specification used for short-distance communication, pr

en.wikipedia.org

혹시 틀린 부분이 있거나, 질문이 있으면 댓글 부탁드립니다. 

 

- 끝 -

728x90
반응형