뽕구의 개발일지

[통신] SPI 통신 본문

개발 일지/통신

[통신] SPI 통신

뽕구 2023. 8. 4. 01:24
728x90
반응형

 

 

SPI

SPI (Serial Peripheral Interface)는 모토로라에서 개발한 주변 장치간 근거리 고속 시리얼 통신 인터페이스로, 보통 MCU와 ADC, EEPROM, SD CARD 등과 통신하는데 사용됩니다. 송수신 선이 따로 존재하는 덕분에 전이중 방식(Full-Duplex)을 사용하고, 반이중인 I2C보다 속도가 빠릅니다. 대신, Slave가 늘어나면 그만큼 Slave 선택선 (SS)도 늘어나야하는 단점은 있죠.

SPI 구조는 아래와 같습니다.

SPI 구조

 

아래는 SPI에 사용되는 Pin과 설명입니다.

의미 설명
Matser In Slave Out MISO Slave에서 Master로 보내는 신호
Master Out Slave In MOSI Master에서 Slave로 보내는 신
Slave Clock SCLK 마스터로부터 나오는 Clock 신호
Slave Select SS 마스터로부터 나오는 Slave 선택 신호

 

SPI 프로토콜

SPI 통신은 SCLK의 Edge에 따라 Data Sampling 시점을 설정할 수 있습니다.

SCLK의 Edge에 따른 Data Sampling Mode

 

① Master가 SS 신호의 상태를 High에서 Low로 내려 Slave를 선택합니다. SS선은 Slave마다 각각 존재하기 떄문에 Low로 떨어지면 Slave는 자신이 선택되었다는 것을 알 수 있습니다.

 

② Master는 SCLK 신호를 발생시키며, Master Out Slave In 라인을 통해 Slave에 데이터를 전송합니다.

 

③ Slave는 Master의 신호를 수신 후 Master In Slave Out 라인을 통해 응답합니다.

 

 데이터 송수신이 끝나면 Master는 SS 라인을 HIgh로 올려 마무리됩니다.

 

 

SPI 스코프 찍어보기

아래는 Atmega2560 2대를 이용해 SPI 통신을 처리하고, 오실로스코프로 Trigger한 파형입니다.

 

SPI 통신 파형

 

 

 


Mega2560에서 아래 빨간 네모 안 pin 들이 SPI 통신을 담당하고 있습니다.

Mega2560 SPI 포트

 

 

추후에는 CAN 통신도 다뤄볼 예정입니다. 읽어주셔서 감사합니다.

728x90
반응형

'개발 일지 > 통신' 카테고리의 다른 글

[통신] 시리얼 통신 역사  (0) 2023.08.26
[통신] I2C 통신  (0) 2023.08.04