ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SPI 통신
    카테고리 없음 2025. 5. 14. 19:48

    SPI (Serial Peripheral Interface)의 약자로 근거리 통신에서 많이 사용한다.

    위 그림과 같이 선이 한개라면 양쪽에서 한번에 보내지못하고 한쪽에서 받은 후에 보낼 수 있다.

    SPI는 데이터 통신을 할때 4가닥의 선을 기준(보내는선, 받는선, 클럭선, CS선)으로 하며, 전압차이를 이용하는게 기본이다.

     

    타임베이스란 시간을 쪼개서 서로 약속을 하는 것이다. 주로 시리얼 통신 RS485, RS232에서 사용한다.

    예를 들어 bps 9600이면 1초를 9600으로 쪼갠 것이다. 만약 7개의 간격동안 쭉 HIGH를 유지했다면 1111 1110이다.

    클럭 베이스는 클럭을 기준으로 HIGH, LOW를 구분한다.

    기본적으로 데이터를 주고받는 선이 하나 무조건 있어야한다. 또한 클럭선도 반드시 있어야한다.

    SPI의 기본은 전이중 방식으로, 보내는 선과 받는 선이 따로 구분되어 있다.

    검정색 선 두개는 데이터 선으로, 하나는 A만 쓰는 것이고 하나는 B,C,D가 같이 쓰는것이다.

    빨간선은 클럭 선이다.

    이렇게 될 경우 문제가 2가지 있는데, 첫번째는 A가 말했을 때 누구한테 얘기했는지 B,C,D 입장에서는 모른다는 것이다.

    또 하나는 A가 말한걸 B가 들어도 C가 말한건지 D가 말한건지 구분을 못한다. 말했다는게 전기적 신호를 받은것이다.

    그래서 SPI 통신에서는 마스터와 슬레이브 관계를 구분하기로 약속했다.

    슬레이브는 말하는 권한이 없다. 

    정리하면 SPI 통신의 규격은 1:다 관계이지만, 1은 무조건 마스터여야 한다.

     

    CS선 : Chip Select로 슬레이브를 지정해서 말한다. 이때 평상시는 HIGH 상태이다가 특정 슬레이브를 지정해서 말할때 LOW 상태로 낮아진다.

    그러면 I2C는 어떻게 이루어져있을까? I2C는 선 두개(데이터선, 클럭선)로 연결 돼있다. 반이중 방식을 사용하며 SPI에서는 특정 칩을 선택해서 Low로 낮춘다면, I2C는 주소 체계를 사용해서 패킷에 내 주소 데이터를 담아서 보낸다. 

    항목 SPI I2C
    선 개수 보통 4개 2개
    슬레이브 선택 CS 핀 사용 주소 사용
    통신 속도 빠름 느림
    회선 공유 힘듦 (CS 핀 여러 개 필요) 쉬움 (2개 선으로 모두 공유 가능)

    Full-Duplex는 전이중으로 동시에 말을 주고받을 수 있다. (MOSI + MISO) 그래서 속도가 빠르다.

    Half_Duplex는 반이중으로 한쪽의 말이 끝나야 말을 할 수 있다. (SDA) (속도가 빠르지 않음)

    Receive Only는 수신전용, Transmit Only는 송신전용이다.

    Full-Duplex를 선택하면 3개 (데이터선 2개 + 클럭선 1개)가 활성화된 모습이다.

    Half-Duplex를 선택하면 2개 (데이터선 1개 + 클럭선 1개)가 활성화된 모습이다.

     

    밑에 NSS선은 CS선인데 특정 슬레이브를 제어할때 사용한다. 그러나 한개밖에 제어하지 못하기때문에 사용하지않고 보통 GPIO로 제어를 한다.

    Motorola는 SPI통신을 최초로 설계하고 만든곳이 Motorola이고,

    Data Size는 한번에 몇 비트씩 보낼것인가? (8bits or 16bits) -> 위 DI/O를 보면 b0 ~ b7까지 총 8비트를 보낸다. 이럴 경우 8비트를 선택하면 된다.

    MSB와 LSB의 차이는 0001 1010이라는 8비트가 있으면 MSB방식을 사용하면 가장 최상위를 먼저 보내고, LSB를 사용하면 최하위를 먼저 보낸다. 위 사진의 경우, b0부터 보내기때문에 MSB 방식이라 볼 수 있다.

    Baud Rate는 클럭 속도를 의미하고, Clock Polarity는 극성을 의미한다.

    클럭이 Low로 평상시 있을수도있고, High로도 평상시 있을 수 있다. 이건 데이터 시트를 보고 결정해야 한다.

    Edge는 1Edge가 있고, 2Edge가 있는데 1Edge는 하강하는 시점에 데이터를 보게 되고, 2Edge는 상승하는 시점에 본다.

    위 그림의 경우, 위로 올라갈때를 데이터 상태를 체크하기때문에 2Edge로 볼 수 있다.

Designed by Tistory.