do{학습}while

SPI(Sierial Perpheral Interface) 본문

임베디드 프로그래밍/통신 프로토콜

SPI(Sierial Perpheral Interface)

하이오야이 2025. 1. 12. 19:40

SPI는 마이컴과 주변 장치(센서, 디스플레이, 메모리 장치) 간에 데이터를 교환하기 위한 고속 동기식 직렬 통신 프로토콜입니다.

SPI의 주요 특징

고속

  • SPI는 MHz부터 수십 MHz까지 클럭 속도에 데이터 송수신이 가능합니다.
  • Full-Duplex 방식으로 동시에 데이터 송수신이 가능합니다.

동기식

  • 클럭 신호에 따라 데이터 전송 및 명령 수행되는 통신 방식을 의미합니다.

직렬

  • 클럭 신호 한 주기(1 tick)에 1비트를 전송할 수 있습니다.
  • 반대 개념 : 병렬 = 한 주기에 여러 비트의 데이터를 전송할 수 있습니다.

마스터-슬레이브

  • SPI는 하나의 마스터, 여러개의 슬레이브 간에 통신합니다.
  • 마스터 : 통신 타이밍을 맞추기 위한 클럭을 생성합니다.
  • 슬레이브 : 타이밍에 따라 데이터를 송수신 합니다.

SPI 신호 라인

 

SCLK(Serial Clock)

  • 마스터가 생성하는 클럭 신호로 슬레이브와 통신 속도를 동기화합니다.

MOSI(Master Out Slave In)

  • 마스터가 슬레이브에게 데이터를 전송하는 데이터 라인입니다.

MISO(Master In Slave Out)

  • 슬레이브가 마스터에게 데이터를 전송하는 데이터 라인입니다.

CS(Chip Select) 또는 SS(Slave Select)

  • 특정 슬레이브 장치를 활성화하는 신호
  • 일반적으로 슬레이브를 선택할땐 Active Low 상태에서 선택 됩니다.

데이터 전송 방식

COPI = Controller Out Peripheral In

CIPO = Controller In Peripheral Out

 

SCK 핀에서 클럭을 생성한다고 언급했다. 생성된 클럭에서 위에 이미지에서는 rising edge 타이밍에 맞춰 데이터를 전송합니다.

SPI는 직렬 통신 프로토콜이기 때문에 rising edge에서 1bit만 전송하는 것을 확인할 수 있습니다.

 

1(Master) : N(Slave) 연결

위에 그림에서 볼 수 있듯이 SPI통신은 하나의 Master에서 여러개의 Slave를 연결할 수 있습니다. 하지만! 연결하고 싶은 슬레이브 갯수만큼 SS핀이 존재해야합니다.