[아두이노] [강좌] 32. SPI 통신 (1) - SPI 통신이란 무엇인가

또 나왔다. ㅇㅇㅇ이란 무엇인가.


SPI Serial Peripheral Interface의 약자로 해석하면 직렬 주변기기 인터페이스’. ????


 

(인터페이스는 우리 말로 뭐라 해야해?)brown_and_cony-78



 

SPI 1:N 통신을 지원하는 동기식 통신 방식이다동기식 통신 방식이 뭔지는 이제 설명 안해도 알겠지요?

 


SPI 통신을 위해서는 반드시 하나의 마스터와 하나 이상의 슬레이브 기기가 존재해야 한다통신을 위해서는 최소 4개의 선이 필요한데, MISO, MOSI, SCK, SS가 그것이다하나씩 살펴보면,

 

 

- MOSI : Master Out, Slave In – 마스터에서 데이터를 출력하기 위한 신호 선

- MISO : Master In, Slave Out – 슬레이브에서 데이터를 출력하기 위한 신호 선

- SCK : Clock 신호 선

- SS : Slave Select – 데이터를 송수신할 슬레이브를 선택하기 위한 신호 선

 

 

데이터를 전송하고 수신하는 선이 따로 있기 때문에 전송과 수신이 동시에 이루어질 수 있어서 송수신이 하나의 선으로 이루어지는 I2C 통신에 비해 속도가 빠르다그리고 마스터에서 출력하는 선과 슬레이브에서 출력하는 선이 정해져 있어 시리얼 통신처럼 Rx, Tx 선이 맨날 헷갈릴 일도 없다난 맨날 헷갈리거든

 

 

 

속도가 빠르다는 장점 때문에 SPI는 주로 빠른 데이터 전송 속도를 필요로 하는 데에 많이 사용된다대표적으로 이더넷 통신이나 SD 쉴드 같은.



SPI 통신 역시 I2C 통신처럼 하나의 마스터에 여러 개의 슬레이브가 연결될 수 있기 때문에슬레이브를 선택하기 위한 솔루션이 필요하게 되는데, SPI는 그 방법으로 SS 신호를 사용하고 있다. SS Slave Select라는 뜻 그대로 슬레이브를 선택하는 선으로하나의 슬레이브에 하나의 SS 선을 사용한다.


2a9919c875d142ce95d38b9a6e661ea4.jpg


요렇게. SCK MOSI, MISO 신호 선은 공통으로 사용한다.

 

 

여러 개의 슬레이브 기기가 마스터에 연결될 수 있지만슬레이브 개수만큼 SS 신호 선이 늘어나게 되므로 여러 개의 슬레이브가 존재할 때에는 물리적으로 비효율적이다핀 개수가 여유 있으면 상관없겠지만보통은 없엉.

 

 

동기화 통신 방식이므로 통신에는 클럭 신호가 사용되며클럭 신호는 마스터에서만 출력된다다음은 마스터와 슬레이브가 데이터를 주고 받는 신호를 그림으로 나타낸 것이다.


4c2502c045a7be61613a6c2a679c1459.png


(출처 :  )




.. 스파크펀 홈페이지에 이렇게 자세한 설명이 있는 줄 몰랐네아두이노 홈페이지보다 더 자세히 설명되어 있음그림까지괜히 PPT로 힘들게 작업했..ㅜㅜ

 

 

아무튼데이터 송수신을 위해 제일 먼저 SS 신호로 슬레이브를 선택한 후 클럭 신호를 생성하고클럭 신호에 맞춰 데이터를 전송한다.

 

위 그림에서는 마치 데이터 전송 후 수신 받는 것처럼 되어 있지만사실은 데이터를 전송하는 중에도 MISO 신호 선으로 슬레이브의 데이터가 수신될 수 있다전송과 수신이 동시에 이루어질 수 있다는 것이 SPI의 가장 큰 장점!



그림에서는 클럭 신호가 HIGH로 바뀔 때 데이터를 읽는 것으로 되어 있지만, SPI 통신에서는 HIGH로 바뀔 때 데이터를 읽을 지 LOW로 바뀔 때 데이터를 읽을 지 지정할 수 있다그리고 클럭 신호가 HIGH로 먼저 시작하는지, LOW로 먼저 시작하는지 역시 결정할 수 있다 . 물론 슬레이브와 방식이 동일해야 한다.

 

 

제일 중요한 핀!

 

아두이노 메가(Mega 2560/ADK)의 경우 SPI 통신을 위한 핀으로 50~53번 핀이 지정되어 있고우노(Uno)의 경우 “ICSP”라는 포트로 따로 나와있다메가에 있는 “ICSP” 포트 역시 50~53번과 연결되어 SPI 포트로 사용할 수 있다.



 9f098d48157844978e8aa8c8816215ba.jpg

우노(Uno)

fa0715963e545d039820154a0b8d4532.jpg
메가(Mega 2560/ADK)

 



ICSP 포트의 핀 순서는 다음과 같다.


06dcd28907758b910ebc90da493fa1ce.png


위 순서대로 보드에 표시해보면,


d26f0fd17f4e812098ff248145ecf519.png

요렇게 된다. 핀 포트의 왼쪽 상단에 점으로 표시된 핀이 1번 핀이라는 것에 유의하자.

 

 

메가에서 53번 핀이 SS 핀으로 지정되어 있지만사실 SS 핀은 어느 핀을 사용해도 상관 없다. 53번을 SS라고 지정해둔 건 참고용이랄까아두이노에서 제공하는 SPI 예제를 보면 53(우노의 경우에는 10)을 주로 SS 핀으로 사용하는 것을 알 수 있다보통은 변경할 수 있으므로 아무 핀이나 사용해도 상관 엄슴.

 


여기까지 정리해보면.



 

- SPI 통신은 MOSI, MISO, SCK, SS 핀으로 이루어지는 동기식 직렬 통신 방식이다.

데이터 출력 신호 선과 입력 신호 선이 따로 있어 동시에 송수신이 가능하다.

슬레이브를 SS 신호로 선택한다.

그래서 I2C 통신보다 속도가 빠르다는 장점

- SS 신호 선을 이용하면 여러 개의 슬레이브를 연결할 수 있지만 슬레이브 개수만큼 SS 신호 선이 필요하므로 슬레이브가 많아질 경우에는 비효율적 

 

 

 

다음 시간에는 실제로 SPI 통신에 사용되는 함수들에 대해 알아보자그럼 안녕!

 

(이번 강좌가 좀 짧아 보이는 건 기분 탓…)brown_and_cony-80

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

임베디드 보드

번호 제목 글쓴이 날짜 조회수
118 아두이노 ESP32 Analog Inputs (ADC) +4 icon 양재동메이커 02-12 15,883
117 아두이노 TIP : Serial의 Port가 Open 시점 확인 icon 양재동메이커 01-21 12,795
116 아두이노 ESP32 Boot Mode icon 양재동메이커 12-28 12,586
115 아두이노 아두이노 에러 리스트(Arduino Error list) icon 양재동메이커 11-24 17,515
114 아두이노 ESP32 main.cpp +1 icon 양재동메이커 11-19 12,969
113 아두이노 ESP32 EEPROM 와 IR Remote icon 양재동메이커 08-06 12,878
112 아두이노 Learn ESP32 icon 양재동메이커 06-25 12,447
111 라즈베리 파이 라즈베리 파이 (Raspberry Pi) 기초 icon 양재동메이커 06-19 13,867
110 라즈베리 파이 (동영상 강의) 라즈베리 파이 강좌 Link icon 양재동메이커 06-17 13,039
109 STM32 / MBED [MED] Switch debouncing icon HellMaker 12-30 14,975
108 기타 [타이젠] 아두이노의 16x2 LCD Display라이브러리 LiquidCrystal_I2C의 타이젠 포팅 icon 양재동메이커 09-15 14,593
107 기타 [타이젠] GPIO의 디지탈 출력과 입력 인터럽트의 C++ Class 제작 icon 양재동메이커 09-12 14,067
106 마이크로비트 서보 모터 icon HellMaker 09-03 13,873
105 마이크로비트 아날로그 온도센서 (마이크로 비트 센서 활용) icon HellMaker 09-01 14,414
104 마이크로비트 터치센서 (마이크로 비트 센서 활용) icon HellMaker 09-01 13,489
103 마이크로비트 디지털 홀 센서 (마이크로 비트 센서 활용) icon HellMaker 08-29 12,653
102 마이크로비트 리니어 홀 센서 (마이크로 비트 센서 활용) icon HellMaker 08-29 12,199
101 마이크로비트 불꽃 감지 센서 (마이크로 비트 센서 활용) icon HellMaker 08-26 12,562
100 마이크로비트 로터리 엔코더 (마이크로 비트 센서 활용) icon HellMaker 08-25 12,682
99 마이크로비트 2컬러 LED(3mm) (센서 활용) icon HellMaker 08-22 12,652