본문 바로가기
SSM/쿼드콥터

[쿼드콥터] SPI 통신 <기본 이론편>

by 우툴 2015. 11. 17.
728x90

 통신에 관하여 

 기기와 기기 또는 칩과 칩의 데이터를 읽기 위해서는 통신이 필요하다. 내가 만드는 쿼드콥터에서는 Cortex M3 (MCU) 와 센서들간의 데이터를 읽어오기 위해서는 필요하다. 통신의 종류는 SPI, I2C, Serial 등 다양하다. 나같은 경우는 MPU6050 과 SPI 통신을 이용하여 데이터를 주고 받았다. 

SPI 통신

 SPI 통신은 Motorola에 의해 개발된 전이중 통신 방식으로 1 대 1 또는 1 대 다수의 통신을 위해서 구상되었다. SPI 통신의 특징을 꼽자면 SPI 통신은 4개의 핀을 이용하여서 통신한다. 그 4개의 핀 같은 경우는 아래의 그림과 같다.

핀 종류 

유사 이름 

설명 

SCLK

SCK, CLK

Serial Clock

MISO

SDI, DI, SI 

Master Input Slave Output 

MOSI

SDO, DO, SO 

Master Output Slave Input

SS

nCS, CS, nSS, STE, CE

Slave Select

 설명을 조금 더 쉽게 하자면 

SCLK 같은 경우는 마스터에서 슬레이브로 클럭을 주는 핀이다. 

MISO 같은경우는 슬레이브에서 주는 데이터를 마스터에서 읽는 핀이다.

MOSI 핀은 마스터에서 데이터를 주고 슬레이브에서 읽는 방식이다. 

SS 핀은 사실상 어떤 녀석이랑 통신을 할 지 선택을 해주는 핀이다.

 그래서 SPI 통신같은경우는 적어도 4가닥 이상의 연결선이 필요하다. 이유는 연결하는 그림을 참고하도록 하자. 

<이 이미지는 http://blog.naver.com/roboholic84/220422219584 블로그의 이미지를 참고하였습니다.>

 즉 그림에서 보면 하나의 마스터와 하나 이상의 슬레이브로 구성된 것을 볼 수 있다.

위에것만 보고 잘 이해가 안될지도 모른다. 사실 나는 이해가 잘 안됬었다. '그래서 어떻게 통신한다는 거지?' 라는 생각이 들었으니까 아마 이런분들은 이론적인 것을 더 많이 찾아보는것도 좋지만 백문이불여일견이라고 실제로 한번 SPI 통신을 이용해서 칩의 데이터를 받아보는걸 추천한다. 정말 한번 해보고 안 해보고 차이가 이해가 되나 안되나의 차이인거 같다.

 어떤 순서로 통신하는지는 다음 MPU6050 센서와의 통신에서 설명하겠다. 

728x90

댓글