SPI(Serial Peripheral Interface)란?

김지성·2022년 7월 20일
1

Embedded

목록 보기
11/21

1.1 SPI 통신이란?

  • SPI 통신의 기본
    1) DATA를 보낼 수 있는 선과 CLK을 보낼 수 있는 선이 존재
    2) MASTER & SLAVE 모드로 동작하고 마스터가 데이터를 초기화 시키고,
    "Chip select"라인을 통해 슬레이브를 선택할 수 있게 된다.
    3) 반이중 방식, 전이중 방식(기본)

    전이중 방식 : 양방향 통신이 가능(내가 말하면서 들을 수 있음 = 전화)

  • SPI 통신의 문제점
    1) 마스터가 슬레이브한테 말을 거는데 어떤 슬레이브한테 말하는건지 모른다.
    2) 마스터가 보내는 신호나 슬레이브가 보내는 신호가 같아서 어떤 사람이 신호를 보낸건지 알수가 없다.

    <해결>
    1) CS선을 이용하여 마스터가 어떤 슬레이브에게 말할건지 결정할 수 있음
    2) 마스터와 슬레이브가 연결된 선 중 반드시 마스터가 먼저 말하고 슬레이브가 응답할 수 있는 선을 만들었다.


  • SPI 기본 구성

SCLK(Serial Clock): 직렬 클럭을 Master에서 출력하여 Slave로 입력해준다. SPI의 통신주기를 SCLK로 설정해주면 된다.

MOSI(Master Output Slave Input) : Master 출력, Slave 입력으로, Master에서 Slave로 데이터를 출력할 때 MOSI를 사용한다.

MISO(Master Input Slave Output) : Slave 출력, Master 입력으로, MOSI를 통해 Slave에 데이터가 들어오면 MISO를 이용하여 Master에 데이터를 출력한다.

CS(Chip Select) : Slave를 선택할 때 사용된다.(Master는 여러 개의 Slave 중에서도 하나를 선택하여 통신을 하게 된다.)


  • SPI 1:1 통신
    1) A와 B가 각각 데이터를 보낼 수 있는 선 2개
    2) CLK을 보낼 수 있는 선 1개
    기본적으로 3개의 선이 필요하다.
  • SPI 1:N 통신

SPI 통신에는 지켜야할 약속이 두 가지 있다.

1) Master가 먼저 말을 해야 Slave가 응답할 수 있다. Slave가 먼저 말할 수 없다.

2) Master가 누구에게 말하는지 알 수 없었지만, CS가 생긴 이후로 누구한테 말하는건지 객관적으로 알 수 있게 됐다. (CS를 LOW로 주면 해당 장치와 통신할 수 있고, HIGH를 주면 통신을 하지 않는다.)


1.2 SPI 통신 Mode

1) Full-Duplex(전이중)

DATA선 2개(MISO, MOSI), SCK선 1개, NSS선 1개

2) Half-Duplex (반이중)

DATA선 1개(MOSI), SCK선 1개, NSS선 1개

3) Receive Only(수신전용)

DATA선 1개(MISO), SCK선 1개, NSS선 1개

4) Transmit Only(송신전용)

DATA선 1개(MOSI), SCK선 1개, NSS선 1개

5) Hadware NSS

  • 하드웨어가 자동으로 LOW로 떨어지게 만듬(1:1 일땐 상관없지만 1:N은 신호가 혼잡해진다)
  • NSS는 Disalbe되는 경우가 많다.

5) Master로 사용할건지 Slave로 사용할건지 선택 가능

1.2.1 SPI 통신 Option

1) Data Size(8bit, 16bit)

  • 신호를 한번 보낼때 몇 bit씩 보낼 것인지
  • 8bit를 보낼건지 16bit를 보낼건지는 datasheet따라 달라진다

    STB : CS(1일 경우 무반응, 0일 경우 반응)
    DI/O : b0~b7(한 주기에 8bit 전송)

2) Frist Bit(MSB, LSB)

MSB : 최상위 비트를 전송할 경우
LSB : 최하위 비트를 전송할 경우

(datasheet를 보면 b0, b1, b2, b3...b7로 표현되어 있는데 0번 비트부터 7번 비트까지 순서대로 전송하겠다는 뜻이다. 즉 우리가 사용하는 FND는 LSB를 따른다.)

3) Clock Prescaler

마스터와 슬레이브가 어떤 속도로 SPI통신을 해야하는지 결정해줘야 한다. 장치마다 다르기 때문에 데이터 시트를 참조하여 결정해주면 된다.

4) Clock Porarity

위 데이터시트를 보면 CLK 부분이 존재하는데, HIGH에서 시작하는지 LOW에서 시작하는지 설정해준다
(이거도 datasheet를 보고 설정해줘야 한다)

5) Clock Phase(1 edge, 2 edge)



2 Edge


2 Edge

5) CRC Calculation

오류 검출(SPI랑 관련 없음)

profile
1139일 남음

2개의 댓글

comment-user-thumbnail
2022년 7월 20일

잘보고있어요! ㅎㅎ

1개의 답글