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비트씩 밀어내면서 데이터 수신
- 클록에 맞춰 1바이트 데이터 전송 완료
클록의 역할
- 데이터가 전달되는 시점을 알려주고, 전달된 데이터가 안정적인 상태를 유지할 때 수신 장치가 수신된 데이터를 검사하도록 알려주기 위해 사용
- 클록의 어느 부분에서 데이터 전송이 완료되었는지에 따라 수신 장치가 데이터를 읽는 시점이 달라짐
- 이를 해결하기 위해 클록의 극성(CPOL), 클록 위상(CPHA) 사용
클록극성 ( CPOL )
- CPOL(Clock Polarity) : SPI 버스가 유휴 상태일 때 클록 값을 결정
- 0 : 유휴 상태일 때 SCK는 LOW
- 1 : 유휴 상태일 때 SCK는 HIGH
* 유휴 상태 = idle 상태
클록위상 ( CPHA )
- CPHA(Clock Phase) : 데이터 샘플링 시점 결정
- 0 : 비활성 상태에서 활성 상태로 바뀌는 엣지에서 샘플링
- 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 |
댓글