[SPI란?]
- 동기식(Synchronous) 시리얼 통신 방식
- 데이터 수신의 타이밍을 위하여 Clock 라인을 사용
[SPI와 I2C의 차이]
- I2C는 무전기와 비슷한 개념이라면, SPI는 전화와 비슷한 개념이다.
- 즉, SPI는 전이중 통신 (양방향 통신이 가능한 것)이고 전화(내가 말하면서 들을 수 있다는 점)와 비슷하다.
[SPI 인터페이스]
1) SCLK
- Serial Clock(직렬 클럭)으로 마스터에서 출력하여 슬레이브로 입력해준다. SPI 통신의 주기를 SCLK로 설정할 수 있다. 동기화 신호이며 통신 Clock이라 생각하면 된다.
2) MOSI
- Master Output Slave Input, 말 그대로 마스터 출력, 슬레이브 입력이다.
- 실제 마스터에서 슬레이브로 데이터를 먹일 때 MOSI를 통해 데이터를 준다.
3) MISO
- Master Input Slave Output, 슬레이브 출력, 마스터 입력이다.
- 보통 MOSI를 통해 슬레이브에 명령 DATA가 들어오면 MISO를 통해 슬레이브에서 마스터로 응답 DATA가 출력된다.
4) CS
- Chip Select, 보통 SS 핀 즉 Slave Select로 슬레이브를 선택할 때 사용된다.
<인터페이스란?>
- 전기 신호의 변환으로 중앙 처리 장치와 그 주변 장치를 서로 잇는 부분. 또는, 그 접속 장치.
- 키보드나 디스플레이 등처럼 사람과 컴퓨터를 연결하는 장치.
[SPI 1 : N 통신]
- SCLK로 동기식 클럭을 만들어주며 CS를 이용하여 Slave를 선택하여 통신할 수 있다.
- SPI는 한 개의 Slave Device와 통신만 가능하며 CS를 LOW로 주면 해당 장치와 통신할 수 있다.
- 한마로 통신하지 않는 Slave는 CS에 High를 주고 통신하는 Slave에만 CS에 LOW를 주면 된다.
[SPI 설정]
- 타이밍도를 보면 CS가 HIGH일 때는 동작을 하지 않도록 동기 클락도 생성이 되지 않고 CS가 LOW가 되면 동기 클락이 생성되며 데이터를 주고받는다.
- 즉, 마스터에서 CS에 LOW를 주어 제어 Enable을 시킨 뒤, clock을 생성하여 동기를 맞춰주고 DATA를 주고받는 통신방식이다.
- SPI 통신방식을 사용하는 CHIP은 모두 이러한 방식으로 사용한다. 반드시 위의 나와있는 4핀이 필요하며 마스터에서는 출력 핀으로 CS, SCLK, MOSI 핀 입력으로는 MISO핀이 할당되어있다.