맨위로가기

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

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

직렬 주변기기 인터페이스(SPI) 버스는 마스터-슬레이브 방식으로 작동하며, 다양한 주변 장치 간의 직렬 통신을 위한 인터페이스이다. SPI는 SCLK(직렬 클럭), MOSI(마스터 출력, 슬레이브 입력), MISO(마스터 입력, 슬레이브 출력), SS(슬레이브 선택)의 4가지 신호를 사용하며, 클럭 극성(CPOL)과 클럭 위상(CPHA)을 조절하여 통신 방식을 설정한다. SPI는 멀티드롭, 데이지 체인, 확장 등 다양한 버스 토폴로지를 지원하며, QSPI, Microwire, 3선식, 듀얼/쿼드 SPI, eSPI 등 다양한 변형이 존재한다.

더 읽어볼만한 페이지

  • 직렬 버스 - 인피니밴드
    인피니밴드는 고성능 컴퓨팅 환경에서 서버, 스토리지, 네트워크 장치 간 고속 데이터 전송을 위한 직렬 통신 기술로, 슈퍼컴퓨터나 데이터 센터에서 주로 사용되지만 이더넷 기반 기술과의 경쟁 및 새로운 컴퓨팅 환경에 대한 적응이라는 과제를 안고 있다.
  • 직렬 버스 - 하이퍼트랜스포트
    하이퍼트랜스포트는 고성능 컴퓨터 시스템에서 CPU, 메모리, 칩셋 간의 연결을 고속으로 처리하기 위해 개발된 상호 연결 기술로, AMD CPU와 엔비디아 칩셋 등에 적용되어 시스템 효율성을 향상시키고 다양한 응용 분야에 활용되며 후속 기술의 기반이 되었다.
  • 컴퓨터 버스 - NMEA 0183
    NMEA 0183은 선박용 GPS, 자동식별장치(AIS) 등 항해 장비에서 데이터를 송수신하는 데 사용되는 ASCII 기반의 직렬 통신 프로토콜로, RS-422 전기 표준을 사용하며, 문장 형태의 데이터를 통해 정보를 전달하고, 물리 계층, 데이터 링크 계층, 애플리케이션 계층의 3가지 레이어로 구성되어 다양한 소프트웨어에서 지원된다.
  • 컴퓨터 버스 - 인피니밴드
    인피니밴드는 고성능 컴퓨팅 환경에서 서버, 스토리지, 네트워크 장치 간 고속 데이터 전송을 위한 직렬 통신 기술로, 슈퍼컴퓨터나 데이터 센터에서 주로 사용되지만 이더넷 기반 기술과의 경쟁 및 새로운 컴퓨팅 환경에 대한 적응이라는 과제를 안고 있다.
직렬 주변기기 인터페이스 버스
개요
종류직렬 통신 버스
설계모토로라
데이터 스타일전이중 직렬
데이지 체인장치에 따라 다름
제조사다양함
데이터 장치멀티드롭 (칩 선택에 따라 제한됨). 데이지 체인 (무제한).
데이터 비트 폭1 비트 (양방향)
고주파 여부
MOSI마스터 출력, 서브 입력
MISO마스터 입력, 서브 출력
SCLK직렬 클럭
핀아웃 참고(핀은 대체 이름을 가질 수 있음)
최대 전압지정되지 않음
최대 전류지정되지 않음
물리적 커넥터지정되지 않음
디자인 날짜1980년대 초반 경
설명
Serial Peripheral Interface (SPI)직렬 주변 장치 인터페이스

2. 인터페이스

(마스터 출력, 슬레이브 입력)주 장치에서 나오는 직렬 데이터, 최상위 비트 우선MISO주 입력, 서브 출력
(마스터 입력, 슬레이브 출력)서브 장치에서 나오는 직렬 데이터, 최상위 비트 우선



주 장치의 MOSI는 서브 장치의 MOSI로 출력된다. 서브 장치의 MISO는 주 장치의 MISO로 출력된다.

각 장치는 직렬 통신을 위해 내부적으로 시프트 레지스터를 사용하며, 이는 함께 칩 간 원형 버퍼를 형성한다.

서브 장치는 장치가 선택되지 않은 경우 MISO 신호가 하이 임피던스 (전기적으로 분리됨)가 되도록 트라이 스테이트 출력을 사용해야 한다.

※MISO, MOSI, SS를 CIPO (컨트롤러 인 주변기기 아웃), COPI (컨트롤러 아웃 주변기기 인), CS (칩 셀렉트)로 바꿔 부르는 움직임도 있다.

하나의 마스터에 여러 슬레이브 장치를 연결할 때, SCK, MISO, MOSI의 3개 선은 공통으로 사용할 수 있다. SS만 슬레이브마다 독립적이지만, 마스터가 슬레이브를 구별할 필요가 없다면 예외이다. 슬레이브 장치가 하나뿐이거나, 구별할 필요가 없는 경우에는 SS를 생략하고 3개 선으로 연결할 수 있다. 이 경우 슬레이브 측 SS를 액티브(대개 LOW) 상태로 상시 연결한다.

3. 통신 개요

SPI 통신은 마스터-슬레이브 모델을 기반으로 하며, 일반적으로 다음 4개의 신호를 사용한다.[5]

약어이름설명
칩 선택주 장치에서 특정 서브 장치와의 통신을 활성화하기 위한 액티브 로우 신호
SCLK직렬 클럭주 장치에서 제공되는 클럭 신호
MOSI주 출력, 서브 입력주 장치에서 나오는 직렬 데이터, 최상위 비트 우선
MISO주 입력, 서브 출력서브 장치에서 나오는 직렬 데이터, 최상위 비트 우선



그림 1: 단일 서브가 있는 일반적인 SPI 연결


통신을 시작하기 위해 마스터는 신호를 로우로 설정하여 특정 슬레이브를 선택한다. 각 SPI 클럭 사이클 동안 전이중(full-duplex) 데이터 전송이 발생한다. 즉, 마스터는 MOSI를 통해 슬레이브로 데이터를 보내고, 동시에 슬레이브는 MISO를 통해 마스터로 데이터를 보낸다.

데이터는 일반적으로 최상위 비트(MSB)부터 전송되며, 각 장치는 내부 시프트 레지스터를 사용하여 직렬 통신을 수행한다. 이 레지스터들은 칩 간에 원형 버퍼를 형성한다. 슬레이브 장치는 선택되지 않았을 때 MISO 신호를 하이 임피던스 상태로 만들어 다른 슬레이브와의 버스 경합을 방지해야 한다.

SPI는 I2C, Microwire 등과 함께 적은 수의 핀으로 주변 장치를 연결하기 위해 제안된 직렬 버스 규격 중 하나이며, 모토로라(현재는 NXP 반도체)가 제창하였다.

3. 1. 클럭 극성(CPOL) 및 위상(CPHA)

모토로라(Motorola)[3][15]는 마스터(Master)가 설정해야 하는 두 가지 옵션으로 CPOL(Clock Polarity, 클럭 극성) 및 CPHA(Clock Phase, 클럭 위상)를 정의했다. 이 두 옵션은 데이터에 대한 클럭의 극성과 위상을 조절하며, 대부분의 공급업체에서도 이 방식을 채택하고 있다.

338x338px


클럭 극성과 위상을 나타내는 타이밍 다이어그램. 빨간색 선은 클럭 선두 에지, 파란색 선은 후행 에지를 나타냅니다.


CPOL과 CPHA의 조합에 따라 4가지 모드가 가능하다.

CPOLCPHA설명
00SCLK는 유휴 상태에서 LOW, 데이터는 첫 번째 클럭 에지에서 캡처
01SCLK는 유휴 상태에서 LOW, 데이터는 두 번째 클럭 에지에서 캡처
10SCLK는 유휴 상태에서 HIGH, 데이터는 첫 번째 클럭 에지에서 캡처
11SCLK는 유휴 상태에서 HIGH, 데이터는 두 번째 클럭 에지에서 캡처



MOSI 및 MISO 신호는 일반적으로 다음 클럭에서의 전이까지 반 사이클 동안 (수신 지점에서) 안정적이다. SPI 마스터 및 슬레이브 장치는 해당 반 사이클에서 다른 지점에서 데이터를 샘플링할 수 있다. 이를 통해 마스터와 슬레이브 간의 통신 채널 유연성이 향상된다.

3. 2. 모드 번호

(CPOL)클럭 위상
(CPHA)데이터는 다음 신호에 의해 출력됨데이터는 다음 신호에 의해 샘플링됨000하강하는 SCLK, 가 활성화될 때상승하는 SCLK101상승하는 SCLK하강하는 SCLK210상승하는 SCLK, 가 활성화될 때하강하는 SCLK311하강하는 SCLK상승하는 SCLK



다른 표기법으로는 모드를 (CPOL, CPHA) 튜플로 나타내는 방식이 있다. 예를 들어, '(0, 1)'은 CPOL=0, CPHA=1을 나타낸다. 전이중 작동에서 주 장치는 서로 다른 모드로 송수신할 수 있다. 예를 들어, 동시에 모드 0으로 전송하고 모드 1로 수신할 수 있다. 다른 공급업체는 클럭 에지에 대한 CKE 또는 CPHA의 반전에 대한 NCPHA와 같은 다른 명명 체계를 사용할 수 있다.

극성과 위상의 조합은, 많은 경우, 다음 규칙에 따라 번호가 매겨진 모드라고 불린다. 모드 번호는 2개의 비트로 정의되며, CPOL이 상위 비트, CPHA가 하위 비트로 사용된다.

모드CPOLCPHA
000
101
210
311



Microchip PIC / "ARM 기반" 마이크로컨트롤러의 경우에는 다음과 같다. (NCPHA는 CPHA의 반전이라는 것에 주의):

SPI 모드클럭 극성
(CPOL/CKP)
클럭 위상
(CPHA)
클럭 에지
(CKE/NCPHA)
0001
1010
2101
3110



PIC32MX의 경우: SPI 모드는 CKP, CKE와 SMP 비트로 구성된다.

그 외에 일반적으로 사용되는 표기법에는 모드를 (CPOL, CPHA)와 같은 짝으로 표기하는 방법이 있다. 이 경우, (0, 1)는 CPOL=0이며 CPHA=1을 나타낸다.

4. 동작 방식

마스터는 슬레이브 선택(SS) 신호를 통해 통신할 슬레이브를 선택한다. 마스터는 클럭 신호(SCLK)에 동기화된 신호를 MOSI 라인을 통해 전송하고, 활성화된 슬레이브는 SCLK에 맞춰 MOSI 신호를 수신한다. SPI 버스는 단일 마스터 장치와 하나 이상의 슬레이브 장치로 작동할 수 있다.[5]

기존의 데이터 버스, 어드레스 버스, 제어 신호에 의한 주변 장치 연결은 적어도 십수 개의 신호를 연결해야 했다. 메인 메모리 등 고속 액세스가 요구되는 장치를 제외하고, 속도를 필요로 하지 않는 장치는 IC 패키지를 소형화할 수 있다는 점 때문에 적은 핀으로 연결할 수 있는 형태가 요구되었다. 이러한 배경에서 SPI를 포함한 몇 가지 직렬 버스 규격(I2C, SPI, MicroWire 등)이 제창되었다.

SPI는 모토로라(현재는 NXP 반도체)가 제창한 규격으로, 적은 핀으로 연결할 수 있는 버스이다. 마스터와 슬레이브 사이는 4개의 신호선으로 연결된다. 하나의 마스터에 여러 슬레이브 장치를 연결할 때, SCK, MISO, MOSI의 3개 선은 공통으로 사용할 수 있다. SS만 슬레이브마다 독립적이지만, 마스터가 슬레이브를 구별할 필요가 없다면 예외이다. 슬레이브 장치가 하나뿐이거나 구별할 필요가 없는 경우에는 SS를 생략하고 3개 선으로 연결할 수 있으며, 이 경우 슬레이브 측 SS를 액티브(대개 LOW) 상태로 상시 연결한다.

슬레이브 장치가 단일이고 허용한다면 SS 핀을 논리 레벨 L로 고정해도 좋다. 하지만, 맥심 MAX1242 ADC와 같이 일부 슬레이브는 SS 신호의 하강 에지를 동작 시작에 필요로 하기 때문에 고정할 수 없는 경우가 있다. 복수의 슬레이브 장치를 사용하려면 마스터에서 각 슬레이브로의 독립적인 SS 신호선이 요구된다.

대부분의 슬레이브 장치는 트라이 스테이트 출력 상태를 가지며, 장치가 선택되지 않았을 때 MISO 신호는 고 임피던스(전기적으로 단절된 상태)가 된다. 트라이 스테이트 출력이 없는 장치는 외부 트라이 스테이트 버퍼를 사용하지 않는 한 다른 장치와 SPI를 공유할 수 없다.

4. 1. 데이터 전송

(마스터 출력, 슬레이브 입력)주 장치에서 나오는 직렬 데이터, 최상위 비트 우선MISO주 입력, 서브 출력
(마스터 입력, 슬레이브 출력)서브 장치에서 나오는 직렬 데이터, 최상위 비트 우선



주 장치의 MOSI는 서브 장치의 MOSI로 출력되고, 서브 장치의 MISO는 주 장치의 MISO로 출력된다. 각 장치는 직렬 통신을 위해 내부적으로 시프트 레지스터를 사용하며, 이는 칩 간 원형 버퍼를 형성한다.

서브 장치는 선택되지 않았을 때 MISO 신호가 하이 임피던스(전기적으로 분리됨) 상태가 되도록 트라이 스테이트 출력을 사용해야 한다. 트라이 스테이트 출력이 없는 서브는 외부 트라이 스테이트 버퍼 없이 다른 서브와 MISO 라인을 공유할 수 없다.

통신을 시작하기 위해 마스터는 칩 선택(CS) 신호를 로우(low)로 설정하여 하위 장치를 선택한다. 아날로그-디지털 변환과 같이 대기 시간이 필요한 경우, 마스터는 클럭 사이클을 시작하기 전에 최소한 해당 기간만큼 기다려야 한다.

각 SPI 클럭 사이클 동안 단일 비트의 전이중 전송이 발생한다. 마스터는 MOSI 라인에서 비트를 보내고, 서브는 MISO 라인에서 비트를 보내며, 각자는 수신 비트를 읽는다. 이 과정은 단방향 데이터 전송만 필요한 경우에도 유지된다.

단일 서브를 사용한 전송은 마스터와 서브의 시프트 레지스터 각 1개로 구성되며, 특정 워드 크기(예: 8비트)를 가진다. 가상 링 토폴로지로 연결된 데이터는 일반적으로 최상위 비트(MSB)부터 먼저 시프트 아웃된다. 클럭 에지에서 마스터와 서브는 모두 비트를 상대방에게 시프트 아웃하고, 다음 클럭 에지에서 각 수신기는 전송된 비트를 샘플링하여 새로운 최하위 비트로 시프트 레지스터에 저장한다. 모든 비트가 시프트 아웃 및 입력된 후, 마스터와 서브는 레지스터 값을 교환한다. 더 많은 데이터를 교환해야 하는 경우 시프트 레지스터를 다시 로드하고 과정을 반복한다. 전송은 클럭 사이클 수에 관계없이 계속될 수 있으며, 완료되면 마스터는 클럭 신호 토글을 중지하고 일반적으로 서브를 비활성화한다.

단일 서브 장치가 사용되는 경우, 서브가 허용하면 CS 핀을 논리 레벨의 로우로 고정할 수 있다. 여러 서브 장치가 있는 경우, 멀티드롭 구성은 각 서브 장치에 대해 마스터로부터 독립적인 CS 신호가 필요하며, 데이지 체인 구성은 단 하나의 CS 신호만 필요하다.

선택되지 않은 버스의 모든 서브는 입력 클럭 및 MOSI 신호를 무시해야 한다. 그리고 MISO에서 버스 경합을 방지하기 위해 선택되지 않은 서브는 3상태 논리 출력을 사용해야 한다. 이미 3상태가 아닌 서브는 이를 보장하기 위해 외부 3상태 버퍼가 필요하다.[5]

전형적인 하드웨어 구성. 두 개의 시프트 레지스터가 칩 간의 링 버퍼를 형성한다.


마스터는 슬레이브가 지원하는 주파수(일반적으로 수 MHz)의 클럭 신호를 생성한 후, 해당 슬레이브의 SS 라인의 논리 레벨을 0으로 하여 슬레이브를 선택한다. 슬레이브로부터 대기 시간이 요구되는 경우(예: 아날로그-디지털 변환), 마스터는 클럭 신호를 발신하기 전에 최소한 요구되는 시간만큼 기다려야 한다.

SPI의 각 클록 사이클 동안 전이중 데이터 전송이 이루어진다. 마스터는 MOSI 라인에서 1비트를 전송하고 슬레이브는 이를 읽는다. 동시에 슬레이브는 MISO 라인에서 1비트를 전송하고 마스터는 이를 읽는다. 이 과정은 일방향 데이터 전송을 목적으로 하더라도 유지된다.

일반적으로 전송에는 8비트 등 특정 워드 크기의 두 개의 시프트 레지스터가 사용된다(마스터, 슬레이브 각 하나). 이 레지스터들은 가상적인 링 형태로 연결되며, 데이터는 일반적으로 최상위 비트가 먼저 시프트 아웃된다. 클록 에지에서 마스터와 슬레이브는 모두 비트를 시프트 아웃하고 전송 라인상에서 서로에게 출력한다. 다음 클록 에지에서 각 리시버에서 전송 라인으로부터 비트가 샘플링되어 시프트 레지스터의 새로운 최하위 비트로 설정된다. 레지스터의 모든 비트가 시프트 인 및 시프트 아웃된 후에는 마스터와 슬레이브는 레지스터 값을 교환한 상태가 된다. 추가 데이터를 교환해야 할 경우 시프트 레지스터가 리로드되고 이 과정이 반복된다. 전송은 임의의 수의 클록 사이클에 걸쳐 지속될 수 있다. 완료되면 마스터는 클록 신호의 L과 H 전환을 중지하고 일반적으로 슬레이브 선택을 해제한다.

텍사스 인스트루먼트(Texas Instruments)의 TSC2101과 같은 터치스크린 컨트롤러 또는 오디오 코덱은 16비트 워드, 많은 디지털-아날로그 컨버터 또는 아날로그-디지털 컨버터 등은 12비트 워드 등 다른 워드 크기도 존재한다.

SS 라인을 사용하여 활성화되지 않은 버스상의 모든 슬레이브는 입력 클록과 MOSI 신호를 무시해야 하며 MISO를 구동해서는 안 된다(트라이스테이트 출력 필요). 그러나 일부 장치에서 구현하기 위해서는 외부 트라이스테이트 버퍼가 필요하다.

4. 2. 인터럽트

SPI는 인터럽트 사용을 명시적으로 금지하거나 규정하지 않으므로, 선택적으로 구현될 수 있다. 즉, SPI 자체의 표준 범위에는 인터럽트 방식이 포함되지 않는다.[5]

마이크로컨트롤러(주 장치)는 데이터 워드가 수신되거나 수신 FIFO 버퍼에서 오버플로가 발생할 때 자체 인터럽트 신호를 생성하는 하드웨어 지원을 가질 수 있다.[4] 또한, 칩 선택 입력 라인이 낮거나 높게 변경될 때 인터럽트 루틴을 설정할 수도 있다.

SPI 서브(종속 장치)는 때때로 대역 외 신호(별도의 와이어)를 사용하여 메인(주 장치)에 인터럽트 신호를 보낼 수 있다. 예를 들어 다음과 같은 경우가 있다.

메인으로의 인터럽트는 폴링을 사용하여 위조될 수도 있다 ( USB 1.1 및 2.0과 유사).

5. 버스 토폴로지

SPI는 일반적으로 4개의 논리 신호를 사용하며, 다른 이름을 사용하거나 다른 신호를 갖는 변형도 존재한다. 각 신호의 약어, 이름, 설명은 다음과 같다.[5]

약어이름설명
칩 선택주 장치에서 특정 서브 장치와의 통신을 활성화하기 위한 액티브 로우 칩 선택 신호
SCLK직렬 클럭주 장치에서 제공되는 클럭 신호
MOSI주 출력, 서브 입력
(마스터 출력, 슬레이브 입력)
주 장치에서 나오는 직렬 데이터, 최상위 비트 우선
MISO주 입력, 서브 출력
(마스터 입력, 슬레이브 출력)
서브 장치에서 나오는 직렬 데이터, 최상위 비트 우선



주 장치의 MOSI는 서브 장치의 MOSI로 출력되고, 서브 장치의 MISO는 주 장치의 MISO로 출력된다. 각 장치는 직렬 통신을 위해 내부적으로 시프트 레지스터를 사용하며, 이는 칩 간 원형 버퍼를 형성한다. 서브 장치는 장치가 선택되지 않은 경우 MISO 신호가 하이 임피던스(전기적으로 분리됨)가 되도록 트라이 스테이트 출력을 사용해야 한다. 트라이 스테이트 출력이 없는 서브는 외부 트라이 스테이트 버퍼를 사용하지 않고는 다른 서브와 MISO 라인을 공유할 수 없다.

통신을 시작하기 위해 SPI 마스터(주 장치)는 먼저 (칩 선택) 신호를 로우(low)로 당겨 하위 장치(서브)를 선택한다. 아날로그-디지털 변환과 같이 대기 기간이 필요한 경우, 마스터는 클럭 사이클을 시작하기 전에 최소한 해당 기간만큼 기다려야 한다.[5]

각 SPI 클럭 사이클 동안 단일 비트의 전이중 전송이 발생한다. 마스터는 MOSI 라인에서 비트를 보내고, 서브는 MISO 라인에서 비트를 보내며, 각자는 해당 수신 비트를 읽는다. 이 시퀀스는 단방향 데이터 전송만 의도된 경우에도 유지된다.

단일 서브를 사용한 전송은 마스터와 서브의 시프트 레지스터 각각 1개로 구성되며, 둘 다 특정 워드 크기(예: 8비트)를 가진다. 가상 링 토폴로지로 연결되며, 데이터는 일반적으로 최상위 비트(MSB)부터 먼저 시프트 아웃된다. 클럭 에지에서 마스터와 서브는 모두 비트를 상대방에게 시프트 아웃하고, 다음 클럭 에지에서 각 수신기는 전송된 비트를 샘플링하여 새로운 최하위 비트로 시프트 레지스터에 저장한다. 모든 비트가 시프트 아웃되고 입력된 후, 마스터와 서브는 레지스터 값을 교환한다. 더 많은 데이터를 교환해야 하는 경우 시프트 레지스터를 다시 로드하고 프로세스를 반복한다. 완료되면 마스터는 클럭 신호 토글을 중지하고 일반적으로 서브를 비활성화한다.

SPI 버스는 단일 마스터와 하나 이상의 슬레이브 장치로 작동할 수 있다. 슬레이브 장치가 단일이고, 슬레이브 장치가 허용한다면 핀을 논리 레벨의 로우로 고정해도 좋다. 하지만, 어떤 종류의 슬레이브는 신호의 하강 에지를 동작 시작에 필요로 하기 때문에 고정할 수 없는 경우가 있다.

5. 1. 멀티드롭 구성

멀티드롭 SPI 버스


멀티드롭 버스 구성에서 각 서브(슬레이브)는 자체 칩 선택() 신호를 가지며, 주 장치(마스터)는 한 번에 하나만 선택한다. MISO, SCLK 및 MOSI 신호는 각 장치에서 공유된다. 이것이 SPI가 일반적으로 사용되는 방식이다.

서브의 MISO 핀이 함께 연결되어 있으므로 트라이 스테이트 핀(높음, 낮음, 하이 임피던스)이 필요하며, 서브가 선택되지 않은 경우에는 하이 임피던스 출력이 적용되어야 한다. 트라이 스테이트를 지원하지 않는 서브 장치는 해당 신호로 제어되는 트라이 스테이트 버퍼 칩을 추가하여 멀티드롭 구성에서 사용할 수 있다.[5] 슬레이브당 단일 신호 라인만 트라이 스테이트가 필요하므로, 독립적인 게이트 입력을 가진 4개의 트라이 스테이트 버퍼가 포함된 하나의 일반적인 표준 로직 칩을 사용하여 최대 4개의 서브 장치를 SPI 버스에 인터페이스할 수 있다.

> 주의 사항: 모든 신호는 초기화 메시지를 서브로 보내기 전에 높음(어떤 칩도 선택되지 않음을 나타냄)으로 시작해야 하므로, 초기화되지 않은 다른 서브는 자신에게 주소가 지정되지 않은 메시지를 무시한다. 이는 마스터가 에 범용 입출력(GPIO) 핀(정의되지 않은 상태로 기본 설정될 수 있음)을 사용하고 마스터가 각 장치를 초기화하기 위해 별도의 소프트웨어 라이브러리를 사용하는 경우에 문제가 된다. 한 가지 해결책은 ''모든'' 서브의 초기화 코드를 실행하기 ''전에'' 에 사용되는 모든 GPIO를 높음 전압을 출력하도록 구성하는 것이다. 또 다른 해결책은 각 에 풀업 저항을 추가하여 모든 신호가 처음에 높게 유지되도록 하는 것이다.[5]

5. 2. 데이지 체인 구성

데이지 체인 SPI


SPI를 구현하는 일부 제품은 데이지 체인 구성으로 연결될 수 있다. 여기서 첫 번째 부품의 출력은 두 번째 부품의 입력에 연결되고, 이어서 후속 부품까지 연결되며, 최종 부품의 출력은 다시 메인 부품의 입력으로 연결된다. 이는 각 부품의 개별 통신 시프트 레지스터를 효과적으로 병합하여 체인을 통해 데이터를 이동시키는 단일의 더 큰 결합된 시프트 레지스터를 형성한다. 이 구성은 각 부품에 대한 개별 라인 대신 메인에서 단일 라인만 필요로 한다.[6]

SPI 전용 부품을 사용하는 것 외에도, 데이지 체인 SPI는 입력을 위한 이산 시프트 레지스터 (예: 병렬 입력 직렬 출력 74xx165)[7] 또는 출력을 위한 (예: 직렬 입력 병렬 출력 74xx595)[8]의 더 많은 핀을 무한정으로 연결할 수 있다. 데이지 체인 SPI와 잠재적으로 상호 운용될 수 있는 다른 응용 분야로는 SGPIO, JTAG,[9] 및 I2C가 있다.

5. 3. 확장 구성



멀티드롭 버스 구성에서 각 서브 장치는 자체 칩 선택() 신호를 가지며, 주 장치는 한 번에 하나만 선택한다. MISO, SCLK, MOSI 신호는 각 장치에서 공유된다. 이것이 SPI가 일반적으로 사용되는 방식이다.

서브 장치의 MISO 핀은 함께 연결되어 있으므로 트라이 스테이트 핀(높음, 낮음, 하이 임피던스)이 필요하며, 서브 장치가 선택되지 않은 경우에는 하이 임피던스 출력이 적용되어야 한다. 트라이 스테이트를 지원하지 않는 서브 장치는 해당 신호로 제어되는 트라이 스테이트 버퍼 칩을 추가하여 멀티드롭 구성에서 사용할 수 있다.[5] (서브 장치당 단일 신호 라인만 트라이 스테이트가 필요하므로, 독립적인 게이트 입력을 가진 4개의 트라이 스테이트 버퍼가 포함된 하나의 일반적인 표준 로직 칩을 사용하여 최대 4개의 서브 장치를 SPI 버스에 인터페이스할 수 있다.)

> 주의 사항: 모든 신호는 초기화 메시지를 서브 장치로 보내기 전에 높음(어떤 칩도 선택되지 않음을 나타냄)으로 시작해야 하므로, 초기화되지 않은 다른 서브 장치는 자신에게 주소가 지정되지 않은 메시지를 무시한다. 이는 주 장치가 에 범용 입출력(GPIO) 핀(정의되지 않은 상태로 기본 설정될 수 있음)을 사용하고, 주 장치가 각 장치를 초기화하기 위해 별도의 소프트웨어 라이브러리를 사용하는 경우에 문제가 된다. 한 가지 해결책은 ''모든'' 서브 장치의 초기화 코드를 실행하기 ''전에'' 에 사용되는 모든 GPIO를 높음 전압을 출력하도록 구성하는 것이다. 또 다른 해결책은 각 에 풀업 저항을 추가하여 모든 신호가 처음에 높게 유지되도록 하는 것이다.[5]

확장기 구성은 칩 선택을 추가하기 위해 SPI 제어 주소 지정 장치(예: 이진 디코더, 디멀티플렉서, 시프트 레지스터)를 사용한다.

예를 들어, 하나의 는 SPI 제어 디멀티플렉서로 전송하여 선택 신호를 제어하는 인덱스 번호를 제어하는 데 사용할 수 있으며, 다른 는 해당 인덱스에 따라 해당 디멀티플렉서를 통해 라우팅되어 원하는 서브 장치를 선택한다.[10]

6. 변형

SPI 구현에는 다양한 프로토콜 변형이 있다. 일부 장치는 송신 전용이고, 다른 장치는 수신 전용이다. 칩 선택 신호는 때때로 활성 로우가 아닌 활성 하이로 설정된다. 일부 장치는 최하위 비트(LSB)를 먼저 보내기도 한다. 신호 레벨은 관련 칩에 따라 완전히 달라진다. 기본 SPI 프로토콜에는 명령 코드가 없지만, 모든 장치는 자체 명령 코드 프로토콜을 정의할 수 있다. 일부 변형은 사소하거나 비공식적인 반면, 다른 변형은 공식적인 정의 문서를 가지며 별개의 관련 프로토콜로 간주될 수 있다.[5]

참조

[1] 웹사이트 Introduction to SPI Interface https://www.analog.c[...] 2018
[2] 웹사이트 What is Serial Synchronous Interface (SSI)? https://digital.ni.c[...] 2015-01-28
[3] 문서 SPI Block Guide v3.06; Motorola/Freescale/NXP; 2003. https://web.archive.[...]
[4] 웹사이트 TMS320x281x Serial Peripheral Interface Reference Guide https://www.ti.com/l[...] 2002
[5] 문서 Better SPI Bus Design in 3 Steps https://www.pjrc.com[...]
[6] 문서 Maxim-IC application note 3947: "Daisy-Chaining SPI Devices" https://www.maximint[...]
[7] 웹사이트 Gammon Forum : Electronics : Microprocessors : Using a 74HC165 input shift register https://www.gammon.c[...] 2013-03-23
[8] 웹사이트 Gammon Forum : Electronics : Microprocessors : Using a 74HC595 output shift register as a port-expander https://www.gammon.c[...] 2012-01-31
[9] 서적 Interfaces https://books.google[...]
[10] 웹사이트 Serial-Control Multiplexer Expands SPI Chip Selects http://www.farnell.c[...] 2001-07-01
[11] 웹사이트 AVR910 - In-system programming http://www.atmel.com[...]
[12] 서적 components :: motorola :: dataBooks :: 1983 Motorola 8-Bit Microprocessor and Peripheral Data http://archive.org/d[...]
[13] 서적 motorola :: dataBooks :: 1984 Motorola Single-Chip Microcomputer Data http://archive.org/d[...]
[14] 웹사이트 Using the Serial Peripheral Interface to Communicate Between Multiple Microcomputers http://www.bitsavers[...]
[15] 웹사이트 AN991/D: Using the Serial Peripheral Interface to Communicate Between Multiple Microcomputers https://www.nxp.com/[...] 2004
[16] 문서 SafeSPI.org http://SafeSPI.org
[17] 웹사이트 Transmitting SPI over LVDS Interfaces https://www.ti.com/l[...] 2021-02-14
[18] 웹사이트 SPI Master Loopback Example https://developer.no[...] 2021-02-14
[19] 웹사이트 Freescale Semiconductor, Inc. - QSM - Queued Serial Module - Reference Manual https://www.nxp.com/[...] 1996
[20] 웹사이트 Quad-SPI Brings Fast Parallel Data Transmission https://resources.pc[...] 2023-01-11
[21] 문서 MICROWIRE Serial Interface https://www.ti.com/l[...] National Semiconductor Application Note AN-452
[22] 문서 MICROWIRE/PLUS Serial Interface for COP800 Family https://www.ti.com/l[...] National Semiconductor Application Note AN-579
[23] 간행물 W25Q16JV 3V 16M-bit serial flash memory with Dual/Quad SPI https://www.winbond.[...] Winbond 2016-08-12
[24] 간행물 D25LQ64 1.8V Uniform Sector Dual and Quad SPI Flash https://www.sst-ic.c[...] GigaDevice 2011-02-11
[25] 웹사이트 QuadSPI flash: Quad SPI mode vs. QPI mode https://community.nx[...] 2014-12
[26] 간행물 SST26VF032B / SST26VF032BA 2.5V/3.0V 32 Mbit Serial Quad I/O (SQI) Flash Memory http://ww1.microchip[...] Microchip, Inc. 2017
[27] 웹사이트 Quad Serial Peripheral Interface (QuadSPI) Module Updates https://www.nxp.com/[...] Freescale Semiconductor 2012-05
[28] 뉴스 Improving performance using SPI-DDR NOR flash memory https://www.edn.com/[...] EDN (magazine) 2011-10-13
[29] 문서 IEEE 1149.1-2013
[30] 보고서 Enhanced Serial Peripheral Interface (eSPI) Interface Base Specification (for Client and Server Platforms) https://www-ssl.inte[...] Intel 2016-01
[31] 보고서 Enhanced Serial Peripheral Interface (eSPI) Interface Specification (for Client Platforms) https://downloadmirr[...] Intel 2012-05
[32] 웹사이트 Intel® 100 Series Chipset Family PCH Datasheet, Vol. 1 https://www.intel.co[...] 2015-04-15
[33] 웹사이트 USB to SPI converter https://ftdichip.com[...] 2020-08-02
[34] 문서 SPI Storm – Serial Protocol Host Adapter https://www.bytepara[...] Byte Paradigm
[35] 웹사이트 N5391B I²C and SPI Protocol Triggering and Decode for Infiniium scopes https://www.keysight[...]
[36] 웹사이트 SPI; OSHWA https://www.oshwa.or[...]
[37] PDF https://www.ti.com/l[...] 2024-08
[38] 웹사이트 Serial Peripheral Interface (SPI) Devices https://www.nxp.com/[...] 2023-07-22
[39] 웹사이트 Getting Started with Serial Peripheral Interface (SPI) https://onlinedocs.m[...] 2023-12-21



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com