SPI
SPI란?
SPI (Serial Peripheral Interface)는 클록에 동기시켜 데이터의 통신을 실행하는 동기 방식 시리얼 통신의 일종으로, EEPROM이나 센서와의 데이터 통신에 자주 사용됩니다.
SPI는 클록 (SCLK), 데이터 입력 (SIN), 데이터 출력 (SOUT) 및 칩 셀렉트 (CS)의 4개 신호선을 사용하여 통신합니다.
그리고, 통신 시에는 마스터와 슬레이브로 역할을 분담합니다. 클록은 반드시 마스터에서 출력되고, 입력과 출력은 클록에 동기되어 실행됩니다.
마스터 1개에 대해 슬레이브는 여러 개 접속할 수 있지만, 이러한 경우 마스터 측에는 접속하는 슬레이브의 수만큼 CS 신호선을 구비해야 합니다.
마스터와 슬레이브의 접속은 아래 그림과 같습니다.
SPI 통신의 개요
마스터에서 슬레이브로 데이터를 송신할 때, 마스터에서 슬레이브에 클록을 송신합니다. 마스터는 클록과 데이터를 동기시켜 송신합니다. 슬레이브는 클록과 동기하여 수신합니다.
슬레이브에서 마스터로 데이터를 송신할 때에도, 마스터에서 슬레이브에 클록을 송신합니다. 슬레이브는 클록과 데이터를 동기시켜 송신합니다. 마스터는 클록과 데이터를 동기시켜 수신합니다.
마스터와 슬레이브가 데이터를 송수신할 때, 마스터에서 슬레이브에 클록을 송신합니다. 마스터와 슬레이브는 클록과 동기되어 송수신합니다.
이러한 동작은 SPI 통신이 데이터의 송신과 수신을 동시에 실행하기 때문에 가능한 것입니다.
클록에 동기되어, 송신 측의 데이터는 시프트 레지스터의 최상위 bit (MSB)에서 SOUT을 통해 출력되고, SIN에서 입력된 데이터는 시프트 레지스터의 최하위 bit (LSB)에 격납됩니다. 최하위 bit까지의 데이터가 전송되면 완료됩니다.
이와 같은 구성이므로, 마스터와 슬레이브의 통신을 실행하면 데이터가 교체됩니다.