직렬 주변기기 인터페이스

Serial Peripheral Interface
직렬 주변기기 인터페이스(SPI)
유형 직렬 통신 버스
생산이력
디자이너 모토로라
설계된 1980년대[note 1] 초반쯤
제조사 여러가지
데이지 체인 장치에 따라 다릅니다.
커넥터 미지정
일렉트릭
최대전압 미지정
최대전류 미지정
데이터.
1비트(양방향)
최대 장치 수 칩 선택에 의해 멀티드롭이 제한됩니다. 데이지 체인 무한대.
의정서 전이중 직렬의
핀아웃
모시 마스터 아웃 슬레이브 인
미소 마스터 인 슬레이브 아웃
SCLK 시리얼 클럭
CS 칩 선택(하나 이상)
(pins에 대체 이름이 있을 수 있음)

직렬 주변 인터페이스(SPI)는 동기 직렬 통신을 위한 사실상표준(여러 가지 변형이 있음)으로, 집적 회로 간의 근거리 유선 통신을 위한 임베디드 시스템에 주로 사용됩니다.

SPI는 여기서 "메인" 및 "서브"라는 용어와 함께 설명되는 마스터-슬레이브 아키텍처를 사용하며,[note 2] 여기서 하나의[note 3] 메인 장치는 클럭 신호 및 칩 선택 신호를 구동하여 일부 주변 장치(서브)와 통신을 조정합니다.

모토로라의 원래 사양(1980년대 초반)은 4개의 와이어를 사용하여 전이중 통신을 수행합니다. 반이중3선 변형과 2선 I²C1선 직렬 버스와 대조하기 위해 4선 직렬 버스라고 부르기도 합니다.

일반적인 응용 프로그램에는 마이크로컨트롤러Secure Digital 카드용 주변 칩과 인터페이스하는 것, 액정 디스플레이, 아날로그-디지털디지털-아날로그 변환기, 플래시EEPROM 메모리 및 다양한 통신 칩이 포함됩니다.

SPI는 동기 직렬 인터페이스로 정확하게 설명할 수 [2]있지만 동기 직렬 인터페이스(SSI) 프로토콜과는 다릅니다.[note 4]

작동

(참고: 변형 섹션에서는 비표준 변형의 작동에 대해 설명합니다.)

그림 1: 단일 메인 및 단일 서브를 사용한 기본 SPI 구성. 각 장치는 내부적으로 직렬 통신을 위해 시프트 레지스터를 사용하며, 이는 함께 칩 간 원형 버퍼를 형성합니다.

SPI에는 다음과 같은 4개의 논리 신호가 있습니다(대체 이름이 있을 수 있음).

짧다
이름.

이름.
묘사
(부모로 된 역사 용어)
CS
칩 선택
메인(마스터)에서 액티브-로우칩 선택 신호
특정 서브(slave) 장치와의 통신을 활성화합니다.
SCLK
시리얼 클럭
각 직렬 데이터 비트에 대한 메인(마스터)의 클럭 신호 전환.
모시
메인아웃, 서브인
(마스터 아웃, 슬레이브 인)
메인(마스터)의 직렬 데이터, 가장 높은 비트 먼저.
미소
기본 입력, 하위 출력
(마스터 인, 슬레이브 아웃)
서브(슬레이브)의 직렬 데이터, 가장 높은 비트가 먼저입니다.

메인 출력의 MOSI는 서브의 MOSI로 전송됩니다. 서브의 MISO는 메인의 MISO로 출력됩니다.

SPI는 메인 역할을 하는 단일 장치와 하나 이상의 서브 장치로 작동합니다.

하위 장치는 장치를 선택하지 않을 때 MISO 신호가 고임피던스(전기적으로 분리됨)가 되도록 3-상태 출력을 사용해야 합니다. 3-상태 출력이 없는 서브는 외부 3-상태 버퍼를 사용하지 않고는 MISO 와이어를 다른 서브와 공유할 수 없습니다.

데이터 전송

통신을 시작하기 위해 SPI 메인은 먼저 CS를 낮게 당겨서 서브 장치를 선택합니다. (참고: CS 위의 막대는 활성 로우 신호이므로 저전압은 "선택됨"을 의미하고 고전압은 "선택되지 않음"을 의미합니다.)

아날로그-디지털 변환과 같이 대기 기간이 필요한 경우, 메인은 클럭 사이클을 실행하기 전에 적어도 해당 기간 동안 대기해야 합니다.[note 5]

각 SPI 클럭 사이클 동안 단일 비트의 전이중 전송이 발생합니다. 메인은 MOSI 라인에 비트를 보내고 서브는 MISO 라인에 비트를 보낸 다음 각각 해당 수신 비트를 읽습니다. 이 시퀀스는 단방향 데이터 전송만 의도하는 경우에도 유지됩니다.

단일 서브(그림 1)를 사용한 전송은 메인에 하나의 시프트 레지스터를 포함하고 서브에 하나의 시프트 레지스터를 포함하며, 둘 다 주어진 일부 워드 크기(예: 8비트)[note 6]를 가상 링 토폴로지로 연결합니다. 일반적으로 가장 중요한 비트(MSB)를 먼저 사용하여 데이터를 이동합니다.[note 7] 시계 가장자리에서 메인 및 서브 모두 해당 부분으로 약간 이동합니다. 다음 클럭 에지에서 각 수신기는 전송된 비트를 샘플링하여 시프트 레지스터에 새로운 최하위 비트로 저장합니다. 모든 비트가 이동되고 입력된 후 메인과 서브가 레지스터 값을 교환했습니다. 더 많은 데이터를 교환해야 하는 경우 시프트 레지스터가 다시 로드되고 프로세스가 반복됩니다. 전송은 임의의 횟수의 클럭 사이클 동안 계속될 수 있습니다. 완료되면 메인은 클럭 신호의 토글을 중지하고 일반적으로 서브의 선택을 취소합니다.

단일 서브 장치를 사용하는 경우 서브 장치가 허용하는 경우 해당 CS 핀이 로직 로우로 고정될 있습니다. 여러 개의 서브 장치가 있는 경우, 멀티드롭 구성은 각 서브 장치에 대해 메인으로부터 독립적인 CS 신호가 필요한 반면, 데이지 체인 구성은 하나의 CS 신호만 필요합니다.

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

클럭 극성 및 위상

메인은 클럭 주파수를 설정할 뿐만 아니라 데이터에 대한 클럭 극성 및 위상도 설정해야 합니다. 모토로라는[4][5] 이 두 가지 옵션을 각각 CPOL과 CPHA(클럭 극성 및 클럭 위상)로 명명했으며, 대부분의 공급업체가 채택한 규칙입니다.

클럭 극성 및 위상 모두에 대한 SPI 타이밍 다이어그램입니다. 데이터 비트는 CPHA=0인 경우 파란색 선에서 출력되거나 CPHA=1인 경우 빨간색 선에서 출력되고 반대 색상의 선에서 샘플링됩니다. 숫자는 데이터 비트를 식별합니다. Z는 높은 임피던스를 나타냅니다.

여기에 표시된 SPI 타이밍 다이어그램은 아래에 자세히 설명되어 있습니다.

  • CPOL은 클럭의 극성을 나타냅니다. 간단한 인버터로 극성을 변환할 수 있습니다.
    • SCLK는CPOL=0 논리적 저전압에서 공회전하는 시계입니다.
    • SCLK는CPOL=1 논리 고전압에서 공회전하는 시계입니다.
  • CPHA는 SCLK에 대한 각 데이터 비트의 전송 주기의 위상을 나타냅니다.
    • CPHA=0의 경우:
      • CS가 활성화되면 첫 번째 데이터 비트가 바로 출력됩니다.
      • 이후 비트는 SCLK가 아이들 전압 레벨로 전환될 때 출력됩니다.
      • 샘플링은 SCLK가 유휴 전압 레벨에서 전환될 때 발생합니다.
    • CPHA=1의 경우:
      • 번째 데이터 비트는 CS가 활성화된 SCLK의 첫 번째 클럭 에지에서 출력됩니다.
      • 이후의 비트는 SCLK가 아이들 전압 레벨에서 천이할 때 출력됩니다.
      • 샘플링은 SCLK가 유휴 전압 레벨로 전환될 때 발생합니다.
    • 이 두 단계 간의 변환은 간단하지 않습니다.
    • 참고: MOSI 및 MISO 신호는 보통 다음 비트의 전송 주기가 시작될 때까지 절반 주기 동안 (수신 지점에서) 안정적이므로 SPI 메인 및 서브 장치는 원래 사양에도 불구하고 유연성을 위해 해당 절반 주기의 서로 다른 지점에서 데이터를 샘플링할 수 있습니다.

모드 번호

극성과 위상의 조합은 CPOL을 고차 비트로, CPHA를 저차 비트로 하는 이러한 "SPI 모드" 숫자에 의해 언급됩니다.

SPI 모드 클럭 극성
(CPOL)
시계상
(CPHA)
데이터가 이동됨 데이터를 샘플링한 날짜는 다음과 같습니다.
0 0 0 하강 SCLK, CS 활성화 시 상승하는 SCLK
1 0 1 상승하는 SCLK 떨어지는 SCLK
2 1 0 상승하는 SCLK 및 CS가 활성화되는 시점 떨어지는 SCLK
3 1 1 떨어지는 SCLK 상승하는 SCLK

주의:

  • 일반적으로 사용되는 다른 표기법은 (CPOL, CPHA) 튜플로 모드를 나타냅니다. 예를 들어, '(0, 1)' 값은 CPOL=0 및 CPHA=1을 나타냅니다.
  • 전이중(Full Duplex) 동작에서는 메인 장치가 서로 다른 모드로 송수신할 수 있습니다. 예를 들어, 모드 0에서 전송하고 모드 1에서 동시에 수신할 수 있습니다.
  • 공급업체마다 클럭 에지에 대한 CKE 또는 CPHA의 반전에 대한 NCPHA와 같은 다른 명명 체계를 사용할 수 있습니다.

유효한 통신

일부 하위 장치는 클럭 펄스 수가 지정된 수보다 많은 SPI 통신을 무시하도록 설계되었습니다. 다른 사람들은 상관하지 않고 추가 입력을 무시하고 동일한 출력 비트를 계속 이동합니다. 예를 들어, 하나의 크기(아마도 32비트)의 명령어를 발행한 다음 다른 크기(아마도 153비트, 해당 스캔 체인의 각 핀에 대해 하나)의 응답을 얻음으로써 IC의 스캔 체인에 액세스하기 위해 SPI가 사용되는 경우, 서로 다른 길이의 SPI 통신을 사용하는 것이 일반적입니다.

인터럽트

인터럽트는 SPI의 범위를 벗어납니다. 인터럽트의 사용은 금지되지도 지정되지도 않기 때문에 선택적으로 구현될 수도 있습니다.

메인에서 서브로

서브 디바이스로 구성된 마이크로컨트롤러는 수신 FIFO 버퍼에서 데이터 워드가 수신되거나 오버플로우가 발생할 때 자신에게 인터럽트 신호를 생성하기 위한 하드웨어 지원을 가질 수 있으며,[6] 또한 자신의 칩 선택 입력 라인이 로우 또는 하이로 풀링될 때 인터럽트 루틴을 설정할 수 있습니다.

서브에서 메인으로

SPI 서브는 때때로 대역외 신호(다른 와이어)를 사용하여 메인으로 인터럽트 신호를 보냅니다. 터치스크린 센서의 펜다운 인터럽트, 온도 센서의 열 제한 경보, 실시간 시계 칩에 의해 발행되는 경보, SDIO[note 8]오디오 코덱에 대한 오디오 잭 삽입 등이 그 예입니다. 메인에 대한 인터럽트는 폴링(USB 1.12.0과 유사)을 사용하여 위조할 수도 있습니다.

소프트웨어 디자인

SPI는 "버스 드라이버" 소프트웨어 설계에 적합합니다. 연결된 장치용 소프트웨어는 실제 낮은 수준의 SPI 하드웨어를 처리하는 "버스 드라이버"를 호출하기 위해 작성됩니다. 이를 통해 연결된 장치의 드라이버 코드가 다른 하드웨어 또는 비트뱅잉 소프트웨어 구현으로 쉽게 이식될 수 있습니다.

프로토콜 비트뱅잉

아래 의사 코드는 출력과 입력이 동시에 있는 메인으로서 SPI 프로토콜의 소프트웨어 구현("비트 뱅잉")을 개략적으로 설명합니다. 이 의사 코드는 CPHA=0 및 CPOL=0용이므로 CS가 활성화되기 전에 SCLK가 낮게 당겨지고 SCLK의 상승 에지에 비트가 입력되는 반면 SCLK의 하강 에지에 비트가 출력됩니다.

  • SCLK는 낮음, CS는 높음으로 초기화
  • CS 로우를 당겨서 서브를 선택합니다.
  • 전송할 바이트 수에 대한 루프:[note 9]
    • 초기화byte_out전송할 다음 출력 바이트와 함께.
    • 루프 8회:
      • 다음 출력 비트를 왼쪽으로[note 10] 이동합니다.byte_outMOSI에게
      • 서브 셋업 시간에 대한 NOP
      • SCLK 높이 당김
      • MISO에서 다음 입력 비트를 왼쪽으로 이동합니다.byte_in
      • 서브 홀드 시간에 대한 NOP
      • SCLK 로우당기기
    • byte_in이제 최근에 받은 바이트를 포함하며 원하는 대로 사용할 수 있습니다.
  • CS 높이를 당겨서 서브 선택을 취소합니다.

서브의 프로토콜은 비슷하지만 위와 다릅니다. 구현에는 CS가 떨어질 때까지 기다리거나 CS가 떨어질 때 인터럽트 루틴을 트리거하는 데 바쁜 작업이 포함될 수 있으며, 전송 크기가 아무리 길어도 수신된 SCLK가 적절하게 변경되면 비트를 안팎으로 이동하는 작업이 포함될 수 있습니다.

버스 토폴로지

이전 작업 섹션에서는 단일 서브가 있는 기본 인터페이스에 중점을 두었지만 SPI는 대신 멀티드롭, 데이지 체인 또는 익스팬더 구성을 사용하여 여러 서브와 통신할 수 있습니다.

멀티드롭 구성

멀티드롭 SPI 버스

멀티드롭 버스 구성에서 각 서브는 자체 CS를 가지며 메인은 한 번에 하나만 선택합니다. MISO, SCLK 및 MOSI는 각각 모든 장치에서 공유됩니다. 이것이 SPI가 일반적으로 사용되는 방식입니다.

서브의 MISO 핀은 서로 연결되어 있기 때문에, 서브를 선택하지 않았을 때는 고임피던스 출력을 적용해야 하는 3-상태 핀(고임피던스, 저임피던스 또는 고임피던스)이어야 합니다. 자신의 CS 신호에 의해 제어되는 3-상태 버퍼 칩을 추가하여 3-상태를 지원하지 않는 서브 장치를 멀티드롭 구성으로 사용할 수 있습니다.[3] (서브마다 단일 신호 라인만 tristation하면 되기 때문에, 독립적인 게이트 입력을 갖는 4개의 트리스테이트 버퍼를 포함하는 하나의 전형적인 표준 로직 칩은 최대 4개의 서브 디바이스를 SPI 버스에 인터페이스하는 데 사용될 수 있습니다.)

주의사항: 모든 CS 신호는 초기화 메시지를 서브로 보내기 전에 하이로 시작해야 합니다(칩이 선택되지 않았음을 나타냅니다). 따라서 초기화되지 않은 다른 서브는 메시지를 무시합니다. 이것은 메인이 CS범용 입출력(GPIO) 을 사용하는 경우(정의되지 않은 상태로 기본 설정될 수 있음)와 메인이 각 장치를 초기화하기 위해 별도의 소프트웨어 라이브러리를 사용하는 경우에 대한 우려입니다. 한 가지 해결책은 CS에 사용되는 모든 GPIO가 소프트웨어 라이브러리에서 초기화 코드를 실행하기 전에 모든 서브에 대해 고전압을 출력하도록 구성하는 것입니다. 또 다른 해결책은 각 CS풀업 저항을 추가하여 모든 CS 신호가 초기에 높음을 확인하는 것입니다.[3]

데이지 체인 구성

데이지 체인 SPI

SPI를 구현하는 일부 제품은 데이지 체인(daisy chain) 구성으로 연결될 수 있으며, 여기서 첫 번째 서브의 출력은 두 번째 서브의 입력에 연결되고, 그 출력은 메인의 입력에 다시 연결되는 최종 서브까지 후속 서브와 연결됩니다. 이는 각 서브의 개별 통신 시프트 레지스터를 효과적으로 병합하여 체인을 통해 데이터를 시프트하는 하나의 더 큰 결합 시프트 레지스터를 형성합니다. 이 구성은 각 서브에 대해 별도의 CS 라인이 아닌 메인에서 단일 CS 라인만 필요합니다.[7]

데이지 체인 SPI는 SPI 고유 서브를 사용하는 것 외에도 입력의 더 많은 핀(예: 병렬-인 직렬-아웃 74xx165 사용)[8] 또는 출력([9]예: 직렬-인 병렬-아웃 74x595 사용)을 위한 이산 시프트 레지스터를 무한정 포함할 수 있습니다. 데이지 체인 SPI와 잠재적으로 상호 작용할 수 있는 다른 응용 프로그램에는 SGPIO, JTAG [10]IC2 포함됩니다.

익스팬더 구성

익스팬더 구성은 SPI 제어 어드레싱 유닛(예: 바이너리 디코더, 디멀티플렉서 또는 시프트 레지스터)을 사용하여 칩 선택을 추가합니다.

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

장단점

이점

  • 이 프로토콜의 기본 버전에서 전이중 통신
  • 푸시-풀 드라이버(개방형 드레인과는 반대로)는 비교적 양호한 신호 무결성 및 고속을 제공합니다.
  • I²C 또는 SMBus보다 높은 처리량
    • SPI의 프로토콜에는 최대 클럭 속도가 없습니다.
      • 개별 장치에서 허용 가능한 클럭 주파수를 지정합니다.
      • 배선 및 전자 장치 제한 주파수
  • 전송되는 비트에 대한 완전한 프로토콜 유연성
    • 8비트 기호로 제한되지 않음
    • 메시지 크기, 내용 및 목적을 임의로 선택
  • 간단한 하드웨어 및 인터페이스
    • 서브용 하드웨어 구현에는 선택 가능한 시프트 레지스터만 필요합니다.
      • 서브는 메인의 클럭을 사용하므로 정밀 발진기가 필요하지 않습니다.
      • Subs는 I²C 또는 GPIB 또는 SCSI와 달리 고유한 주소가 필요하지 않습니다.
      • 메인은 클록 및 CS 신호의 생성만 추가로 필요합니다.
      • 단순한 비트 뱅크 소프트웨어 구현 결과
    • IC 패키지에는 4개의 핀만 사용하고 보드 레이아웃이나 커넥터에는 병렬 인터페이스보다 훨씬 적은 와이어를 사용합니다.
      • 장치당 최대 하나의 고유 신호(CS); 나머지는 모두 공유됨
        • 참고: 데이지 체인 구성은 둘 이상의 공유 CS가 필요하지 않습니다.
    • 회로(풀업 저항 포함)가 적기 때문에 일반적으로 I²C 또는 SMBus보다 낮은 전력 요구 사항
    • 단일 메인은 CAN 버스와 달리 버스 중재(및 관련 고장 모드)가 없음을 의미합니다.
    • CAN 버스와 달리 트랜시버가 필요하지 않음
    • 신호가 단방향이므로 갈바닉 분리가 용이합니다.

단점들

  • 3선 변형에서도 I²C보다 IC 패키지에 더 많은 핀이 필요합니다.
  • RS-232, RS-485 또는 CAN-bus와 비교하여 짧은 거리만 처리합니다(RS-422와 같은 트랜시버를 사용하여 거리를 확장할 수 있음).
  • 다양한 SPI 모드를 사용하는 여러 서브가 필요한 경우 확장성이 심각하게 저하됨
    • 메인이 자주 다른 모드로 재초기화해야 할 경우 액세스 속도가 느려집니다.
  • 정식기준 없음
    • 따라서 적합성을 확인할 수 없습니다.
    • 기존의 많은 변형이 지원을 복잡하게 만듭니다.
  • 일부 편의를 위한 내장 프로토콜 지원 없음:
    • 서브에 의한 하드웨어 흐름 제어 없음(단, 메인은 다음 클럭 에지를 지연시켜 전송 속도를 늦출 수 있음)
    • 하드웨어 제출 승인 없음(메인이 아무데도 전송되지 않고 알 수 없음)
    • 오류 검사 프로토콜 없음
    • 핫 스왑 없음(노드 동적 추가)
    • 인터럽트는 SPI의 범위를 벗어납니다(§ 인터럽트 참조).

적용들

Atmel에 의한 SPI 메모리
마이크로칩 32Mbit SQI 플래시 메모리

SPI는 다음과 같은 다양한 주변 장치와 대화하는 데 사용됩니다.

병렬 버스와 비교하여 보드 부동산 및 배선 비용 절감은 상당하며, SPI는 임베디드 시스템에서 확고한 역할을 하게 되었습니다. 이는 ARM, MIPS 또는 PowerPC와 같은 고급 32비트 프로세서와 AVR, PICMSP430과 같은 고급 마이크로컨트롤러를 모두 사용하는 대부분의 시스템 온 어 칩 프로세서에 적용됩니다. 이 칩에는 일반적으로 메인 모드 또는 서브 모드로 실행할 수 있는 SPI 컨트롤러가 포함되어 있습니다. SPI를 사용하여 시스템프로그래밍 가능한 AVR 컨트롤러(블랭크 포함)를 프로그래밍할 수 있습니다.[12]

칩 또는 FPGA 기반 설계는 때때로 SPI를 사용하여 내부 구성 요소 간에 통신합니다. 온칩 부동산은 온보드 사촌만큼 비용이 많이 들 수 있습니다. 그리고 고성능 시스템의 경우, FPGA는 SPI를 사용하여 호스트에 대한 서브 인터페이스, 센서에 대한 메인 인터페이스 또는 SRAM 기반인 경우 부트스트랩에 사용되는 플래시 메모리를 사용하기도 합니다.

전이중 기능을 통해 SPI는 단일 메인/단일 서브 애플리케이션에 매우 간단하고 효율적입니다. 일부 장치는 디지털 오디오, 디지털 신호 처리 또는 통신 채널과 같은 응용 프로그램을 위해 효율적이고 신속한 데이터 스트림을 구현하기 위해 전이중 모드를 사용하지만 대부분의 기성 칩은 반이중 요청/응답 프로토콜을 고수합니다.

변주

SPI는 사실상표준입니다. 그러나 공식적인 표준이 없다는 것은 매우 다양한 프로토콜 옵션에 반영되어 있습니다. 일부 장치는 전송 전용이고 다른 장치는 수신 전용입니다. 칩 셀렉트는 활성-낮은 것이 아니라 활성-높음-높음일 때도 있습니다. 일부 장치는 가장 중요하지 않은 비트를 먼저 보냅니다. 신호 수준은 관련 칩에 전적으로 의존합니다. 그리고 기본 SPI 프로토콜에는 명령 코드가 없지만 모든 장치는 고유한 명령 코드 프로토콜을 정의할 수 있습니다. 일부 변형은 경미하거나 비공식적인 반면, 다른 변형은 공식적인 정의 문서가 있고 별개이지만 관련된 프로토콜로 간주될 수 있습니다.

원 정의

모토로라는 1983년에 "시리얼 주변 장치 인터페이스"가 통합된 3개의 8비트 마이크로컴퓨터를 나열했으며[13], 그 기능은 1984년 매뉴얼에 설명되어 있습니다.[14]

AN991

모토로라의 1987년 응용 노드 AN991 "시리얼 주변 인터페이스를 사용하여 여러 마이크로컴퓨터 간에 통신"([15]현재 NXP, 2002년[5] 마지막 개정판)은 SPI의 "공식" 정의 문서 역할을 합니다.

타이밍 변동

일부 장치는 모토로라의 CPOL/CPHA 모드와 타이밍 차이가 있습니다. 서브에서 메인으로 데이터를 전송하면 반대 클럭 에지를 메인에서 서브로 사용할 수 있습니다. 장치는 종종 첫 번째 클럭 이전 또는 마지막 클럭 이후 또는 명령과 응답 사이에 추가 클럭 유휴 시간을 요구합니다.

일부 장치에는 두 개의 시계가 있는데, 하나는 데이터를 읽고 다른 하나는 장치로 전송합니다. 많은 읽기 클록이 칩 선택 라인에서 실행됩니다.

송전크기

다른 전송 단어 크기가 일반적입니다. 많은 SPI 칩은 8비트의 배수인 메시지만 지원합니다. 이러한 칩은 JTAG 또는 SGPIO 프로토콜 또는 8비트의 배수가 아닌 메시지가 필요한 다른 프로토콜과 상호 운용할 수 없습니다.

칩 선택 없음

일부 장치는 칩 셀렉트를 사용하지 않고 대신 다른 방법으로 프로토콜 상태 시스템 입/출입을 관리합니다.

커넥터

SPI용 외부 커넥터가 필요한 사람은 자신의 것을 정의하거나 UEXT, Pmod, 다양한 JTAG 커넥터, Secure Digital Card 소켓 등과 같은 다른 표준 연결을 사용합니다.

유량제어

일부 장치에서는 데이터가 준비된 시점을 나타내는 서브에서 메인으로 흐름 제어 신호가 추가로 필요합니다. 이로 인해 일반적인 4가 아닌 5와이어 프로토콜로 이어집니다. 이러한 준비 신호 또는 활성화 신호는 종종 활성-낮으며 명령어 뒤 또는 단어 사이와 같은 핵심 지점에서 활성화되어야 합니다. 이러한 신호가 없으면 데이터 전송 속도가 크게 느려지거나 프로토콜에 더미 바이트가 삽입되어 하위 응답 시간에 대한 최악의 경우를 수용해야 할 수도 있습니다. 예를 들어 ADC 변환 시작, 플래시 메모리의 오른쪽 페이지 주소 지정, 디바이스 펌웨어가 응답의 첫 번째 단어를 로드할 수 있는 충분한 명령 처리 등이 있습니다. (많은 SPI 메인은 해당 신호를 직접 지원하지 않고 대신 고정 지연에 의존합니다.)

세이프SPI

SafeSPI는[16] 자동차 애플리케이션의 SPI에 대한 업계 표준입니다. 주요 초점은 서로 다른 장치 간에 센서 데이터를 전송하는 것입니다.

높은 신뢰성 수정

전기적으로 잡음이 많은 환경에서는 SPI가 신호가 거의 없기 때문에 저전압 차동 신호를 사용하도록 SPI를 조정하여 공통 모드 잡음의 영향을 줄이는 것이 경제적일 수 있습니다.[17] 또 다른 장점은 제어된 장치가 신호 무결성을 테스트하기 위해 루프백하도록 설계될 수 있다는 것입니다.[18]

지능형 SPI 컨트롤러

QSPI(Queued Serial Peripheral Interface)는 데이터 큐를 사용하여 [19]SPI 버스를 통해 데이터를 전송하는 SPI 컨트롤러의 한 종류입니다. CPU의 간헐적인 주의만으로 큐와 큐 사이를 지속적으로 전송할 수 있는 랩어라운드 모드가 있습니다. 결과적으로 주변 장치는 메모리 매핑된 병렬 장치로 CPU에 나타납니다. 기능은 A/D 컨버터 제어와 같은 응용 분야에서 유용합니다. Queued SPI의 다른 프로그래밍 가능 기능은 칩 선택 및 전송 길이/지연입니다.

서로 다른 벤더의 SPI 컨트롤러는 서로 다른 기능 세트를 지원합니다. 이러한 DMA(Direct Memory Access) 큐는 MCBSP(Multichannel Buffered Serial Port)에서 사용되는 것과 같이 SPI 컨트롤러 자체가 아닌 별도의 DMA 엔진과 연관되어 있을 수 있지만 드물지 않습니다.[note 11] 대부분의 SPI 메인 컨트롤러는 최대 4개의 칩 셀렉트에 대한 지원을 통합하지만 [note 12]일부는 GPIO 라인을 통해 별도로 칩 셀렉트를 관리해야 합니다.

큐잉된 SPI쿼드 SPI와 다르며, 일부 프로세서는 심지어 하나의 "QSPI" 인터페이스를 쿼드 또는 큐잉된 모드로 작동하도록 혼란스럽게 허용합니다![20]

마이크로와이어

마이크로와이어([21]μWire)는 본질적으로 SPI의 전신이며 National Semiconductor의 상표입니다. SPI의 엄격한 하위 집합입니다. 반이중이고 SPI 모드 0을 사용합니다. 마이크로와이어 칩은 최신 SPI 버전보다 느린 클럭 속도를 필요로 하는 경향이 있습니다. 20MHz에 비해 2MHz일 수 있습니다. 일부 마이크로와이어 칩은 3선 모드도 지원합니다.

전자레인지/플러스

Microwire/Plus는[22] Microwire의 향상된 기능으로, 전이중 통신 기능과 SPI 모드 0 및 1을 지원합니다. 직렬 클럭 속도에 대한 지정된 개선 사항이 없습니다.

삼선

반이중 모드로 제한된 SPI의 3선 변형은 SPI의 두 개의 단방향 라인(MOSI 및 MISO) 대신 SISO(sub out/subin) 또는 MOMI(main out/main in)라는 단일 양방향 데이터 라인을 사용합니다. 3선은 시스템 시동 중에만 사용되는 소형 EEPROM, 특정 센서, 마이크로와이어 등 성능이 낮은 부품에 사용되는 경향이 있습니다. 이 모드를 지원하는 SPI 컨트롤러는 거의 없지만 소프트웨어로 쉽게 비트뱅할 수 있습니다.

듀얼 SPI

SPI의 전이중(full-duplex) 특성이 사용되지 않는 경우 확장은 반이중 구성의 두 데이터 핀을 모두 사용하여 클럭 사이클당 2비트를 전송합니다. 일반적으로 명령 바이트는 듀얼 모드에서 응답을 요청하도록 전송되며, 그 후 MOSI 라인은 SIO0(serial I/O 0)이 되고 짝수 비트를 전송하며, MISO 라인은 SIO1이 되고 홀수 비트를 전송합니다. 데이터는 여전히 가장 중요한 비트를 먼저 전송하지만 SIO1은 각 바이트의 비트 7, 5, 3 및 1을 전송하고 SIO0는 비트 6, 4, 2 및 0을 전송합니다.

이것은 많은 양의 데이터를 전송해야 하는 SPI ROM 사이에서 특히 인기가 있으며 다음 두 가지 변형이 있습니다.[23][24]

  • 듀얼 리드는 싱글 모드로 메인에서 송신 및 주소를 명령하고 듀얼 모드로 데이터를 반환합니다.
  • 듀얼 I/O 명령어는 단일 모드로 명령어를 전송한 다음 듀얼 모드로 주소 및 반환 데이터를 전송합니다.

쿼드 SPI

Quad SPI(QSPI; § Intelligent SPI 컨트롤러에서 설명하는 Queued-SPI와 다르지만 동일한 약어)는 듀얼 SPI를 넘어 두 개의 I/O 라인(SIO2 및 SIO3)을 추가하고 클럭 사이클당 4개의 데이터 비트를 전송합니다. 이 역시 특수 명령에 의해 요청되며, 이는 명령 자체가 단일 모드로 전송된 후 쿼드 모드를 활성화합니다.[23][24]

SQI 타입 1
단일 회선으로 전송되지만 4개의 회선으로 전송되는 주소 및 데이터
SQI 타입 2
단일 회선으로 전송되지만 4개의 회선으로 송수신되는 데이터에 대한 명령 및 주소

QPI/SQI

쿼드 SPI를 더욱 확장한 일부 장치는 명령어를 포함하여 4개의 데이터 라인을 통해 모든 통신이 이루어지는 "쿼드 에브리싱" 모드를 지원합니다.[25] 이를 다양하게 "QPI"([24]Intel QuickPath Interconnect와 혼동하지 않음) 또는 "시리얼 쿼드 I/O"(SQI)[26]라고 합니다.

이를 위해서는 장치에 구성 비트를 프로그래밍해야 하며 통신을 설정하려면 재설정 후 주의가 필요합니다.

두 배의 데이터 전송률

I/O를 위해 여러 회선을 사용하는 것 외에도 일부 장치는 이중 데이터 전송을 사용하여 전송률을 높입니다.[27][28]

JTAG

SPI와 JTAG(IEEE 1149.1-2013) 프로토콜 사이에는 몇 가지 유사점이 있지만 상호 교환할 수는 없습니다. JTAG는 특히 신호 지연 및 스큐 매개변수가 적은 오프보드 컨트롤러에서 I/O 핀에 대한 안정적인 테스트 액세스를 제공하기 위한 것이지만 SPI는 다양한 응용 프로그램을 가지고 있습니다. JTAG 프로토콜은 엄격하게 레벨에 민감한 인터페이스는 아니지만 클럭 속도를 줄이거나 클럭의 듀티 사이클을 변경하여 JTAG 장치 간의 설정 및 홀드 위반을 모두 복구할 수 있도록 지원합니다. 따라서 JTAG 인터페이스는 매우 높은 데이터 전송률을 지원하지 않습니다.[29]

SGPIO

SGPIO는 기본적으로 특정 백플레인 관리 활동을 위해 설계된 SPI를 위한 또 다른 (호환 불가능한) 애플리케이션 스택입니다.[citation needed] SGPIO는 3비트 메시지를 사용합니다.

인텔의 향상된 직렬 주변 장치 인터페이스

IntelESPI(Enhanced Serial Peripheral Interface) 버스라고 부르는 LPC(Low Pin Count) 버스의 후속 제품을 개발했습니다. 인텔은 LPC에 비해 마더보드에 필요한 핀 수를 줄이고 처리량을 늘리고, 동작 전압을 1.8V로 줄여 더 작은 칩 제조 프로세스를 용이하게 하며, eSPI 주변 장치가 호스트와 SPI 플래시 장치를 공유할 수 있도록 하는 것을 목표로 합니다(LPC 버스는 펌웨어 허브를 LPC 주변 장치에서 사용할 수 없도록 허용하지 않음). 이전의 대역외 핀을 eSPI를 통해 터널링하고, 시스템 설계자가 비용과 성능을 절충할 수 있도록 합니다.[30][31]

특히 eSPI 장치가 SPI 플래시 장치를 사용해야 하는 경우, eSPI 버스를 SPI 장치와 공유하여 핀을 절약하거나 SPI 버스와 분리하여 더 많은 성능을 구현할 수 있습니다.[30]

이 표준은 eSPI 서브가 메인에 서비스를 요청하는 데 사용하는 Alert# 신호를 정의합니다. 성능 지향 설계 또는 하나의 eSPI 서브만 있는 설계에서 각 eSPI 서브는 각 서브 전용인 eSPI 메인의 Alert# 핀에 Alert# 핀이 연결되어 eSPI 메인이 낮은 지연 시간 서비스를 제공할 수 있습니다. 왜냐하면 eSPI 메인은 어떤 eSPI 서브에 서비스가 필요한지 알 것이고, 어떤 디바이스에 서비스가 필요한지를 결정하기 위해 모든 서브를 폴링할 필요가 없기 때문입니다. 둘 이상의 eSPI 서브가 있는 예산 설계에서 서브의 모든 Alert# 핀은 유선-OR 연결로 eSPI 메인의 하나의 Alert# 핀에 연결됩니다. 이 경우 서비스가 필요한 하나 이상의 주변 장치에 의해 Alert# 신호가 낮게 당겨질 때 메인이 모든 서브를 폴링하여 서비스가 필요한 서브를 결정해야 합니다. 모든 장치가 서비스된 후에만 eSPI 서브 서비스가 필요하지 않으므로 Alert# 신호가 높게 당겨지고 따라서 Alert# 신호가 낮게 당겨집니다.[30]

이 표준을 사용하면 설계자가 20~66MHz의 속도로 1비트, 2비트 또는 4비트 통신을 사용하여 성능과 비용을 더욱 절감할 수 있습니다.[30]

범용 입출력(GPIO) 및 SMBus(System Management Bus)와 같이 LPC의 대역외에 있던 모든 통신은 각각 가상 와이어 사이클 및 대역외 메시지 사이클을 통해 eSPI를 통해 터널링되어 eSPI를 사용하는 마더보드 설계에서 이러한 핀을 제거합니다.[30]

이 표준은 1바이트에서 4킬로바이트의 데이터 길이를 갖는 표준 메모리 사이클, 표준 메모리 사이클에 비해 오버헤드가 훨씬 적은 1바이트, 2바이트 또는 4바이트의 짧은 메모리 사이클, 오버헤드가 적은 1바이트, 2바이트 또는 4바이트의 데이터 길이를 갖는 I/O 사이클을 지원합니다. 128바이트 펌웨어 허브 읽기 사이클을 제외한 모든 사이클이 버스 전체 처리량의 1/2 이상을 오버헤드로 소비하는 LPC 버스에 비해 오버헤드가 크게 줄어듭니다. 표준 메모리 사이클은 1바이트에서 4킬로바이트까지의 길이를 허용하여 더 큰 오버헤드를 대규모 트랜잭션에서 상각할 수 있습니다. eSPI 서브는 모든 메모리 사이클의 버스 마스터 버전을 시작할 수 있습니다. LPC 버스 사양에 의해 도입된 버스 마스터 I/O 사이클과 LPC 버스 사양에 의해 도입된 32비트 변종을 포함한 ISA 스타일 DMA는 eSPI에 존재하지 않습니다. 따라서 버스 마스터 메모리 사이클은 이 표준에서 유일하게 허용되는 DMA입니다.[30]

eSPI 서브는 요청하는 eSPI 서브를 대신하여 표준 SPI 플래시 메모리 서브에서 플래시 작업을 수행하기 위해 eSPI 메인을 프록시로 사용할 수 있습니다.[30]

64비트 메모리 주소 지정도 추가되지만 동등한 32비트 주소가 없는 경우에만 허용됩니다.[30]

Intel Z170 칩셋은 이 버스 또는 ISA 스타일 DMA 기능이 없고 표준 33MHz 대신 24MHz로 언더클럭되는 LPC 버스의 변형을 구현하도록 구성할 수 있습니다.[32]

개발도구

싱글보드 컴퓨터

싱글 보드 컴퓨터는 SPI 하드웨어 장치에 대한 핀 액세스를 제공할 수 있습니다. 예를 들어, Raspberry Pi의 J8 헤더리눅스 드라이버 또는 파이썬을 통해 사용할 수 있는 SPI 유닛을 2개 이상 노출합니다.

USB-SPI 어댑터

USB가 있는 데스크톱 PC 또는 스마트폰이 SPI 칩(예: FT221x[33])과 통신할 수 있도록 하는 USB 어댑터가 많이 있습니다. 임베디드 시스템, 칩(FPGA, ASIC, SoC) 및 주변 테스트, 프로그래밍 및 디버깅에 사용됩니다. 이들 중 상당수는 스크립팅 또는 프로그래밍 기능(: Visual Basic, C/C++, VHDL)도 제공합니다.

주요 SPI 매개 변수는 직렬 인터페이스에 대해 지원되는 최대 주파수, 명령 간 지연 시간 및 SPI 명령에 대한 최대 길이입니다. 현재 시장에서 최대 100MHz 직렬 인터페이스를 지원하는 SPI 어댑터를 찾을 수 있으며, 액세스 길이는 사실상 무제한입니다.

SPI 프로토콜은 사실상 표준이므로 일부 SPI 호스트 어댑터는 기존의 4-와이어 SPI 이상의 다른 프로토콜(예: SPI에서[34] 파생된 쿼드-SPI 프로토콜 또는 기타 사용자 지정 직렬 프로토콜 지원)도 지원합니다.

프로토콜 분석기

로직 분석기디버그 및 개발을 돕기 위해 고속 파형을 수집, 타임스탬프, 분석, 디코딩, 저장 및 보기하는 도구입니다. 대부분의 논리 분석기는 SPI 버스 신호를 사람이 읽을 수 있는 레이블이 있는 고급 프로토콜 데이터로 디코딩하는 기능을 가지고 있습니다.

오실로스코프

SPI 파형아날로그 채널에서(또는 혼합 신호 오실로스코프디지털 채널을 통해) 볼 수 있습니다.[35] 대부분의 오실로스코프 공급업체는 트리거링과 함께 SPI 프로토콜 분석(2-, 3- 및 4-와이어 SPI 모두)을 옵션으로 지원합니다.

대체 용어

"마스터"라는 용어는 일반적으로 주 장치를 식별하는 데 사용되고 주변 장치(서브)의 경우 "슬레이브"입니다. 이러한 용어는 주 장치가 시리얼 클럭을 구동하고 통신을 시작하는 역할을 하는 방식을 반영합니다. 주변 장치는 주 장치가 클럭을 구동할 때만 통신할 수 있습니다.

4개의 신호 각각에 대한 다양한 현대적인 대체 이름이 제안되었습니다.

  • SCK : 시리얼 클럭. 대안:
    • SCK, SCLK, CLK, SCL
  • MOSI : "마스터" 아웃 → "슬레이브" 인. 이제 "Main" Out "Sub" In으로 읽거나 다음과 같은 대안을 사용할 수 있습니다.
    • SIMO, MTSR, SPID - 메인 장치와 서브 장치 모두에서 MOSI에 해당하며 서로 연결됩니다.
    • SDI, DI, DIN, SI, SDA - 하위 전용 장치에서; "Serial" "Data" "In"의 다양한 약어. 메인에서 MOSI(또는 대체 이름)에 연결합니다.
    • SDO, DO, DOUT, SO - 메인 전용 장치에서 "Serial" "Data" "Out"의 다양한 약자. 서브에서 MOSI(또는 대체 이름)에 연결
    • COPI, "주변기기 및 컨트롤러"를 위한 PICO [36][37]또는 "컨트롤러" 및 "표적"[38]을 위한 COTI
  • MISO : "마스터" In ← "Slave" Out. 이제 "Sub" Out에서 "Main"으로 읽거나 다음 대안을 사용할 수 있습니다.
    • SOMI, MRST, SPIQ - 메인 장치와 서브 장치 모두에서 MISO에 해당하며 서로 연결됩니다.
    • SDO, DO, DOUT, SO - 하위 전용 장치에서, 메인의 MISO(또는 대체 이름)에 연결
    • SDI, DI, DIN, SI - 메인 전용 장치에서; 서브에서 MISO(또는 대체 이름)에 연결
    • CIPO, POCI,[36][37] or CITO[38]
  • SS : "Slave" Select (Chip Select와 동일한 기능) 대안:
    • SS, SS, SSEL, NSS, /SS, SS#(부선택)
    • CS, CS(칩 셀렉트)
    • CE(칩 활성화)

마이크로칩은 MOSI와 MISO라는 약어를 사용하지만 "Host"와 "Client"를 사용합니다.[39]

참고 항목

메모들

  1. ^ 모토로라 매뉴얼의 비트세이버 아카이브에서 "시리얼 주변 장치 인터페이스"에 대한 가장 초기의 최종 언급은 1983년부터입니다(§ 오리지널 정의 참조). 웹의 일부 소식통은 모토로라가 1979년에 68000이 출시되었을 때 SPI를 도입했다고 주장하지만, 그 중 많은 부분이 시트 생성이나 추측으로 보이며, 모토로라의 1983 68000 매뉴얼에는 "시리얼 주변 장치 인터페이스"에 대한 언급이 없기 때문에 1979년으로 추정되는 날짜는 신뢰할 수 있는 정보가 아닌 것으로 보입니다. 그때쯤 모토로라의 확실한 출처가 있는 경우에만 특정 design_date를 추가하십시오.
  2. ^ § 대체 용어 섹션에서는 제안된 대체 용어에 대해 자세히 설명합니다. 진행 중인 토론은 토크 페이지를 참조하십시오.
  3. ^ 주어진 트랜잭션에 대해 하나의 장치만 메인입니다. 그러나 일부 장치는 주 역할과 하위 역할을 즉시 변경할 수 있도록 지원합니다. 대부분의 마이크로 컨트롤러는 SPI의 역할을 쉽게 재구성할 수 있으며 일부 Atmel 및 Silabs 장치는 외부 핀에 따라 역할을 변경할 수 있습니다.
  4. ^ SSI(Synchronous Serial Interface)도 4선 동기 직렬 통신 프로토콜이지만 SSI 프로토콜은 차동 시그널링을 사용하고 단일 심플렉스 통신 채널만 제공합니다.
  5. ^ 일부 서브는 동작을 시작하려면 Chip Select 신호의 하강 에지가 필요합니다. 예를 들어 Maxim MAX1242 ADC는 High→Low 전환 시 변환을 시작합니다.
  6. ^ 전송은 종종 8비트 워드로 구성됩니다. 그러나 다른 워드 크기도 일반적입니다. 예를 들어 Texas Instruments의 TSC2101과 같은 터치 스크린 컨트롤러 또는 오디오 코덱의 경우 16비트 워드 또는 많은 디지털-아날로그 또는 아날로그-디지털 변환기의 경우 12비트 워드입니다.
  7. ^ 원래 사양에는 LSBFE("LSB-First Enable")가 있어 데이터가 가장 적게 전송되는지 아니면 가장 중요한 비트(MSB)가 먼저 전송되는지를 제어합니다.
  8. ^ a b SPI의 반이중 구현에서 SDIO(Serial Data I/O) 라인과 혼동하지 마십시오. "3-와이어" SPI라고도 합니다. 예를 들어, 메인의 MOSI(저항기를 통해) 및 MISO(저항기 없음)는 서브의 SDIO 라인에 연결됩니다.
  9. ^ 주변 장치는 데이터 시트에 명시된 대로 선택한 상태에서 특정 개수(또는 임의의 개수)의 전송 바이트를 허용하거나 요구할 수 있습니다.
  10. ^ SPI가 일반적으로 가장 중요한 비트를 먼저 전송하기 때문에 왼쪽 시프트가 사용됩니다. 대신 오른쪽 시프트를 사용하여 가장 의미가 적은 비트를 먼저 전송할 수 있습니다.
  11. ^ Texas Instruments OMAP 칩에 사용되는 MultiChannel Serial Port Interface(McSPI)와 같은 제품입니다. (https://www.ti.com/product/OMAP3530)
  12. ^ Atmel AT91 칩의 SPI 컨트롤러와 같이 TI의 McSPI보다 훨씬 간단합니다.

참고문헌

  1. ^ Dhaker, Piyu (2018). "Introduction to SPI Interface". Analog Dialogue. Archived from the original on 2023-05-25. Retrieved 2023-07-21.
  2. ^ "What is Serial Synchronous Interface (SSI)?". Retrieved 2015-01-28.
  3. ^ a b c 3단계로 향상된 SPI 버스 설계
  4. ^ SPI 블록 가이드 v3.06; 모토로라/프리스케일/NXP; 2003.
  5. ^ a b "AN991/D: Using the Serial Peripheral Interface to Communicate Between Multiple Microcomputers" (PDF). NXP. 2004 [1994]. Archived (PDF) from the original on 2023-04-04. Retrieved 2021-10-14.
  6. ^ "TMS320x281x Serial Peripheral Interface Reference Guide". Texas Instruments. 2002. pp. 16–17.
  7. ^ Maxim-IC 응용 노트 3947: "데이지 체인 SPI 장치"
  8. ^ a b Gammon, Nick (2013-03-23). "Gammon Forum : Electronics : Microprocessors : Using a 74HC165 input shift register". Gammon Forum. Archived from the original on 2023-07-29. Retrieved 2023-08-03.
  9. ^ a b Gammon, Nick (2012-01-31). "Gammon Forum : Electronics : Microprocessors : Using a 74HC595 output shift register as a port-expander". Gammon Forum. Archived from the original on 2023-07-14. Retrieved 2023-08-03.
  10. ^ Interfaces, 1977, pp. 80, 84
  11. ^ "Serial-Control Multiplexer Expands SPI Chip Selects" (PDF). Premier Farnell. 2001-07-01. Archived from the original (PDF) on 2019-08-19.
  12. ^ "AVR910 - In-system programming" (PDF). Archived from the original (PDF) on 2011-03-02.
  13. ^ components :: motorola :: dataBooks :: 1983 Motorola 8-Bit Microprocessor and Peripheral Data.
  14. ^ motorola :: dataBooks :: 1984 Motorola Single-Chip Microcomputer Data.
  15. ^ "Using the Serial Peripheral Interface to Communicate Between Multiple Microcomputers" (PDF). Bitsavers.
  16. ^ SafeSPI.org
  17. ^ "Transmitting SPI over LVDS Interfaces" (PDF). Texas Instruments. Retrieved 14 February 2021.
  18. ^ "SPI Master Loopback Example". Nordic Semiconductor. Retrieved 14 February 2021.
  19. ^ "Freescale Semiconductor, Inc. - QSM - Queued Serial Module - Reference Manual" (PDF). NXP. 1996 [1991]. Archived from the original (PDF) on 2019-08-24.
  20. ^ "Quad-SPI Brings Fast Parallel Data Transmission". Cadence Design Systems. 2023-01-11. Archived from the original on 2023-06-01. Retrieved 2023-06-30.
  21. ^ MICROWIRE 시리얼 인터페이스 국가 반도체 응용 노트 AN-452
  22. ^ COP800 패밀리용 마이크로와이어/PLUS 시리얼 인터페이스 국가 반도체 응용 참고 AN-579
  23. ^ a b "W25Q16JV 3V 16M-bit serial flash memory with Dual/Quad SPI" (PDF) (data sheet). Revision D. Winbond. 12 August 2016. Retrieved 2017-02-10.
  24. ^ a b c "D25LQ64 1.8V Uniform Sector Dual and Quad SPI Flash" (PDF) (data sheet). version 0.1. GigaDevice. 11 February 2011. Archived from the original (PDF) on 12 February 2017. Retrieved 2017-02-10.
  25. ^ "QuadSPI flash: Quad SPI mode vs. QPI mode". NXP community forums. December 2014. Retrieved 2016-02-10.
  26. ^ "SST26VF032B / SST26VF032BA 2.5V/3.0V 32 Mbit Serial Quad I/O (SQI) Flash Memory" (PDF) (Data sheet). version E. Microchip, Inc. 2017. Retrieved 2017-02-10.
  27. ^ Patterson, David (May 2012). "Quad Serial Peripheral Interface (QuadSPI) Module Updates" (PDF) (Application note). Freescale Semiconductor. Retrieved September 21, 2016.
  28. ^ Pell, Rich (13 October 2011). "Improving performance using SPI-DDR NOR flash memory". EDN.
  29. ^ IEEE 1149.1-2013
  30. ^ a b c d e f g h Enhanced Serial Peripheral Interface (eSPI) Interface Base Specification (for Client and Server Platforms) (PDF) (Report). Revision 1.0. Intel. January 2016. Document number 327432-004. Retrieved 2017-02-05.
  31. ^ Enhanced Serial Peripheral Interface (eSPI) Interface Specification (for Client Platforms) (PDF) (Report). Revision 0.6. Intel. May 2012. Document Number 327432-001EN. Retrieved 2017-02-05.
  32. ^ "Intel® 100 Series Chipset Family PCH Datasheet, Vol. 1" (PDF). Retrieved April 15, 2015.
  33. ^ "USB to SPI converter". FTDI. Retrieved 14 February 2021.
  34. ^ SPI Storm – 사용자 지정 직렬 프로토콜인 바이트 패러다임을 지원하는 직렬 프로토콜 호스트 어댑터.
  35. ^ "N5391B I²C and SPI Protocol Triggering and Decode for Infiniium scopes".
  36. ^ a b SPI; OSHWA.
  37. ^ a b https://www.ti.com/lit/an/scea091a/scea091a.pdf
  38. ^ a b "Serial Peripheral Interface (SPI) Devices". NXP. Archived from the original on 2023-06-01. Retrieved 2023-07-22.
  39. ^ Stoicescu, Alin. "Getting Started with Serial Peripheral Interface (SPI)". Microchip Technology. Archived from the original on 2023-12-21. Retrieved 2023-12-21.

외부 링크