I2C 통신이란?

MCU 2020. 3. 6. 11:47

 요즘 아두이노를 공부하다 보면 시리얼 통신, I2C 통신, SPI 통신 등 많은 통신규약들이 자주 나온다. 그 중에서도 오늘은 I2C 통신에 대해서 알아보려고 한다. 먼저 I2C(Inter Intergrated Circuit) 통신이란 두 개의 전선으로 여러 디바이스들을 연결할 수 있는 저속 통신 인터페이스입니다.

 다른 통신 인터페이스에 비해 간단하며 한 개의 마스터(master)와 여러 개의 슬레이브(slave)들을 연결하여 SDA(Serial Data)와 SCL(Serial Clock) 두 개의 신호를 통해 데이터를 주고받게 됩니다.

 

<IC2 통신 모델>

 

  • 송신과 수신이 동시에 불가능한 반이중(Half-Duplex) 방식이며 각 슬레이브는 각자의 주소를 가지고 그 주소에 해당하는 슬레이브만 응답하여 데이터를 주고받는다.

 

<SDA와 SCL 통신>

 

  • SCL(Serial Clock) : 시리얼 클럭으로 마스터와 슬레이브 간의 클럭을 맞춰 데이터를 송수신 할 수 있게 해준다. 기본 값 HIGH일 때만 SDA가 HIGH -> LOW 로 가면 START, LOW -> HIGH로 가면 END를 뜻한다. 데이터 송수신은 SCL이 LOW일 때만 가능하다.

  • SDA(Serial Data) : 시리얼 데이터로 통신하고자 하는 데이터를 의미하며 위의 설명처럼 SCL이 LOW일 때 데이터를 주고받을 수 있으며 각각의 전송에는 ACK가 포함되며 데이터를 읽을 것일지 쓸 것일지에 따라 규격이 다르다.

 

<data write / 주황 : 마스터, 흰색 : 슬레이브>
<data read / 주황 : 마스터, 흰색 : 슬레이브>

 

 현재 내가 사용하고 있는 보드는 아두이노 우노 보드이며 우노 보드는 Atmega328P를 내장하고 있으며 I2C 통신 기능을 지원하고 SDA 핀은 A4(아날로그 4번핀), SCL 핀은 A5(아날로그 5번핀)으로 지원하고 있다.

 

<출처 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=0ZPt7&articleno=2692>

'MCU' 카테고리의 다른 글

SPI(Serial Peripheral Interface Bus)란?  (0) 2020.03.19
AVR Studio 4 vs Atmel Studio 7  (0) 2019.08.10
Atmega8(A) 특징  (0) 2019.08.10
Atmega8(A) 소개  (0) 2019.08.10
ADC(Analog-Digital Converter)  (0) 2019.08.05
블로그 이미지

Mr.HB

프로그래밍 이야기

,