SPI(Serial Peripheral Interface Bus)란 직렬 주변기기 인터페이스 버스라고도 하며 전이중 통신 모드로 동작하고 1:N의 동기식 고속 통신 방식이다. SPI는 Master와 Slave로 구성되어 있으며 아래 그림과 같이 4개의 핀이 필요하다. 그림을 살펴보고 4개의 핀에 대해 알아보자.

 

SPI버스<출처 : 위키백과>

 

  • MOSI(Master out, Slave In) : 해석 그대로 마스터에서 데이터를 출력하기 위한 신호 선

  • MISO(Master In, Slave Out) : 위와 반대로 슬레이브에서 데이터를 출력하기 위한 신호 선

     - 각각의 출력 신호 선이 따로 있기 때문에 전이중 방식 가능

  • SCLK(Slave Clock) : 클럭 주파수를 맞추기 위한 신호 선

     - 동기 방식이기 때문에 클럭 주파수 신호 선 필요(마스터에서만 출력)

  • SS(Slave Select) : 데이터를 송수신할 때 슬레이브를 선택하기 위한 신호 선

     - 1:N의 특성에 따라 1개의 마스터와 여러 개의 슬레이브 가능

 위와 같이 SPI에서는 4개의 신호 선을 가지고 통신을 하게 되고 1개의 마스터와 1개 이상의 슬레이브가 필요하며 송수신 선이 따로따로 존재하기 때문에 동시에 데이터를 주고 받을 수 있으며 송수신 선을 한 개만 가지고 있는 I2C보다 속도가 빠르다. 하지만 슬레이브의 수가 많아질수록 SS선도 비례해서 늘어나므로(1 slave = 1 ss) 물리적 단점이 일어날 수도 있다.(나머지 3개의 선은 슬레이브가 많아지더라도 계속 공유할 수 있다.)

 

 다음은 아래에 그림을 참고하여 SPI의 통신 순서를 생각해보자.

 

SPI 통신 방법<출처:https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi>

 

  1.  송수신 할 슬레이브를 선택하기 위해 SS 신호를 보낸다.

  2.  슬레이브 선택 후 SCK 신호를 통해 클럭 신호를 맞춘다.

     - 클럭 신호는 마스터와 슬레이브만 맞추면 되기 때문에 High에서 보내든 Low에서 보내든 상관없다.

  3.  클럭 신호에 따라 MOSI or MISO를 통해 데이터를 송수신한다.

     - 그림에서는 따로따로 실행되고 있지만 동시에 송수신이 이루어져도 상관없다.

  4.  데이터 송수신이 끝나면 SS를 끊고 종료

 

 이와 같은 순서로 SPI는 통신이 이루어지며 장점도 존재하지만 단점 또한 같이 존재한다. 마지막으로 내용을 정리해보고 끝마치도록 하자.

 

  • SPI는 송수신 신호 선이 따로 있는 전이중 방식으로 I2C보다 통신 속도가 빠르다.

  • SPI 통신에는 총 4개의 신호 선이 필요하다.(MOSI, MISO, SCK, SS)

  • SPI 통신은 동기 방식이다.(SCK)

  • 1개의 마스터와 1개 이상의 슬레이브가 필요하며 1:N 통신 방식이다.

  • 슬레이브 수가 증가할 때마다 비례하여 SS 신호 선이 추가로 필요하다.(물리적 단점)

'MCU' 카테고리의 다른 글

I2C 통신이란?  (0) 2020.03.06
AVR Studio 4 vs Atmel Studio 7  (0) 2019.08.10
Atmega8(A) 특징  (0) 2019.08.10
Atmega8(A) 소개  (0) 2019.08.10
ADC(Analog-Digital Converter)  (0) 2019.08.05
블로그 이미지

Mr.HB

프로그래밍 이야기

,