본문 바로가기
돈버는정보 돈버는정보

SPI Mode 0·1·2·3 의미

읽는 시간 약 7분

SPI 통신 사양서를 보면 Mode 0, Mode 1, Mode 2, Mode 3이라는 표기를 자주 볼 수 있습니다.

이 네 가지 모드는 SPI 클럭인 SCLK의 기본 상태와 데이터를 읽는 시점을 구분한 것입니다.

SPI Mode는 두 가지 값으로 결정됩니다.

CPOL = Clock Polarity, 클럭 극성

CPHA = Clock Phase, 클럭 위상

즉 Mode 0~3은 CPOL과 CPHA의 조합입니다.

SPI Mode 0·1·2·3 기본 차이

SPI ModeCPOLCPHASCLK 대기상태데이터 읽는 에지
Mode 000LOWRising Edge
Mode 101LOWFalling Edge
Mode 210HIGHFalling Edge
Mode 311HIGHRising Edge

Microchip 역시 Mode 0~3을 이와 같은 CPOL·CPHA 조합으로 정의합니다.

CPOL은 무엇을 의미할까?

CPOL은 통신하지 않을 때 SCLK가 어떤 전압 상태에 있는지를 결정합니다.

CPOL = 0 → SCLK가 LOW 상태로 대기

CPOL = 1 → SCLK가 HIGH 상태로 대기

따라서 Mode 0과 Mode 1은 클럭이 LOW에서 시작하고, Mode 2와 Mode 3은 HIGH에서 시작합니다.

CPHA는 무엇을 의미할까?

CPHA는 클럭의 어느 에지에서 데이터를 샘플링할지 결정합니다.

CPHA = 0 → 첫 번째 클럭 에지에서 데이터 샘플링

CPHA = 1 → 두 번째 클럭 에지에서 데이터 샘플링

여기서 첫 번째·두 번째 에지는 CPOL에 따라 달라집니다.

예를 들어 CPOL=0이라면 클럭이 LOW에서 시작하기 때문에 첫 번째 에지는 Rising Edge입니다.

반대로 CPOL=1이라면 HIGH에서 시작하므로 첫 번째 에지는 Falling Edge입니다.

Mode 0은 어떻게 동작할까?

Mode 0은

CPOL = 0

CPHA = 0

입니다.

SCLK는 평상시에 LOW이고 첫 번째 Rising Edge에서 데이터를 읽습니다.

Rising Edge → 데이터 샘플링

Falling Edge → 다음 데이터 변경

방식입니다.

많은 SPI 장치에서 흔히 볼 수 있는 설정 중 하나입니다.

Mode 1은 무엇이 다를까?

Mode 1은

CPOL = 0

CPHA = 1

입니다.

SCLK는 Mode 0과 마찬가지로 LOW 상태에서 시작하지만 데이터 읽는 시점이 반대입니다.

Rising Edge → 데이터 변경

Falling Edge → 데이터 샘플링

으로 동작합니다.

Mode 2와 Mode 3은?

Mode 2와 Mode 3에서는 SCLK가 평상시에 HIGH 상태입니다.

Mode 2는

CPOL = 1 / CPHA = 0

이므로 첫 번째 Falling Edge에서 데이터를 읽습니다.

Mode 3은

CPOL = 1 / CPHA = 1

이므로 두 번째 Rising Edge에서 데이터를 읽습니다.

따라서 Mode 0과 Mode 3 모두 Rising Edge에서 샘플링하지만 클럭의 기본상태와 데이터 변경 타이밍이 서로 다릅니다.

Controller와 Peripheral의 Mode가 다르면 어떻게 될까?

SPI 통신에서는 양쪽 장치의 CPOL과 CPHA 설정이 일치해야 합니다.

예를 들어 센서 데이터시트가

SPI Mode 3

을 요구하는데 마이크로컨트롤러를 Mode 0으로 설정하면 데이터를 변경하는 순간과 읽는 순간이 맞지 않을 수 있습니다.

이 경우

데이터 값이 계속 틀리거나, 특정 비트가 밀리거나, 통신 자체가 불안정해질 수 있습니다.

따라서 SPI 장치를 연결할 때는 통신속도보다 먼저 지원하는 SPI Mode를 확인하는 것이 중요합니다.

SPI에는 어떤 신호선이 사용될까?

일반적인 SPI에서는 다음과 같은 신호를 사용합니다.

SCLK = Serial Clock

COPI(MOSI) = Controller → Peripheral 데이터

CIPO(MISO) = Peripheral → Controller 데이터

CS = Chip Select

Controller가 SCLK를 만들어주고 CS를 활성화한 뒤 데이터를 주고받습니다. TI는 일반적인 단일 Controller·Peripheral SPI를 이 네 개의 신호선으로 설명합니다.

Mode가 같으면 모든 SPI 장치를 바로 연결할 수 있을까?

그렇지는 않습니다.

SPI Mode 외에도 다음 조건을 확인해야 합니다.

최대 SCLK 주파수

MSB First 또는 LSB First

데이터 길이 8bit·16bit 등

CS 활성 레벨

전원 및 로직 전압

예를 들어 두 장치가 모두 Mode 0이라도 한쪽이 1MHz까지만 지원하는데 10MHz 클럭을 사용하면 정상적으로 통신하지 못할 수 있습니다.

실제 데이터시트는 어떻게 읽을까?

다음과 같은 사양이 있다고 가정해보겠습니다.

SPI Mode: 3
SCLK max: 10MHz
Data: MSB first

이를 해석하면

Mode 3 = CPOL 1 / CPHA 1

SCLK = 평상시 HIGH

데이터 = Rising Edge에서 샘플링

최대 클럭 = 10MHz

MSB first = 최상위 비트부터 전송

이라는 의미입니다.

따라서 MCU에서도 같은 Mode 3과 데이터 순서를 설정해야 합니다.

정리

SPI Mode 0·1·2·3은 클럭 극성과 데이터 샘플링 시점을 구분하는 설정입니다.

핵심은 다음과 같습니다.

Mode 0 = CPOL 0 / CPHA 0

Mode 1 = CPOL 0 / CPHA 1

Mode 2 = CPOL 1 / CPHA 0

Mode 3 = CPOL 1 / CPHA 1

CPOL은 SCLK의 기본상태를, CPHA는 데이터를 읽는 클럭 에지를 결정합니다.

SPI 통신을 설정할 때는 Mode → 최대 클럭속도 → 비트 순서 → 데이터 길이 → CS 조건을 함께 확인하는 것이 중요합니다.

참고로 SPI는 I²C처럼 하나의 단일 국제표준 문서로 모든 세부사항이 통일된 인터페이스는 아니므로, 실제 연결에서는 사용하는 부품의 데이터시트에 표시된 타이밍 다이어그램을 우선 확인하는 것이 가장 안전합니다.

moneytoday
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.