DUJINLABS.COM

전자회로 실무 / 통신·신호

SPI(Serial Peripheral Interface) 디코더(decoder)를 맞추기 전에 실제 샘플링(sampling) 에지(edge)를 확인합니다

SPI(Serial Peripheral Interface)는 데이터가 바뀌는 순간과 읽는 순간이 맞지 않으면 배선이 정상이어도 틀린 값을 받습니다. CS(Chip Select)와 클록(clock)의 실제 파형을 보고 첫 비트(bit)를 언제 읽는지부터 설정과 비교해 보겠습니다.

먼저 알아둘 용어

SPI(Serial Peripheral Interface)·CS(Chip Select)·SCK(Serial Clock) — SPI는 클록에 맞추어 데이터를 주고받는 통신입니다. CS는 장치 선택 신호, SCK는 클록입니다. 선택된 구간의 어떤 에지(edge)에서 값을 읽는지 맞아야 합니다.

MOSI(Master Out, Slave In)·MISO(Master In, Slave Out) — 통상 MOSI는 제어기에서 주변장치로, MISO는 주변장치에서 제어기로 가는 데이터입니다. 동시에 선이 움직여도 모든 수신 비트(bit)가 즉시 유효하다는 뜻은 아닙니다.

CPOL(Clock Polarity)·CPHA(Clock Phase)·디코더(decoder) — CPOL은 유휴 클록 레벨이고 CPHA는 첫째 또는 둘째 에지의 샘플링(sampling) 관계를 정합니다. 디코더는 파형을 바이트(byte)로 해석하는 도구이며 장치 설정과 다르면 그럴듯한 오답을 보여 줄 수 있습니다.

시간이 흐르면서 파형이 진행되는 모습을 보여 줍니다. 흐린 선은 전체 파형이며 진한 선은 현재까지의 구간입니다. 재생 속도와 움직임의 크기는 설명을 위한 것입니다.
정지 그림 확대
시간이 흐르면서 파형이 진행되는 모습을 보여 줍니다. 흐린 선은 전체 파형이며 진한 선은 현재까지의 구간입니다. 재생 속도와 움직임의 크기는 설명을 위한 것입니다. · 그림을 클릭하면 확대됩니다.

작동 원리

CPOL은 클록의 유휴 레벨을, CPHA는 첫 번째 또는 두 번째 에지 중 어디에서 샘플링하는지 정합니다. 송신기가 데이터를 바꾸는 순간과 수신기가 읽는 순간이 맞지 않으면, 배선 도통과 클록 주파수가 정상이어도 비트가 틀릴 수 있습니다. 분석기의 모드 설정이 틀려도 화면에는 그럴듯한 잘못된 바이트가 나타납니다. 하드웨어 오류와 디코더 해석 오류를 분리하는 것이 요령입니다.

적용 순서

  1. 주변장치 데이터시트(datasheet)에서 SCK 유휴 상태, 데이터 출력 변경 에지, 입력 샘플 에지, CS 극성과 타이밍(timing)을 먼저 찾습니다. 모드 번호만 보지 말고 실제 타이밍 그림과 MCU(Microcontroller Unit) 레지스터(register) 의미를 맞춥니다. 제조사마다 위상 비트 이름이나 반전 의미가 다를 수 있습니다.
  1. CS·SCK·MOSI·MISO의 디코딩 전의 실제 파형을 한 화면에 함께 표시합니다. CS가 활성화되기 전 클록 상태와 첫 번째 유효 에지를 표시합니다. 샘플 지점의 앞뒤로 데이터가 안정적인지 확인합니다.
  1. 데이터를 바꾸는 클록 에지와 읽는 에지를 장치 문서에서 확인한 뒤, 분석기의 모드와 비트 순서, 워드 길이를 맞춥니다. CPHA=0이면 첫 샘플 에지 전에 첫 비트가 준비되어야 합니다. 받은 값이 한 비트씩 밀려 보이면 모드·CS 경계·첫 비트를 함께 확인합니다.
  1. 안전한 읽기 전용 ID나 알려진 패턴으로 검증합니다. 낮은 클록에서 시작해 요구 속도까지 올리며 데이터와 타이밍 여유를 비교합니다. 디코더의 모드만 바꿔 숫자가 맞았다는 이유로 MCU와 주변장치의 설정이 맞다고 결론내리지 않습니다.

계산과 판단 예

일반적인 모드CPOLCPHA샘플 에지
000상승
101하강
210하강
311상승

보통 반대 에지에서 데이터를 변경하지만 실제 소자의 출력 지연·설정 시간·CS 요구가 우선입니다. CPHA=0에서는 첫 샘플 전에 첫 비트가 준비되어야 합니다. 모드 번호와 실제 타이밍 그림을 함께 맞춥니다.

적용 조건과 한계

모드만 맞아도 전압 레벨, 접지, MISO 충돌, 비트 순서, 명령 길이가 틀리면 실패합니다. 모든 SPI 거래가 첫 클록부터 유효한 수신 데이터를 주는 것은 아닙니다. 명령·주소·더미 클록은 부품 프로토콜에서 확인합니다. 무작위 쓰기 명령을 보내 시험하지 않습니다.

확인과 기록

원시 파형의 샘플 위치, MCU 설정, 디코더 설정, 알려진 응답이 일치하는지 확인합니다. 모든 비트가 같은 0x00·0xFF만으로 순서나 한 비트 밀림까지 검증하지 않습니다.

작업 순서를 다시 확인합니다

SPI 디코더를 맞추기 전에 실제 샘플링 에지를 확인합니다 — 설명용 도해
SPI 디코더를 맞추기 전에 실제 샘플링 에지를 확인합니다 — 설명용 도해 · 클릭하면 확대됩니다.