[Embedded] SPI 통신

강지원·2025년 3월 12일

STM32 강의

목록 보기
26/33

1. SPI(Serial Peripheral Interface)

: 고속직렬통신 방식 중 하나로, 칩과 칩 간에(근거리) 데이터를 주고 받기 위한 통신방법이다.

하나의 마스터 기기와 하나 이상의 슬레이브 기기를 연결하여 사용한다.

통신 구분방법

  1. TIME 베이스 : BPS 를 이용하여 클럭을 구분한다. (R485, RS232)
  2. CLK : 기준 클럭을 이용하여 클럭을 구분한다.

SPI 통신은 클럭을 기준으로 구분하므로 SCK 선이 필요하다.

SPI 통신은 기본적으로 데이터 송신을 위한 2개의 선 + 클럭 선 1개, 칩 셀렉 선 1개로, 총 4개의 선이 필요하다.

SPI통신은 기본적으로 전이중방식을 사용한다. (반이중방식을 사용할 수도 있다.)

MOSI : MASTER OUT SLAVE IN, 마스터 -> 슬레이브 데이터 전송
MISO : MASTER IN SLAVE OUT, 슬레이브 -> 마스터 데이터 전송
SCK : 마스터가 생성한 클럭 신호
CS(SS) : 칩셀렉 선, 슬레이브를 선택하기 위한 선 (1 : N), 낮은신호 활성화

1) SPI 통신 특징

  • 전이중 통신
  • 마스터 - 슬레이브 구조
  • 클럭 신호 기반의 동기식 통신(클럭신호를 통해 송수신 타이밍 동기화)

2) SPI 통신 동작 방식

  1. 마스터가 클록 신호 생성(상승 Edge or 하강 Edge)
  2. 마스터가 SS(Chip Select) 신호를 LOW로 설정
  3. 마스터가 MOSI를 통해 데이터 전송(동시에 슬레이브에서 MISO를 통해 응답가능)
  4. 통신 종료후 SS를 High로 설정(슬레이브 비활성화)

3) SPI 장단점

장점

  • 빠른 전송속도(수 MHz ~ 수십 MHz)
  • 전이중 통신 지원(동시 송수신 가능)
  • 간단한 하드웨어 구조

단점

  • 마스터-슬레이브 방식으로 다중 마스터 통신 불가능
  • 슬레이브가 많아질 수록 칩 선택 선이 많이 필요
  • 장거리 전송에 부적합

4) SPI 와 다른 통신 방식 비교

통신방식데이터전송속도전송방식연결 라인 수장점단점
SPI빠름동기식최소 4개빠른속도, 전이중통신연결라인 증가
I2C보통동기식2개(SDA,SCL)라인수 적음, 멀티마스터가능속도제한(최대 수백 KHz)
UART느림비동기식2개(TX,RX)간단한 하드웨어 구성속도제한, 전이중 미지원

I2C

데이터 통신선 1개, SCK선 1개

  • 반이중통신
  • CS가 없는대신 주소를 이용해서 소프트웨어적으로 1:다를 구성함.

2. SPI 옵션 설정

1) MODE

FULL-DUPLEX : 전이중(최소 선 3개)
HALF-DUPLEX : 반이중(최소 선 2개)
RECEIVE ONLY : 수신전용(최소 선 2개)
TRANSMIT ONLY : 송신전용(최소 선 2개)

최소는 클럭을 사용하지 않는경우

2) Hardware NSS Signal

cs를 어떻게 사용할 것인가? 하드웨어적으로 자동으로 low를 만들어주는 것
하지만 1 : 1에서만 사용이 가능하기 때문에 사용을 잘 하지 않는다

3) 환경설정 변수기능

Frame Format : motorola = spi 통신기능을 만든 회사

Data Size : 8bits , 16bits : 한 번 데이터를 보낼 때 몇비트씩 보낼것인가(데이터 시트에 따라 결정이 된다)

Firsr Bit : MSB First, LSB First : 데이터를 0011 0100을 왼쪽(최상위)부터 보내는 방법(MSB), 오른쪽(최하위)부터 보내는 방법(LSB)

  • 데이터시트를 확인하면 알 수 있음(b0부터 시작이면 LSB)

Prescaler(for Baud Rate), Baud Rate : 칩에관한 설정이므로 별로 상관없음
빠르면 좋지만 데이터시트에 속도제한이 있으니까 확인해야 함.

Clock Polarity : LOW, HIGH : 클럭의 기본값

Clock Phase : 1 Edge, 2 Edge : 1클럭에 엣지가 2개 있는데 무엇인지.


CRS Calculation : Disabled, enabled : spi와 관련된 것이 아님
NSS Signal Type : Software : gpio를 사용하겠다는 것

0개의 댓글