본문 바로가기
RaspberryPi

아두이노 I2C 와 SPI 통신은 무엇이 다른가요? -퍼온글

by 미사사 고라쿠 2017. 5. 17.

아두이노 I2C 와 SPI 통신은 무엇이 다른가요?

여러 개의 센서부품들을

아두이노에 연결할 때 종종 I2C통신방식과

SPI통신방식이 언급되는데,

이것들은 무엇인지?

어떤 차이점이 있는지 궁금한가요?

 

I2C(Inter-Integrated Circuit) 및

SPI(Serial Peripheral Interface)에 대한

기술이 누구에 의해서, 그리고

어떻게 생겨났는지 등은 생략하고,

두가지 기술의 차이점과 특징들만

먼저 살펴보겠습니다.

 

아두이노에 여러 종류의 센서들을 연결하면서

종종 언급되는 통신기술에 관한 것입니다.

조금은 초급을 벗어나는 내용으로

생각될 수 있지만,

크게 어렵지 않답니다.

 

먼저 두가지 통신방식은 아둥이노와 같은

마이크로컴퓨터에 센서를 연결하려고 할 때

통신 방식과 배선연결방식이 조금 다릅니다.

 

 

위 그림은 I2C 통신의 연결방식입니다.

Master 라고 표시된 마이크로컴퓨터에 다른 여러 개의 센서 또는

또 다른 마이크로 컴퓨터들을 종속적인 형태로

여러개 연결할 수 있는 구조입니다.

 

Master 한 개에 여러 개의 Slave 들을 연결하는 모습입니다.

 

그리고 아래 그림은 SPI 연결을 나타낸 것입니다.

아두이노 우노를 기준으로 연결한 모습입니다.

SPI 연결 역시 하나의 Master 에 여러 개의 Slave 소자들을

연결한 모습인데요~~

Master 와 Slave 소자를 서로 연결하는 연결선의 숫자와

연결방법이 조금 다른점이 특징입니다.

 

 

(그림 출처: tronixstuff.com)

 

아마도 초보자들에게는 위 그림들이 매우 어렵게

생각되겠지요~~~

위 그림들은 무시하고, 두가지 통신방식에 대한

아래 설명들을 참고하기 바랍니다.

 

두 가지 통신방식은 모두 아두이노와

또 다른 여러개의 센서를 서로 유선으로 연결할 때

필요합니다.

I2C 와 SPI 기술은 종종 아두이노 라이브러리를 사용하여

손쉽게 사용할 수 있습니다.

그래서 센서 사용법에서 제시하는

전선 연결과 라이브러리 파일을 사용하기만 하면

대부분 해결된답니다.

 

I2C 방식은 아두이노에 신호선 2개를 연결하는데

SDA SCL 두개의 전선입니다.

나머지 2개의 전선은 전원 공급용입니다.

실제 두 개의 신호선 중 SCL 은 클럭신호용이고,

SDA 선은 데이터 송수신용입니다.

 

그래서 I2C방식은 

SDA 한개 전선으로 양방향 데이터 송수신을 하므로

통신속도가 SPI 방식보다 상대적으로

느려지는 단점이 있을 수 있습니다.

​그리고 데이터 송식과 수신을 동시에

​수행할 수 없습니다.

 

반대로 SPI 방식은

MOSI 와 MISO 두개의 전선으로

데이터 송수신을 서로 분리하여 통신하므로

I2C 방식보다 통신속도가 빠른 점이 장점입니다.

데이터 송수신을 동시에 수행할 수도 있습니다.

 

또 다른 특징으로는

I2C 방식은 센서를 하나 더 추가 연결할 때

전선 한개를 버스선에 연결하면 되지만,

SPI 방식은 연결선이 더 필요하다는 점이랍니다.

추가 센서의 숫자가 많다면 복잡한 정도에 있어서

꽤 다른 양상이 만들어지겠지요~~~

 

종종 두가지 종류의

통신방식을 모두 지원하는

센서들이 있지만,

사용자가 두가지 종류중에서

한가지를 선택해서 사용하면 된답니다.

 

SPI 연결은 이더넷이나 메모리카드와 같이

고속 통신이 필요한 경우에 선호되고

나머지 대부분의 경우 I2C 연결을 통하여

쉽게 아두이노와 연결되어

통신할 수 있답니다.



퍼온글입니다. http://fribot.blog.me/220060422314