스파이 연결. 직렬 인터페이스 SPI. SPI 연결 다이어그램

SPI 인터페이스가 무엇인지, 어떤 용도로 사용되는지 이미 알고 있다면 이 기사에서 새로운 내용을 배울 가능성이 거의 없습니다. 여기서는 이 인터페이스와 관련된 기본 개념을 설명하고 다음에서는 STM32 마이크로컨트롤러에 내장된 SPI 모듈을 사용하는 방법을 설명하겠습니다. 다른 인터페이스와 마찬가지로 SPI는 한 장치에서 다른 장치로 데이터를 전송하는 데 사용됩니다. SPI 버스의 장치는 동일하지 않습니다. 원칙적으로 하나의 주 장치(마스터)와 많은 슬레이브 장치(슬레이브)가 있습니다. 일반적으로 마이크로 컨트롤러는 마스터 역할을 하며 슬레이브 장치는 열 센서, 가속도계, 실시간 시계 등과 같은 다양한 주변 장치입니다. 마스터가 마스터라고 불리는 이유는 마스터가 알지 못하는 사이에는 어떤 슬레이브도 데이터 교환을 수행하지 않기 때문입니다. SPI 버스 자체는 물리적으로 4개의 와이어로 구성됩니다.

  • 모시– 데이터는 이 와이어를 통해 마스터에서 슬레이브 장치로 전달됩니다.
  • 미소— 데이터는 이 와이어를 통해 슬레이브에서 마스터 장치로 전달됩니다.
  • SCK— 이 와이어를 통해 마스터는 슬레이브 장치에 클럭 신호를 전송합니다.
  • C.S.– 칩 선택(또는 SS – 슬레이브 선택) – 이 와이어를 통해 마스터는 이제 슬레이브에게 데이터를 보내고 있음을 슬레이브에게 분명히 알립니다.

네 줄 모두에 대한 설명을 통해 다음과 같은 결론을 내릴 수 있습니다.

  • SPI는 직렬 인터페이스입니다. 데이터 비트가 차례로 전송됩니다.
  • SPI는 동기식 인터페이스입니다. 이는 마스터가 클록 펄스를 생성하고 이를 SCK 와이어를 통해 버스의 다른 장치로 전송하는 동안에만 데이터 전송(양쪽 방향)이 발생함을 의미합니다.
  • 여러 장치를 하나의 버스에 연결할 수 있으며 이론적으로 그 수는 무제한입니다.
  • SPI는 전이중 모드로 통신하는 기능을 제공합니다. 마스터가 클럭 펄스를 생성하는 동안 슬레이브 장치로 데이터를 보내는 동시에 슬레이브 장치로부터 데이터를 받을 수 있습니다.

이제 장치가 버스에 어떻게 연결되는지 살펴보겠습니다. 화살표는 신호를 전송하는 사람과 위치를 보여줍니다.

그림에서 볼 수 있듯이 CS를 제외한 모든 인터페이스 라인은 단순히 서로 결합되어 있습니다. 각 슬레이브 장치에 대해 마스터에는 별도의 CS 출력이 있습니다. 두 번째 슬레이브 장치와 데이터를 교환하기 위해 마스터는 CS2 핀을 낮은 논리 레벨로 설정하고 다른 두 핀(CS1 및 CS3)을 높은 논리 레벨로 설정합니다. 따라서 Slave_1과 Slave_3은 전혀 생명의 흔적을 보이지 않으므로 마스터와 Slave_2 사이의 통신을 방해하지 않습니다. CS 레그의 활성 상태는 논리적 0이라는 점을 다시 한 번 강조하겠습니다. 이 방식에는 한 가지 단점이 있습니다. 10개의 슬레이브 장치의 경우 마스터는 CS에 연결하기 위해 별도의 10개의 다리를 가져야 합니다. 데이지 체인이라는 또 다른 연결 옵션이 있습니다. 이 연결을 사용하면 모든 장치가 체인으로 연결되고 하나의 공통 CS를 갖습니다. 이 포함 방법은 매우 드물게 사용되기 때문에 자세히 고려하지 않습니다. 위에서 언급했듯이 다양한 슬레이브 장치를 동일한 버스에 연결할 수 있으며 그 중 일부는 매우 빠르며 마스터와 고속으로 데이터를 교환할 수 있는 반면 일부는 매우 느립니다. 이는 마스터가 클럭 펄스를 너무 빨리 생성해서는 안 된다는 것을 의미합니다. 그렇지 않으면 느린 슬레이브 장치가 데이터 손상으로 인해 이를 이해하지 못할 것입니다. 그러나 속도가 SPI 인터페이스의 모든 매개변수는 아닙니다. 4가지 SPI 모드도 있습니다. SPI 인터페이스가 있는 모든 장치의 데이터시트에는 일반적으로 "이 장치는 모드 2를 사용합니다."라고 적혀 있습니다. 이것이 얼마나 표준화되어 있는지는 말할 수 없지만 여러 번 본 적이 있습니다. 이러한 모드의 본질을 간략하게 설명하기 위해, 각 모드는 (SCK 라인의 상태에 따라) 데이터를 읽고/전송해야 하는 순간을 결정합니다. 다음 표는 이러한 모드가 무엇이고 서로 어떻게 다른지 보여줍니다. 4가지 모드 모두에서 마스터는 동일한 바이트(0x93)를 보냅니다. 노란색 선은 SCK이고 파란색 선은 MOSI입니다.

방법CPOLCPHA오실로그램모드 설명
0 0 0 리딩 라이징 에지에서 샘플링
1 0 1 후행 하강 에지에서 샘플링
2 1 0 앞쪽 하강 에지에서 샘플링
3 1 1 후미 상승 에지에서 샘플링

표에서 볼 수 있듯이 모드 번호는 두 비트로 구성됩니다. CPOL그리고 CPHA. 조금 CPOL아무것도 전송되지 않는 동안 SCL 레그가 어떤 상태에 있는지 결정합니다. 만약에 CPOL=0이면 유휴 모드에서 레그는 낮은 논리 수준에 있습니다. 즉, 앞쪽 가장자리는 0에서 1로의 전환으로 간주됩니다(하강 가장자리는 각각 1에서 0으로). 만약에 CPOL=1이면 유휴 모드에서 논리 수준이 높습니다. 즉, 앞쪽 가장자리는 1에서 0으로의 전환으로 간주됩니다(하강 가장자리는 각각 0에서 1로). 조금 CPHA샘플링할 에지를 결정합니다. 0 – 앞쪽 에지, 1 – 하강 에지. 사실 위의 표가 보여주는 것이 전부입니다. 그런데 이 두 비트가 STM32 및 AVR 마이크로컨트롤러의 SPI 구성 레지스터에서 정확히 동일하게 호출된다는 점은 주목할 만합니다. 다음으로 중요한 매개변수는 비트 순서입니다. 일반적으로 가장 중요한 비트가 먼저 전송되지만, 이를 고려하지 않으면 슬레이브와 마스터가 공통 언어를 찾지 못하는 경우도 있습니다. 비트 수는 다양할 수 있으며 일반적으로 8비트이고 때로는 그 이상입니다. 이론적 기초는 끝났습니다. 다음 기사에서는 보드에 SPI를 적용해 보겠습니다.

SPI 인터페이스는 Motorola에서 개발했습니다. 오늘날 이는 모든 순차 유형 중에서 빠른 속도와 탁월한 단순성으로 인해 가장 인기 있는 유형 중 하나입니다. 또한 SPI 인터페이스도 통신 원리입니다. 기본적으로 SPI는 서로 다른 두 장치 간의 논리(마스터-슬레이브)입니다. 물리적 특성은 "상황에 따라" 구현되며 하위 수준 프로토콜은 제공되지 않습니다. 각 제조업체는 자체적으로 기여할 수 있습니다.

SPI 인터페이스: 설명

이러한 장치의 논리는 데이터를 직렬(비트 단위)로 전송하는 것입니다. 이 경우 특수 버스("클러킹 버스" 또는 "동기화"라고 함)의 특수 클럭 신호 덕분에 설정과 읽기가 시간상 분리됩니다. 분리란 데이터 설정 및 읽기 프로세스가 버스에서 생성된 클록 펄스의 반대쪽 에지에서 발생함을 의미합니다. 시간에 따른 판독값과 설정의 명확하게 분리된 변경 덕분에 동일한 레지스터를 사용하여 정보를 수신하고 전송하는 것이 가능합니다. 이 원칙에 따라 SPI 인터페이스가 개발되었습니다. 그러나 오늘날 기술 개발은 멈추지 않고 대용량 메모리도 문제를 일으키지 않으며 대부분의 장치에는 별도의 입력 및 출력 레지스터가 있습니다. 여기서는 간단히 말해서 SPI 인터페이스가 어떻게 작동하는지 살펴보았습니다.

장치 작동 설명

클록 버스에 대한 클록 펄스(제어)를 생성하는 장치가 "마스터"(마스터)입니다. 이러한 장치는 전체 데이터 교환 프로세스를 제어합니다. 즉, 교환 시작 시기, 종료 시기, 전송할 정보 비트 수 등을 결정합니다. 교환에 참여하는 두 번째 장치를 "슬레이브"라고 합니다. 이 장치는 어떤 방식으로든 클록 버스에 영향을 미치지 않습니다. 전이중 교환(동시에 양방향 전송)의 경우 SP 인터페이스는 4개의 회선을 사용합니다.

- MOSI - 마스터 출력 및 슬레이브 입력. 이 라인은 기본 장치에서 수신 장치로 연결됩니다.

MISO - 마스터 입력 및 슬레이브 출력. 이 와이어를 통해 마스터는 보조 장치로부터 데이터를 수신합니다.

SCLK - 시계 버스. 이 라인을 따라 "마스터" 장치는 클록 펄스를 생성합니다.

SS - "슬레이브" 선택. 이 와이어를 사용하여 마스터는 교환 세션을 제어합니다.

논리 0과 1 레벨은 데이터 버스(MISO 및 MOSI)의 전압 값으로 인코딩됩니다. SS 신호는 정보 교환 세션의 끝과 시작을 나타냅니다. 대부분은 반대입니다. 이는 데이터 교환 중에 "마스터" 장치가 SS 라인을 낮은 레벨 신호로 설정하고 교환이 끝나면 높은 신호로 설정해야 함을 의미합니다. SS 레벨이 있으면 추가 프로토콜 없이 하나의 클럭 신호와 하나의 데이터 버스를 사용하여 여러 "슬레이브" 장치를 통한 전송을 구성할 수 있습니다. 그러나 이러한 연결을 위해서는 각 수신 장치에서 별도의 SS 라인을 연결해야 합니다.

안녕하세요! 오늘의 기사는 Arduino 프로그래밍 과정을 마스터하는 데 도움이 될 작은 이론적 여담입니다. SPI 인터페이스에 대해 이야기하겠습니다. 그것이 무엇인지, 무엇과 함께 먹는지에 대해 이 기사에서 알아내려고 노력할 것입니다.

우선, 정의는. SPI(직렬 주변 장치 인터페이스 - 직렬 주변 장치 인터페이스)은 컨트롤러와 다양한 주변기기 간의 통신을 위해 설계된 직렬 동기 데이터 전송 표준입니다. 이 인터페이스는 간단하고 편리합니다. SPI 작업을 위한 특수 라이브러리가 Arduino용으로 작성되었습니다.

통신은 "마스터-슬레이브" 원칙을 기반으로 합니다. 컨트롤러는 일반적으로 마스터 장치입니다. 시스템에 연결된 다른 모든 장치는 슬레이브입니다. 마스터 장치의 데이터는 데이터 버스를 통해 선택된 슬레이브 중 하나로 전송되거나 그 반대로 마스터 클럭 신호를 사용하여 슬레이브 장치에서 마스터로 동기적으로 전송됩니다.

SPI 데이터 버스 핀아웃 4개의 라인으로 구성됩니다: MOSI, MISO, CS 및 SCLK:

  • 모시(마스터 출력 슬레이브 입력 - 마스터 출력, 슬레이브 입력) 또는 단순히 시.– 마스터 장치에서 슬레이브 장치로 데이터 전송이 발생합니다.
  • 미소(마스터 입력 슬레이브 출력 - 마스터 입력, 슬레이브 출력) 또는 단순히 그래서– 슬레이브 장치에서 마스터 장치로 데이터 전송이 발생합니다.
  • C.S.(칩 선택 - 칩 선택) 또는 봄 여름 시즌(슬레이브 선택 - 슬레이브 선택) – 슬레이브 장치 선택.
  • SCLK(직렬 시계) 또는 단순히 SCK– 마스터에서 슬레이브로 클럭 신호를 전송합니다.

마스터에서 슬레이브로 데이터를 전송하려면 마스터가 통신하려는 슬레이브의 CS 라인에서 신호 레벨을 낮게 설정해야 합니다. 그런 다음 비트는 MOSI 라인을 통해 전송됩니다. 데이터 전송을 중지하기 위해 리더는 CS 라인을 "해제"하여 높은 신호 레벨을 설정합니다.

여러 슬레이브 장치를 SPI 데이터 버스에 연결하려면 각 슬레이브 장치마다 고유한 개별 CS 라인이 있어야 합니다. 이 작업이 완료되면 마스터 장치는 교대로 라인을 "당겨" 슬레이브 장치 간에 전환할 수 있습니다. 여러 슬레이브를 병렬 또는 직렬 등 다양한 방법으로 연결할 수 있습니다.

SPI 데이터 버스를 통한 슬레이브 장치의 병렬 연결

여러 슬레이브 장치의 병렬 연결의 특징은 공통 라인 SCLK, MOSI 및 MISO가 통신을 생성하는 데 사용된다는 것입니다. 이 경우 각 슬레이브 장치에는 자체 SS(CS) 라인이 있습니다. 마스터 장치는 해당 SSn 라인(여기서 n – 1,2...)에서 낮은 신호 레벨을 생성하여 데이터 교환을 설정할 "현재 슬레이브"를 결정합니다.

SPI 인터페이스를 통해 n개의 슬레이브 장치를 컨트롤러에 연결하려면 해당 장치를 이 목적으로 할당해야 합니다. n+3마이크로 컨트롤러 핀.

슬레이브 장치를 SPI 버스에 직렬 연결

슬레이브 장치의 직렬 연결은 공통 라인 SCLK와 SS를 사용하며 한쪽의 출력이 다른 쪽의 입력으로 연결됩니다. 마스터 장치의 MOSI 라인은 첫 번째 슬레이브에 연결되고 MISO 라인은 마지막 슬레이브에 연결됩니다. 마스터 장치의 관점에서 이 연결을 살펴보면 하나의 슬레이브 장치가 SPI 데이터 버스를 통해 연결됩니다.

이러한 유형의 연결의 이점에 주목해야 합니다. 이 목적을 위해 마이크로 컨트롤러의 4개 핀만 사용하여 n번째 장치를 연결할 수 있습니다.

지금은 그게 전부입니다. 계속해서...

SPI Arduino에서는 Arduino 보드와 연결된 장치 간에 데이터를 교환하는 주요 프로토콜 중 하나입니다. I2C 및 UART와 함께 이 프로토콜은 다양한 유형의 주변 장치에 자주 사용되므로 Arduino 엔지니어에게는 SPI 작동 원리에 대한 지식이 필요합니다. 이 기사에서는 SPI 센서와 화면을 Arduino에 연결하는 기본 원리, 상호 작용 방식 및 방법을 간략하게 살펴보겠습니다.

SPI는 마이크로 컨트롤러(마스터)와 주변 장치(슬레이브) 간에 널리 사용되는 데이터 전송 프로토콜입니다. 우리 프로젝트에서는 Arduino 보드가 마스터로 가장 자주 사용됩니다. SPI 인터페이스는 Motorola에서 개발하고 사용했지만 시간이 지나면서 업계 표준이 되었습니다. 이 인터페이스 작업의 가장 큰 장점은 속도가 빠르고 하나의 데이터 버스에 여러 장치를 연결할 수 있다는 것입니다.

SPI 핀 및 핀

SPI Arduino 인터페이스를 통한 통신은 서로 가까이 위치한 여러 장치 간에 발생합니다. Arduino 보드에는 SPI를 위한 별도의 핀이 장착되어 있습니다. 페어링은 4개의 연락처를 사용하여 이루어집니다.

  • MOSI – 정보는 이 회선을 통해 마스터에서 슬레이브로 전송됩니다.
  • MISO - 슬레이브에서 마스터로 정보를 전송하는 데 사용됩니다.
  • SCLK – 동기식 데이터 전송을 위한 클럭 펄스 생성.
  • SS – 슬레이브 장치 선택.

SPI 장치의 상호 작용

SS 출력이 낮아지면 장치 상호작용이 시작됩니다.

작업을 시작하기 전에 다음을 결정해야 합니다.

  • 이동은 높음 또는 낮음 중 어느 비트에서 시작해야 합니까? 순서는 PI.setBitOrder() 함수를 사용하여 조정됩니다.
  • 클럭 펄스가 없을 때 SCK 라인이 있어야 하는 레벨을 결정합니다. SPI.setDataMode() 함수로 조정 가능합니다.
  • 데이터 전송 속도를 선택하세요. SPI.setClockDivider() 함수에 의해 결정됩니다.

다음 단계는 정보가 어떤 모드로 전송될지 결정하는 것입니다. 모드 선택은 클록 펄스의 극성 및 위상과 같은 표시기에 의해 결정됩니다. 레벨이 낮으면 0이 기록되고 높음 - 1이 기록됩니다. 총 4가지 모드가 있습니다.

  • 모드 0 - SPI_MODE0: 극성(CPOL) 0, 위상(CPHA) 0.
  • 모드 1: 극성 0, 위상 1.
  • 모드 2: 극성 1, 위상 0.
  • 모드 3: 극성 1, 위상 1.

처음에 Arduino는 가장 중요한 비트부터 데이터를 전송하도록 설계되었지만 시작하기 전에 문서에서 이를 명확히 해야 합니다. 사진의 모드를 시연할 수 있습니다.

SPI 인터페이스에는 독립형과 계단식이라는 두 가지 연결 유형이 있습니다. 첫 번째 경우에는 연결 시 마스터가 각 슬레이브의 주소를 개별적으로 지정하고, 두 번째 경우에는 연결이 하나씩 발생합니다. 종속.

SPI를 Arduino에 연결하기

각 Arduino 모델에는 자체 SPI 핀이 있습니다. 이러한 결론은 다음과 같습니다.

  • Uno: MOSI는 핀 11 또는 ICSP-4, MISO – 12 또는 ICSP-1, SCK – 13 또는 ICSP-3, SS(슬레이브) – 10에 해당합니다.
  • Mega1280 또는 Mega2560: MOSI – 51 또는 ICSP-4, MISO – 50 또는 ICSP-1, SCK – 52 또는 ICSP-3, SS(슬레이브) – 53.
  • 레오나르도: MOSI – ICSP-4, MISO – ICSP-1, SCK – ICSP-3.
  • 기한: MOSI – ICSP-4, MISO –ICSP-1, SCK –ICSP-3, SS(마스터) – 4, 10, 52.

최신 Arduino Due 컨트롤러는 사용자 기능을 확장하고 다른 마이크로 컨트롤러보다 더 많은 작업을 구현할 수 있도록 해줍니다. 예를 들어 슬레이브 장치를 자동으로 제어하고 다양한 구성(클럭 속도, 모드 등)을 자동으로 선택할 수 있습니다.

Arduino SPI 라이브러리

Arduino에서 작업하기 위해 SPI를 구현하는 별도의 라이브러리가 생성되었습니다. 코드를 시작하기 전에 #include를 추가해야 합니다. 라이브러리를 활성화합니다.

주요 기능:

  • start() 및 end() – 작업을 켜고 끕니다. 초기화 중에 SCLK, MOSI 및 SS 라인이 출력에서 ​​구성되어 낮은 레벨을 SCLK, MOSI로 보내고 높은 레벨을 SS로 보냅니다. end() 함수는 라인 레벨을 변경하지 않습니다. Arduino 보드의 인터페이스와 관련된 블록을 끄는 데 필요합니다.
  • setBitOrder(order) – 정보 비트 전송 순서 설정(MSBFIRST – 최상위 비트 우선 순위, LSBFIRST – 최하위 비트 우선 순위)
  • setClockDivider(divider) – 주 주파수 클럭 분배기를 설정합니다. 제수 2, 4, 8, 16, 32, 64 및 128을 설정할 수 있습니다. 이는 다음과 같이 작성됩니다 - SPI_CLOCK_DIVn, 여기서 n은 선택된 제수입니다.
  • setDataMode(mode) – 네 가지 작동 모드 중 하나를 선택합니다.
  • 전송(값) – 마스터 장치에서 바이트를 전송하고 슬레이브 장치에서 수신된 바이트를 반환합니다.
  • ShiftIn(miso_pin, sclk_pin, bit_order) 및 ShiftOut(mosi_pin, sclk_pin, order, value) – 데이터 수신 및 전송은 모든 디지털 핀에 연결할 수 있지만 그 전에 직접 구성해야 합니다.

SPI의 장점과 단점

SPI 인터페이스의 장점:

  • 8비트에 국한되지 않는 대용량 데이터 전송 기능.
  • 소프트웨어를 구현하기 쉽습니다.
  • 하드웨어 구현의 단순성.
  • 병렬 인터페이스보다 필요한 핀 수가 적습니다.
  • 장치의 속도만이 최대 클록 주파수를 제한합니다.

결점:

  • I2C에 비해 핀 수가 많습니다.
  • 슬레이브는 정보의 흐름을 제어할 수 없습니다.
  • 표준 오류 감지 프로토콜이 부족합니다.
  • 인터페이스를 구현하는 다양한 방법.
  • 정보 수신 확인이 부족합니다.

압력 센서가 있는 프로젝트에서 Arduino SPI를 사용하는 예

프로젝트를 구현하려면 Arduino, 압력 센서, 브레드보드 및 전선이 필요합니다. 센서 연결의 예가 그림에 나와 있습니다.

SCP1000 센서를 사용하면 압력, 온도 등의 매개변수를 인식하고 이 값을 SPI를 통해 전송할 수 있습니다.

프로그램 스케치의 기본 요소

먼저 setup()을 이용하여 센서 레지스터를 코드에 등록합니다. 여러 값이 장치에서 반환됩니다. 하나는 수신된 압력에 대해 19비트로, 다른 하나는 온도에 대해 16비트로 반환됩니다. 그 후 두 개의 온도 바이트를 읽고 두 단계로 압력을 읽습니다. 먼저 프로그램은 가장 중요한 3개의 비트를 가져온 다음 다음 16비트를 가져온 다음 비트 시프트를 사용하여 이 두 값을 하나로 결합합니다. 실제 압력은 19자리 값을 4로 나눈 값입니다.

const int 압력 = 0x1F; // 압력 결정의 첫 번째 단계(3개의 최상위 비트가 감지됨)

const int PRESSURE_LSB = 0x20; // 압력에 대해 16비트를 정의하는 두 번째 단계

const int 온도 = 0x21; //온도용 16비트

온도 데이터를 읽고 이를 섭씨로 변환하려면 다음 코드 요소가 사용됩니다.

int tempData = readRegister(0x21, 2);

float realTemp = (float)tempData / 20.0; // 실제 온도 값을 섭씨로 결정하려면 결과 숫자를 20으로 나누어야 합니다.

Serial.print(“온도

Serial.print(realTemp);

압력 비트 읽기 및 결합:

바이트 압력_데이터_높음 = readRegister(0x1F, 1);

압력_데이터_높음 &= 0b00000111;

unsigned int Pressure_data_low = readRegister(0x20, 2);

긴 압력 = ((압력_데이터_높음<< 16) | pressure_data_low) / 4; //определение давления в Паскалях.

SPI에 대한 간략한 결론

SPI 실드와 센서는 Arduino 프로젝트에서 흔히 발견되므로 이 프로토콜이 어떻게 작동하는지 알아야 합니다. 원칙적으로 SPI 장치 연결에는 복잡한 것이 없습니다. 가장 중요한 것은 와이어를 올바르게 연결하고 표준 라이브러리 방법을 올바른 순서로 사용하는 것입니다. SD 카드나 OLED 화면과 같은 일부 장치의 경우 원칙적으로 대안이 없습니다.

SPI(직렬 주변기기 인터페이스, 직렬 주변기기 인터페이스, 버스 SPI) - 모토로라에서 개발한 근거리 데이터 인터페이스입니다. 데이터는 마스터-슬레이브 아키텍처를 사용하여 전이중 모드(양방향)로 전송됩니다. SPI 4선 인터페이스라고도 합니다.

그림 1 SPI를 통한 표준 통신

타이어에 SPI 4개의 디지털 신호가 사용됩니다:
  • 모시: (Master Out Slave In) 마스터 출력, 슬레이브 입력.
  • 미소: (Master In Slave Out) 마스터 입력, 슬레이브 출력.
  • SCLK: (직렬 클럭) 클럭 신호입니다.
  • C.S.또는 봄 여름 시즌: (칩 선택, 슬레이브 선택) 칩 선택, 슬레이브 선택.

다른 이름도 가능합니다:

  • 모시: SIMO, SDO, DO, DOUT, SI, MTSR;
  • 미소: 소미, SDI, DI, DIN, SO, MRST;
  • SCLK: SCK, CLK;
  • 봄 여름 시즌: nCS, CS, CSB, CSN, nSS, STE, SYNC.
타이어 SPI 1개의 마스터와 여러 개의 슬레이브 장치로 작업할 수 있습니다. 단일 슬레이브 장치를 사용하는 경우 해당 SS 입력을 접지할 수 있지만 신호 차단 시 작동하지 않는 경우에만 가능합니다.

여러 개의 슬레이브 장치를 사용하는 경우 각 핀에 풀업 저항을 연결해야 합니다. 봄 여름 시즌출력이 미소각 장치는 임피던스가 높은 버퍼를 통해 연결됩니다(실제로 출력은 연결이 끊어진 것으로 간주됨). 이는 마이크로 회로 내부에서 구현될 수 있으므로 특정 장치에 대한 문서를 연구해야 합니다.

장치 내부에 버퍼가 제공되지 않으면 라인 미소항상 log.0 또는 log.1 상태입니다. (태울 수도 있습니다). 장치 내부에 버퍼가 있는지 확인하려면 설명서를 읽거나 전압 분배기를 연결하여 라인에 연결할 수 있습니다. 미소공급 전압의 절반이었다면 실제 전압을 측정하십시오. 측정한 값이 다른 경우(0V 또는 공급 전압이 됨) 버퍼가 없으므로 별도의 칩으로 설치해야 합니다.


그림 3 내부 버퍼 유무 확인

데이터 전송


마스터와 슬레이브는 서로 동시에 데이터를 전송합니다. 먼저 입력을 다음으로 설정하여 슬레이브 장치를 선택해야 합니다. 봄 여름 시즌낮은 논리 레벨(제조업체에 따라 다를 수 있음) 전송될 데이터는 시프트 레지스터에 배치됩니다. 그런 다음 마스터는 약 수 MHz의 주파수로 클럭 신호를 생성하고 마스터와 슬레이브는 가장 중요한 비트부터 시작하여 비트 단위로 시프트 레지스터에 저장된 정보를 서로 보내기 시작합니다.

그림 4 SPI를 통한 데이터 전송
총 2개의 시프트 레지스터가 사용되며, 한 장치의 최상위 비트가 다른 장치의 최하위 비트로 전송된 후 레지스터는 저장된 정보를 시프트합니다. 1개의 데이터 패킷의 비트 수는 특정 장치에 따라 다릅니다. 일부 제조업체는 패킷 길이를 변경하는 기능을 추가합니다.

더 많은 데이터를 전송해야 하는 경우 새 정보가 레지스터에 기록되고 프로세스가 다시 시작됩니다. 데이터 전송이 끝나면 일반적으로 마스터는 슬레이브 장치를 끕니다.

여러 레지스터를 사용하여 인터페이스를 구성합니다. 주파수, 인터럽트, 비트 순서 등을 조정할 수 있습니다. 이에 대한 자세한 내용은 Motorola ee.nmt.edu의 문서에서 찾을 수 있습니다. 이 문서는 표준으로 사용됩니다. SPI. 그러나 제조업체는 여기에 설명된 모든 설정을 사용하지 않을 수 있으며 비트는 Motorola의 설명과 다른 순서로 배열될 수 있습니다. 어떤 경우든 특정 장치에 대한 설명서를 읽어야 합니다.

전송 주파수 설정과 마스터/슬레이브 선택이 명확하다면 클록 신호의 위상과 극성 설정에 대해 더 자세히 설명할 수 있습니다.

기본적으로 이러한 설정은 타이밍 다이어그램에서 이해할 수 있습니다.

  • CPOL= 0: 동기 신호가 낮게 시작됩니다.
  • CPOL= 1: 동기 신호가 높게 시작됩니다.
  • CPHA= 0: 데이터는 클럭 신호의 상승 에지에 기록됩니다.
  • CPHA= 1: 클럭 신호의 하강 에지에 데이터가 기록됩니다.
하강 및 상승 에지는 클록 신호의 첫 번째 변경 또는 두 번째 변경을 나타냅니다. 이는 회선이 어떤 상태로 가는지에 따라 달라지지 않습니다. SCK, 하락 전선 또는 상승 전선일 수 있습니다.

비트 상태에 따라 CPHA그리고 CPOL, SPI 인터페이스에는 4가지 작동 모드(0, 1, 2 또는 3)가 있습니다. 그러나 제조업체에 따라 서로 다른 비트 상태에 해당하는 경우가 많습니다. 예를 들어 ARM 및 PIC32MX 컨트롤러의 경우 모드가 일치하지 않습니다.

여러 SPI를 활성화하는 두 가지 일반적인 방법이 있으며, 그 중 첫 번째는 데이지 체인 연결입니다.

이 경우 마스터는 어느 슬레이브 장치가 데이터를 전송해야 하는지 선택합니다.

슬레이브 장치가 서로 호환되지 않고 다른 설정(예: 다른 패킷 길이)이 필요할 수 있습니다. 이 경우 "링" 연결을 사용합니다.

이 경우 모든 장치가 동시에 켜지고 데이터가 순차적으로 전송됩니다. 정보를 모든 장치로 또는 해당 장치에서 마스터로 전송하려면 여러 전송주기를 거쳐야합니다.

결론


SPI인터페이스는 단순성과 저렴한 비용으로 인해 인기를 얻었습니다. 이제 수많은 장치에서 찾을 수 있으며 MK는 도움을 받아 프로그래밍되며 JTAG도 기반으로 구현됩니다. SPI.플래시 메모리, EEPROM, LCD, SD 카드, ADC, DAC 마이크로 회로 등 다양한 마이크로 회로와 통신하는 데 자주 사용됩니다.

표준은 Motorola에서 설명하지만 명확한 정의와 경계는 없습니다. SPI, 이는 이 인터페이스의 다양한 구현을 찾을 수 있는 이유입니다. 신호 라인 수, 패킷의 비트 수 및 기타 구성 방법이 사용될 수 있습니다. 따라서 먼저 작업 중인 장치에 대한 설명서를 읽어야 합니다.

기성 구현이 있습니다 SPI다양한 프로젝트를 디버깅하는 데 유용할 수 있는 컴퓨터에 연결할 수 있는 "트랜시버"와 새로운 오실로스코프 및 로직 분석기가 디코딩할 수 있습니다. SPI패키지.

장점

  • 전이중 데이터 전송.
  • I²C 또는 SMBus에 비해 처리량이 더 높습니다.
  • 패킷 길이를 임의로 선택할 수 있습니다.
  • I²C 및 SMBus에 비해 전력 소비 요구 사항이 낮습니다.
  • 안정적인 클럭 속도가 낮은 시스템에서 사용할 수 있습니다.
  • 슬레이브 장치에는 I²C, GPIB 또는 SCSI와 같은 인터페이스와 달리 고유 주소가 필요하지 않습니다.
  • 4개의 핀만 사용되며 이는 병렬 인터페이스보다 훨씬 적습니다.
  • 신호의 단방향 특성으로 인해 필요한 경우 마스터 장치와 슬레이브 장치 간의 갈바닉 절연을 쉽게 구성할 수 있습니다.
  • 최대 클록 주파수는 데이터 교환과 관련된 장치의 속도에 의해서만 제한됩니다.

결함

  • I²C 인터페이스보다 더 많은 핀이 필요합니다.
  • 슬레이브 장치는 데이터 흐름을 제어할 수 없습니다.
  • 슬레이브 장치로부터의 데이터 수신에 대한 승인이 없습니다(마스터 장치는 "아무데도" 데이터를 전송할 수 없습니다).
  • 표준으로 정의된 오류 감지 프로토콜은 없습니다.
  • 공식적인 표준이 없기 때문에 장치를 인증하는 것이 불가능합니다.
  • 데이터 전송 범위 측면에서 SPI 인터페이스는 UART 및 CAN과 같은 표준보다 열등합니다.
  • 다양한 인터페이스 구현 옵션의 가용성.
  • 장치의 핫 플러깅에 대한 지원이 부족합니다.

출처:
Motorola의 문서



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: