임베디드의 SPI 통신 프로토콜에 대한 이해

문제를 제거하기 위해 도구를 사용해보십시오





통신은 임베디드 시스템 설계에서 필수적인 역할을합니다. 프로토콜을 사용하지 않으면 주변 장치 확장이 매우 복잡하고 전력을 많이 소모합니다. 그만큼 임베디드 시스템 기본적으로 직렬 통신을 사용하여 주변 장치와 통신합니다.
UART, CAN, USB, I2C 및 SPI 통신과 같은 많은 직렬 통신 프로토콜이 있습니다. 시리얼 통신 프로토콜 특성에는 고속 및 낮은 데이터 손실이 포함됩니다. 시스템 수준 설계를 더 쉽게 만들고 안정적인 데이터 전송을 보장합니다.

직렬 데이터 통신

전기적으로 코딩 된 정보를 직렬 데이터라고하며, 일련의 프로토콜을 통해 한 장치에서 다른 장치로 비트 단위로 전송됩니다. 임베디드 시스템에서 제어 센서 및 액추에이터 데이터는 마이크로 컨트롤러와 같은 컨트롤러 장치로 수신되거나 전송되므로 데이터가 추가로 분석되고 처리됩니다. 마이크로 컨트롤러가 디지털 데이터로 작업함에 따라 아날로그 센서 , 액추에이터 및 기타 주변 장치는 마이크로 컨트롤러로 전송되기 전에 1 바이트 (8 비트) 바이너리 워드로 변환됩니다.




직렬 데이터 통신

직렬 데이터 통신

이 직렬 데이터는 특정 클럭 펄스와 관련하여 전송됩니다. 데이터 전송 속도를 보오율이라고합니다. 초당 전송할 수있는 데이터 비트 수를 전송 속도라고합니다. 데이터가 12 바이트라고 가정하면 각 바이트가 8 비트로 변환되어 데이터 전송의 총 크기가 데이터의 약 96 비트 / 초 (바이트 당 12 바이트 * 8 비트)가됩니다. 데이터가 1 ​​초에 한 번 전송 될 수있는 경우 전송 속도는 약 96 비트 / 초 또는 96 보입니다. 디스플레이 화면은 1 초에 한 번씩 데이터 값을 새로 고칩니다.



직렬 주변기기 인터페이스 기본 사항

SPI 통신은 직렬 주변 장치 인터페이스를 나타냅니다. 통신 프로토콜 1972 년 모토로라에서 개발 한 SPI 인터페이스는 PIC, AVR 및 ARM 컨트롤러 등. 전이중으로 작동하는 동기 직렬 통신 데이터 링크가있어 데이터 신호가 동시에 양방향으로 전달됩니다.

SPI 프로토콜은 마스터 / 슬레이브 통신에 사용되는 MISO, MOSI, CLK, SS와 같은 4 개의 와이어로 구성됩니다. 마스터는 마이크로 컨트롤러이고 슬레이브는 센서와 같은 다른 주변 장치입니다. GSM 모뎀 및 GPS 모뎀 등. 여러 슬레이브가 SPI 직렬 버스를 통해 마스터에 인터페이스됩니다. SPI 프로토콜은 다중 마스터 통신을 지원하지 않으며 회로 기판 내에서 짧은 거리에 사용됩니다.

직렬 주변기기 인터페이스 기본 사항

직렬 주변기기 인터페이스 기본 사항

SPI 라인

MISO (Master in Slave out) : MISO 라인은 마스터 장치의 입력과 슬레이브 장치의 출력으로 구성됩니다.


MOSI (마스터 아웃 슬레이브 인) : MOSI는 마스터 장치의 출력과 슬레이브 장치의 입력으로 구성된 라인으로 데이터 이동을 동기화하는 데 사용됩니다.

SCK (직렬 시계) :이 신호는 마스터와 슬레이브 간의 동기 데이터 전송을 위해 항상 마스터에 의해 구동됩니다. MOSI 및 MISO 라인을 통해 안팎으로 데이터 이동을 동기화하는 데 사용됩니다.

SS (슬레이브 선택) 및 CS (칩 선택) :이 신호는 마스터에 의해 구동되어 개별 슬레이브 / 주변 장치를 선택합니다. 슬레이브 장치를 선택하는 데 사용되는 입력 라인입니다.

SPI 직렬 버스를 통한 마스터 슬레이브 통신

단일 마스터 및 단일 슬레이브 SPI 구현

여기서 통신은 항상 마스터에 의해 시작됩니다. 마스터 장치는 먼저 슬레이브 장치가 지원하는 최대 주파수보다 작거나 같은 클럭 주파수를 구성합니다. 그런 다음 마스터는 특정 슬레이브 장치의 칩 선택 라인 (SS)을 끌어 로우 상태로 전환하여 통신을 위해 원하는 슬레이브를 선택합니다. 마스터는 마스터에서 슬레이브로 데이터를 전달하는 MOSI 라인에 대한 정보를 생성합니다.

마스터 슬레이브 통신

마스터 슬레이브 통신

단일 마스터 및 다중 슬레이브 구현

이것은 SPI 직렬 버스를 통해 하나의 마스터와 여러 개의 슬레이브가있는 다중 슬레이브 구성입니다. 여러 슬레이브는 SPI 직렬 버스를 사용하여 마스터 장치에 병렬로 연결됩니다. 여기에서 모든 클록 라인과 데이터 라인은 함께 연결되지만 각 슬레이브 장치의 칩 선택 핀은 메이저 장치의 별도 슬레이브 선택 핀에 연결되어야합니다.

단일 마스터 및 다중 슬레이브

단일 마스터 및 다중 슬레이브

이 과정에서 각 슬레이브 장치의 제어는 칩 선택 라인 (SS)에 의해 수행됩니다. 칩 선택 핀은 슬레이브 장치를 활성화하기 위해 로우가되고 슬레이브 장치를 비활성화하려면 하이가됩니다.

데이터 전송은 각각 약 8 비트 및 16 비트의 주어진 워드 크기로 마스터 및 슬레이브 장치에서 시프트 레지스터를 사용하여 구성됩니다. 두 장치 모두 링 형태로 연결되어 메이저 시프트 레지스터 값이 MOSI 라인을 통해 전송 된 다음 슬레이브가 시프트 레지스터에서 데이터를 시프트합니다. 데이터는 일반적으로 MSB에서 먼저 이동하고 새 LSB를 동일한 레지스터로 이동합니다.

마스터와 슬레이브 간의 데이터 전송

마스터와 슬레이브 간의 데이터 전송

클록 극성 및 위상의 중요성

일반적으로 데이터의 송수신은 상승 에지와 하강 에지에서 클럭 펄스에 대해 수행됩니다. 고급 마이크로 컨트롤러에는 내부 주파수와 외부 주파수의 두 가지 주파수가 있습니다. MISO, MOSI 및 SCLK 라인을 공유하여 SPI 주변 장치를 추가 할 수 있습니다. 주변 장치는 ADC, DAC 등과 같은 다른 유형이나 속도입니다. 따라서 다른 주변 장치로의 전송간에 SPCR 설정을 변경해야합니다.

SPCR 레지스터

SPCR 레지스터

SPI 버스는 사용할 클럭 형식을 정의하는 클럭 극성 (CPOL) 및 클럭 위상 (CPHA)과 함께 4 가지 전송 모드 중 하나에서 작동합니다. 클록 극성 및 위상 클록 속도는 마스터와 통신하려는 주변 장치에 따라 다릅니다.
CPHA = 0, CPOL = 0 : 첫 번째 비트는 하위 신호로 시작합니다. 데이터는 상승 에지에서 샘플링되고 데이터는 하강 에지에서 변경됩니다.

CPHA = 0, CPOL = 1 : 첫 번째 비트는 낮은 클럭으로 시작합니다. 데이터는 하강 에지에서 샘플링되고 데이터는 상승 에지에서 변경됩니다.

CPHA = 1, CPOL = 0 : 첫 번째 비트는 더 높은 클럭으로 시작합니다. 데이터는 하강 에지에서 샘플링되고 데이터는 상승 에지에서 변경됩니다.

CPHA = 1, CPOL = 1 : 첫 번째 비트는 더 높은 클럭으로 시작합니다. 데이터는 상승 에지에서 샘플링되고 데이터는 하강 에지에서 변경됩니다.

SPI 버스 타이밍

SPI 버스 타이밍

SPI 통신 프로토콜

많은 마이크로 컨트롤러에는 모든 송수신 데이터를 처리하는 내장 SPI 프로토콜이 있습니다. 모든 데이터 모드 작업 (R / W)은 SPI 프로토콜의 제어 및 상태 레지스터에 의해 제어됩니다. 여기에서 SPI 프로토콜을 통해 PIC16f877a 마이크로 컨트롤러에 대한 EEPROM 인터페이스를 관찰 할 수 있습니다.

여기서 25LC104 EEROM은 131072 바이트 메모리로 마이크로 컨트롤러가 2 바이트의 데이터를 EEROM 메모리 SPI 직렬 버스를 통해. 이 인터페이스를위한 프로그램은 다음과 같습니다.

SPI 직렬 버스를 통한 마스터-슬레이브 통신

SPI 직렬 버스를 통한 마스터-슬레이브 통신

#포함
S 비트 SS = RC ^ 2
Sbit SCK = RC ^ 3
Sbit SDI = RC ^ 4
Sbit SDO = RC ^ 5
Void 초기화 EEROM ()
Void main ()
{
SSPSPAT = 0x00
SSPCON = 0x31
SMP = 0
SCK = 0
SDO = 0
SS = 1
EE_adress = 0x00
SPI_write (0x80)
SPI_write (1234)
SS = 0
}

SPI 프로토콜의 장점

  • 전이중 통신입니다.
  • 고속 데이터 버스 10MHz입니다.
  • 전송하는 동안 8 비트로 제한되지 않습니다.
  • 하드웨어 인터페이싱은 SPI를 통해 간단합니다.
  • 슬레이브는 마스터 클럭을 사용하며 귀중한 오실레이터가 필요하지 않습니다.

이것은 SPI 통신에 관한 모든 것입니다. 마이크로 컨트롤러와 인터페이스 . 이 기사에 대한 귀하의 관심과 관심에 감사 드리며이 기사에 대한 귀하의 관점을 기대합니다. 또한 인터페이싱 코딩 및 지원에 대해서는 아래에 의견을 말하여 요청할 수 있습니다.

사진 크레딧 :