요즘 아두이노를 공부하다 보면 시리얼 통신, I2C 통신, SPI 통신 등 많은 통신규약들이 자주 나온다. 그 중에서도 오늘은 I2C 통신에 대해서 알아보려고 한다. 먼저 I2C(Inter Intergrated Circuit) 통신이란 두 개의 전선으로 여러 디바이스들을 연결할 수 있는 저속 통신 인터페이스입니다.
다른 통신 인터페이스에 비해 간단하며 한 개의 마스터(master)와 여러 개의 슬레이브(slave)들을 연결하여 SDA(Serial Data)와 SCL(Serial Clock) 두 개의 신호를 통해 데이터를 주고받게 됩니다.
-
송신과 수신이 동시에 불가능한 반이중(Half-Duplex) 방식이며 각 슬레이브는 각자의 주소를 가지고 그 주소에 해당하는 슬레이브만 응답하여 데이터를 주고받는다.
-
SCL(Serial Clock) : 시리얼 클럭으로 마스터와 슬레이브 간의 클럭을 맞춰 데이터를 송수신 할 수 있게 해준다. 기본 값 HIGH일 때만 SDA가 HIGH -> LOW 로 가면 START, LOW -> HIGH로 가면 END를 뜻한다. 데이터 송수신은 SCL이 LOW일 때만 가능하다.
-
SDA(Serial Data) : 시리얼 데이터로 통신하고자 하는 데이터를 의미하며 위의 설명처럼 SCL이 LOW일 때 데이터를 주고받을 수 있으며 각각의 전송에는 ACK가 포함되며 데이터를 읽을 것일지 쓸 것일지에 따라 규격이 다르다.
현재 내가 사용하고 있는 보드는 아두이노 우노 보드이며 우노 보드는 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 |