본문 바로가기
Embedded system/Microcontroller

SPI(Serial Peripheral Interface)

by 은빛초코 2021. 9. 16.

SPI란

  • UART와 같은 전이중 방식의 시리얼 통신
  • 마스터 – 슬레이브 구조 가짐
  • 일대다(1:N) 통신이 가능
  • 마스터 -> 연결 시작 후 통신을 제어
  • 연결이 성립되면 두 개의 데이터 선을 통해 데이터 주고 받음
  • 동기화의 문제를 해결하기 위해 SPI는 송신과 수신이 항상 동시 진행
  • 마스터 장치가 제공하는 클록에 의해 데이터 전송 이루어짐
  • 마스터와 슬레이브 장치의 데이터 버퍼가 원형 큐 구조를 가짐

SPI에서 사용하는 핀

  • MOSI(Master Output Slave Input) : 마스터 -> 슬레이브 데이터 전송
  • MISO(Master Input Slave Output) : 슬레이브 -> 마스터 데이터 전송
  • SCK(Serial Clock) : SPI 동기화를 위한 클록 전송
  • SS(Slave Select) 혹은 CS(Chip Select) : 여러 개의 슬레이브 중 마스터가 데이터를 주고받을 슬레이브를 선택할 때 사용 (선택O LOW / 선택X HIGH) 

SPI 일대일 (1:1) 연결
SPI 일대다 (1:N) 연결


SPI 데이터 전송 과정

  1. 마스터는 슬레이브에게 클록에 맞춰 1비트 데이터를 하나씩 전달
  2. 슬레이브는 가지고있던 데이터를 1비트씩 밀어내면서 데이터 수신
  3. 클록에 맞춰 1바이트 데이터 전송 완료

클록의 역할

  • 데이터가 전달되는 시점을 알려주고, 전달된 데이터가 안정적인 상태를 유지할 때 수신 장치가 수신된 데이터를 검사하도록 알려주기 위해 사용
  • 클록의 어느 부분에서 데이터 전송이 완료되었는지에 따라 수신 장치가 데이터를 읽는 시점이 달라짐
  • 이를 해결하기 위해 클록의 극성(CPOL), 클록 위상(CPHA) 사용

클록극성 ( CPOL )

  • CPOL(Clock Polarity) : SPI 버스가 유휴 상태일 때 클록 값을 결정
    • 0 : 유휴 상태일 때 SCK는 LOW
    • 1 : 유휴 상태일 때 SCK는 HIGH

* 유휴 상태 =  idle 상태

 

클록위상 ( CPHA )

  • CPHA(Clock Phase) : 데이터 샘플링 시점 결정
    • 0 : 비활성 상태에서 활성 상태로 바뀌는 엣지에서 샘플링
    • 1 : 활성 상태에서 비활성 상태로 바뀌는 엣지에서 샘플링

CPHA = 0 인 경우 데이터 전송 다이어그램
CPHA = 1

 

 

 

 

 

 

 

 

 

 

 

 


 

자료참고 : 따라 하면서 배우는 마이크로컨트롤러 - 한빛아카데미

'Embedded system > Microcontroller' 카테고리의 다른 글

ATmega2560의 ADC (2)  (0) 2021.10.26
ATmega2560의 ADC (1)  (0) 2021.10.26
ATmega2560의 EEPROM을 SPI 통신으로 데이터 읽고 쓰기  (0) 2021.09.16

댓글