일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- atmega
- CubeIDE
- 코테
- STM32CubeIDE
- sort
- GPIO
- 아두이노
- cancellationtoken
- STM32
- C++
- SPXL
- STM32 IDE
- 정렬알고리즘
- c#
- Mega2560
- 아두이노 통신
- S&P500
- STM32 라인업
- Avr
- flag 변수
- iscancellationrequested
- STL
- STM32 개발환경
- 알고리즘
- NUCLEO-F103RB
- 객체지향
- Microchip Studio
- 코딩테스트
- 정렬
- 백준
- Today
- Total
뽕구의 개발일지
[통신] SPI 통신 본문
SPI
SPI (Serial Peripheral Interface)는 모토로라에서 개발한 주변 장치간 근거리 고속 시리얼 통신 인터페이스로, 보통 MCU와 ADC, EEPROM, SD CARD 등과 통신하는데 사용됩니다. 송수신 선이 따로 존재하는 덕분에 전이중 방식(Full-Duplex)을 사용하고, 반이중인 I2C보다 속도가 빠릅니다. 대신, Slave가 늘어나면 그만큼 Slave 선택선 (SS)도 늘어나야하는 단점은 있죠.
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 시점을 설정할 수 있습니다.
① 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한 파형입니다.
Mega2560에서 아래 빨간 네모 안 pin 들이 SPI 통신을 담당하고 있습니다.
추후에는 CAN 통신도 다뤄볼 예정입니다. 읽어주셔서 감사합니다.
'개발 일지 > 통신' 카테고리의 다른 글
[통신] 시리얼 통신 역사 (0) | 2023.08.26 |
---|---|
[통신] I2C 통신 (0) | 2023.08.04 |