본문 바로가기
아두이노 관련/아두이노 기초

아두이노 기초 - I2C 통신 - 04. I2C 통신이란

by Bugwhale 2020. 1. 24.

1. 개요

MPU6050(가속도/자이로 센서), DS18B20(온도 센서) 등의 센서를 사용해본 적이 있다면 I2C 통신이 뭔지 모르더라도 사용해본 적이 있을 것입니다. 지금까지 명령어의 의미도 모르고 단지 적혀있는 코드를 적고 센서 값을 얻어와 사용했었다면 여기서 왜 그런 명령어를 사용하였는지, 직접 데이터 시트를 보고 명령어를 사용하는 방법을 배울 수 있습니다.

2. I2C 통신이란?

대부분이 부르기 쉬워서 그런건지 처음부터 "아이 투씨"라는 말로 들어서 그런지는 모르지만 I2C의 정식 명칭은 "IIC(Inter-Integrated Circuit)" 즉, "칩(IC) 간의 통신"을 의미하여 I²C(아이 스퀘어드 시)입니다. 이 글에서는 표현하기 쉽게 계속 "I2C"로 적겠습니다.

I2C 통신은 필립스社에서 주변장치들과 연결, 통신을 위해 만들어 졌습니다. 데이터를 주고받기 위한 데이터 케이블(SDA:Serial Data), 송수신 타이밍 동기화를 위한 클럭 케이블(SCL:Serial Clock), 각각 1개씩 총 2가닥으로 통신을 하며 하나의 마스터(Master)와 하나 이상의 슬레이브(Slave)로 최대 127개의 장치와 연결할 수 있습니다. 상황에 따라 마스터 장치도 2개 이상이 될 수가 있습니다.

I2C 통신을 위해서는 SDA, SCL 선이 둘다 HIGH 상태여야 합니다. 그에 따라 R1, R2 저항을 Pull-up으로 HIGH 상태를 만들어 줘야 하는데 보통 1.8 k, 4.7 k, 10 k 저항을 사용하며 1.8 k 저항을 사용할 때 가장 성능이 좋습니다. 아두이노 계열 대부분 개발 보드에는 내부 풀업 저항이 있기에 설치해줄 필요가 없습니다.

Master/Slave 연결, Pull-up 저항 배치 구조

2.1 마스터와 슬레이브란?

I2C 통신에는 마스터와 슬레이브라는 개념이 존재합니다. 통신이라는 것 자체가 2개 이상의 장치가 데이터를 주고 받는건데 I2C 통신은 어떤 장치가 다른 장치에게 명령을 하며(Master) 명령을 받은 장치(Slave)는 명령어에 따라 응답을 해주기 때문입니다.

슬레이브 장치는 어떠한 데이터를 먼저 전송할 수 없으며 항상 마스터의 신호에 따라 응답합니다. 마스터 장치에는 여러개의 슬레이브 장치를 연결할 수 있는데 이때 슬레이브 장치를 구분하는 것은 슬레이브 장치의 고유 주소로 구분합니다. 이것에 대한 설명은 추후 소스코드 분석에서 자세하게 설명합니다.

2.2 I2C 통신속도

I2C 통신속도는 100kHz, 400kHz, 3.4MHz 를 주로 사용하며 간혹 다른 통신 속도를 사용하기도 합니다. 필립스社에서는 100kHz 통신 속도를 표준클럭(SCL)으로, 400KHz 통신 속도를 Fast mode, 3.4 MHz 통신 속도를 High Speed mode로 정의해 놓았습니다.

2.3 I2C 통신방법

추가 중

3. 아두이노 I2C 통신 자문자답

Q :
A :

4. 참조

-

댓글0