직렬 주변기기 인터페이스 버스

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 찾기
SPI 버스: 싱글 마스터와 싱글 슬레이브

직렬 주변기기 인터페이스 버스(Serial Peripheral Interface Bus) 또는 SPI 버스는 아키텍처 전이중 통신 모드로 동작하는 모토로라 아키텍처에 이름을 딴 동기화 직렬 데이터 연결 표준이다. 장치들은 마스터 슬레이브 모드로 통신하며 여기서 마스터 장치는 데이터 프레임을 초기화한다. 여러 슬레이브 장치들은 개별 슬레이브 셀렉트 (칩 셀렉트) 라인과 함께 동작할 수 있다.

목차

인터페이스 [편집]

SPI 버스는 4가지 논리 신호를 지정한다:

  • SCLK: 직렬 클럭 (마스터로부터의 출력)
  • MOSI; SIMO: 마스터 출력, 슬레이브 입력 (마스터로부터의 출력)
  • MISO; SOMI: 마스터 입력, 슬레이브 출력 (슬레이브로부터의 출력)
  • SS: 슬레이브 셀렉트 (active low, 마스터로부터의 출력).

그 밖의 대안 이름으로는 다음과 같이 쓰인다:

  • SCK; CLK: 직렬 클럭 (마스터로부터의 출력)
  • SDI; DI, DIN, SI: 직렬 데이터 입력; 데이터 입력, 직렬 입력
  • SDO; DO, DOUT, SO: 직렬 데이터 출력, 데이터 출력, 직렬 출력
  • 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가지 방식이 가능하다.

  1. Motorola SSP Format with SPO=0, SPH=0
  2. Motorola SSP Format with SPO=0, SPH=1
  3. Motorola SSP Format with SPO=1, SPH=0
  4. Motorola SSP Format with SPO=1, SPH=1

SPO(Signal Polarity)와 SPH(Signal Phase)변경하면 다음과 같은 약속의 효과가 있다.

  1. polarity Control 설정이 LOW인 경우 SCLK가 LOW 인 구간에 의미있는 신호가 출력된다.
  2. polarity Control 설정이 HIGH인 경우 SCLK가 HIGH 인 구간에 의미있는 신호가 출력된다.
  3. phase control 설정이 LOW인 경우 SCLK가 첫 번째 변화(엣지)시점에서 신호를 수신(Capture)한다.
  4. phase control 설정이 HIGH인 경우 SCLK가 두번째 변화(엣지)시점에서 신호를 수신(Capture)한다.

사례

  1. SPO가 0, SPH가 1인경우

SPI CLOCK가 LOW상태에서 SS가 HIGH에서 LOW가 되고 SPI_CLOCK이 HIGH로 올라가면서 동시에 MOSI가 활성화된다. SPI CLOCK 이 절반나갔을 때부터 유효 데이터로 인정되고 SPI CLOCK 이 떨어지는(폴링엣지)시점에 의미있는 신호가 데이터로서 수신된다(Capture)

  1. SPO가 1, SPH가 1인경우

SPI CLOCK가 HIGH상태에서 SS가 HIGH에서 LOW가 되고 SPI_CLOCK이 LOW로 떨어지면서 동시에 MOSI가 활성화된다. SPI CLOCK 이 절반나갔을 때부터 유효 데이터로 인정되고 SPI CLOCK 이 올라가는(라이징엣지)시점에 의미있는 신호가 데이터로서 수신된다(Capture)

  • CLOCK 관계(Master/Slave 에서 주의할 사항)
    • Master 일때 1.8432Mbps 속도를 내기 위해서 동작클럭은 최소 3.6864Mhz가 되어야한다.
    • Slave 일때 1.8432Mbps 속도를 내기 위해서는 동작클럭이 최소 22.12Mhz가 되어야 한다.

입력되는 SPI Clock의 변화(edge)을 감지하기 위해서는 최소 2배이상 빠르게 동작해야 하므로 2배이상의 동작클럭이 요구된다. 특히 Slave인 경우 마스터가 제공하는 SPI CLock을 감지하고 지연처리하기 위해서 12배이상으로 빠르게 동작해야 정상동작한다.

모드 번호 [편집]

모드 CPOL CPHA
0 0 0
1 0 1
2 1 0
3 1 1

SPI의 장단점 [편집]

장점 [편집]

  • 완전한 전이중 통신
  • 전송되는 비트에 대한 완전한 프로토콜 유연성
  • 전송기가 필요하지 않음
  • 매우 단순한 하드웨어 인터페이스 처리
  • IC 패키지에 4개의 핀만 사용하며 이는 병렬 인터페이스에 비해 수가 적은 것이다.

단점 [편집]

  • 하드웨어 슬레이브 인식이 없음
  • 슬레이브에 의한 하드웨어 흐름 제어가 없음
  • 오류 검사 프로토콜이 정의되어 있지 않음
  • 일반적으로 노이즈 스파이크에 영향을 받는 경향이 있음 (통신 문제를 일으킬 수 있음)
  • RS-232, RS-485, CAN 버스보다 비교적 더 짧은 거리에서 동작
  • 하나의 마스터 장치만 지원

같이 보기 [편집]

관련 단자

바깥 고리 [편집]