Ch1 Seminar/IP

SPI 통신 overview

베린이 2023. 5. 16. 22:22
반응형

이번주에 SPI를 주제로 세미나가 있어서 준비하면서 공부한 내용을 정리하려고 합니다.



SPI(Serial Peripheral Interface)는 I2C, UART 등과 같이 I/O와 통신하는 데 사용되는 시리얼 통신 방법 중 하나입니다.

시리얼 통신 종류마다 각각의 특징이 있는데, SPI의 경우에는 다음과 같습니다.

1. I2C와 다르게 완전 전이중 통신으로써 양방향 통신 지원
2. 전송 비트 수 조절 가능 (~16bit)
3. 최대 4개 핀 사용
4. I2C에 비해 빠른 통신속도 낮은 전력 소비, 단거리 통신만 가능
5. UART의 parity 같은 오류를 검사하는 프로토콜이 없다.
그렇다면 SPI의 작동방식에 대해 알아보겠습니다.

- SPI 통신 방식

1:N 4-wire SPI 통신 <CORELIS. SPI Tutorial>

SPI는 Master와 Slave가 있는데요, Master가 통신을 제어하는 역할을 합니다. 1:1 뿐 아니라 1:N 연결이 가능합니다.

 

SCLK : SPI clock (master -> slave)

MOSI (Master out, Slave in) : 마스터에서 슬레이브로 데이터가 전송되는 핀

MISO (Master in, Slave out) : 슬레이브에서 마스터로 데이터가 전송되는 핀

SS (Slave select) : 슬레이브 선택 핀, 위에 바가 쓰여있으면 Active-Low

 

MOSI, MISO가 나뉘어 있어서 전이중 통신이 가능한 겁니다.

 

- SPI 통신 모드

SPI 통신은 CPOL과 CPHA의 설정에 따라 통신 모드가 달라지는데요, 우선 CPOL과 CPHA가 무엇인지 알아야겠죠??

 

CPOL (Clock Polarity) : Clock 극성, SPI 작동하지 않을 때 (IDLE 상태) 클럭의 값을 나타냅니다. CPOL = 0으로 설정되면, 클럭 기본값은 LOW입니다.

CPHA (Clock Phase) : Clock 위상, 즉 데이터를 읽는 타이밍을 나타냅니다. CPHA = 0으로 설정되면, 클럭의 rising edge에서 데이터를 읽고 1로 설정되면 falling edge에서 데이터를 읽습니다.

 

 

위 그림을 보시면 1~8 데이터가 전송되는 동안 SS가 Low 상태를 유지하고 있네요, 앞에서 말씀드린 대로 SS는 Active Low이기 때문에 SPI가 작동하는 동안에는 Low 상태를 유지해야 합니다.

 

가장 위에는 CPOL이 0인 상태를 보여주고 있는데요, SPI가 비활성인 상태는 Low, 활성인 상태는 High 상태이고 1이면 반대가 됩니다.

 

그 밑에는 CPHA 값에 따라 데이터 전송방법이 어떻게 달라지는지 보여주고 있습니다. CPHA 가 0일 때는 클럭 rising edge빨간색 시점에 데이터가 전송됩니다. 1일 때는 클럭 falling edge파란색 시점에 데이터가 전송됩니다.

 

이렇게 SPI 통신에는 CPOL, CPHA의 설정에 따라 4가지 모드가 존재합니다.

 

 

- SPI 전송 모드

앞에서 4-wire로 연결된 그림이 있었는데요, 핀 수를 줄이기 위한 3-wire mode나 더 빠른 전송을 위한 dual / quad mode도 있습니다.

 

1. 3 - wire mode

1:1 3-wire SPI 통신 <CORELIS. SPI Tutorial>

 

4-wire mode에서 Master와 Slave는 MOSI, MISO 라인을 통해 단방향(Unidirectional)으로 데이터를 주고받았는데요, 3-wire mode에서는 단일 양방향(bidirectional) 라인으로 데이터를 주고받아 핀을 줄일 수 있습니다. 이는 핀 수가 제한된 MCU에서 매우 중요한데요, 데이터 라인을 줄일 수 있지만 전이중 방식이 아닌 반이중 통신이 되어 throughput 같은 성능이 저하됩니다(Low performance).

 

2. Dual / Quad mode

1:1 Quad mode SPI 통신<CORELIS. SPI Tutorial>

3-wire mode에서는 양방향 신호 라인이 1개만 존재하는데요, 2개를 쓰면 Dual mode 4를 쓰면 Quad mode가 됩니다. 이때는 핀 수가 많아지는 단점이 있지만 그만큼 데이터 전송속도가 빨라지는 이점이 있습니다. 사용 목적과 핀 수 같은 제한조건에 따라 적절한 모드를 사용하는 것이 중요하겠죠?

 

'Ch1 Seminar > IP' 카테고리의 다른 글

LIN overview (2) Sleep, Wake up  (0) 2023.10.11
LIN overview (1) Protocol  (0) 2023.10.04
UART 통신 overview  (0) 2023.07.26
Decimation filter (데시메이션 필터)  (0) 2023.06.10
I2C 통신 overview  (5) 2023.05.24