직렬 주변기기 인터페이스 버스(Serial Peripheral Interface Bus) 또는 SPI 버스는 아키텍처 전이중 통신 모드로 동작하는 모토로라 아키텍처에 이름을 딴 동기화직렬 데이터 연결 표준이다. 장치들은 마스터 슬레이브 모드로 통신하며 여기서 마스터 장치는 데이터 프레임을 초기화한다. 여러 슬레이브 장치들은 개별 슬레이브 셀렉트 (칩 셀렉트) 라인과 함께 동작할 수 있다.
MISO - SDO; DO, DOUT, SO: 직렬 데이터 출력, 데이터 출력, 직렬 출력
SS - nCS, CS, CSB, CSN, nSS, STE: 칩 셀렉트, 슬레이브 전송 기능 이용 (active low, 마스터로부터의 출력)
통신 개요
마스터가 SS를 통해 신호를 전송할 슬레이브를 선택한다. 마스터는 MOSI를 통해서 SCLK에 동기화된 신호를 전송한다. 슬레이브는 SS을 통해서 신호를 수신할 수 있게 활성화되어 있는 상태에서 자신(슬레이브)의 MOSI를 통하여 전달되는 신호를 SCLK 에 맞춰 수신한다. SCLK에 동기화된 MOSI 신호는 8비트나 16비트, 또는 그 이상의 비트로 조합되어 유의미한 데이터로 사용된다.
SPI를 사용하여 통신하는 프로토콜은 몇 가지 인터페이스로 나뉜다.
모토로라 SSP 호환 인터페이스
전이중, four-wire 동기 전송
프로그래밍 가능한 clock polarity 및 phase
내셔널 세미컨덕터 마이크로와이어 인터페이스
8비트 제어 메시지를 이용한 반이중 전송
텍사스 인스트루먼츠 동기 직렬 인터페이스
전이중, four-wire 동기 전송
Transmit data pin tristateable when not transmitting.
모토로라 SSP 호환 인터페이스는 Polarity와 Phase로 신호를 서로 송신하는 프로토콜이 조절할 수 있다.
Polarity와 Phase를 조합하면 4가지 방식이 가능하다.
Motorola SSP Format with SPO=0, SPH=0
Motorola SSP Format with SPO=0, SPH=1
Motorola SSP Format with SPO=1, SPH=0
Motorola SSP Format with SPO=1, SPH=1
SPO(Signal Polarity)와 SPH(Signal Phase)변경하면 다음과 같은 약속의 효과가 있다.
polarity Control 설정이 LOW인 경우 SCLK가 LOW 인 구간에 의미있는 신호가 출력된다.
polarity Control 설정이 HIGH인 경우 SCLK가 HIGH 인 구간에 의미있는 신호가 출력된다.
phase control 설정이 LOW인 경우 SCLK가 첫 번째 변화(엣지)시점에서 신호를 수신(Capture)한다.
phase control 설정이 HIGH인 경우 SCLK가 두 번째 변화(엣지)시점에서 신호를 수신(Capture)한다.
사례
SPO가 0, SPH가 1인경우
SPI CLOCK가 LOW상태에서 SS가 HIGH에서 LOW가 되고 SPI_CLOCK이 HIGH로 올라가면서 동시에 MOSI가 활성화된다. SPI CLOCK 이 절반나갔을 때부터 유효 데이터로 인정되고 SPI CLOCK 이 떨어지는(폴링엣지)시점에 의미있는 신호가 데이터로서 수신된다(Capture)
SPO가 1, SPH가 1인경우
SPI CLOCK가 HIGH상태에서 SS가 HIGH에서 LOW가 되고 SPI_CLOCK이 LOW로 떨어지면서 동시에 MOSI가 활성화된다. SPI CLOCK 이 절반나갔을 때부터 유효 데이터로 인정되고 SPI CLOCK 이 올라가는(라이징엣지)시점에 의미있는 신호가 데이터로서 수신된다(Capture)