본문 바로가기
책벌레와 벌레 그 사이 어딘가/개념쌓기

[개념쌓기] I2C란?

by veganwithbacon 2023. 5. 23.
반응형

소프트웨어에 좀더 가까웠으나, 어찌하다보니 하드웨어쪽도 같이 공부하게 되었다. 프로그래밍을 하는 것은 같으나 동작원리나 그게 무엇인지에 대해 알아야 하는 것은 기존 소프트웨어 개발자와 같이 프로그램만 짜는 것과는 좀 다른 느낌인 것 같다. 뭐가 더 쉽고 어렵고라기보단 구성환경을 구축하는 방법이 다르다보니 접근이 어려운 것 같다.

 

다 배움이고 기회이기에 좋다고 느낀다.

막론하고 I2C를 공부하게된 계기는 펌웨어의 기초라 할 수 있는 친구라서 그렇다.


  I2C ?

:  Inter-Intergrated Circuit의 약자로, 디지털 통신 프로토콜 중 하나

 

보통 일반적인 센서들에서 많이 사용되며, 아두이노에서는 I2C를 TWI라고 부르는데 이는 Two Wire Interface를 의미한다.

근거리 내의 소자와 소자 사이의 통신을 위해 개발되었으며, 소자와 소자 사이의 통신을 위해 2개의 선이 필요하다.

하나는 SDA로 데이터 라인이며, 다른 하나는 SCL로 클럭 라인이다.

 

I2C는 마스터-슬레이브 구조로 동작하는데, 일반적으로 마스터 장치는 주변 장치인 슬레이브 장치들을 제어하고 데이터를 교환하는 역할을 수행한다. 마스터와 슬레이브 간에는 앞서 언급한 데이터 라인(SDA)와 클럭 라인(SCL) 두 가지가 사용된다. SDA는 데이터 전송을 위한 양방향 통신 라인으로, 마스터와 슬레이브 간에 데이터를 주고받는다. SCL은 클럭 신호를 전송하는 단방향 통신 라인으로, 데이터 전송의 타이밍을 조절한다.


  I2C의 주요 구성 요소

1. 마스터(Master)

I2C 통신을 제어하고 슬레이브 장치들과의 통신을 관리하는 주체이다. 마스터는 데이터의 송수신을 담당하며, 통신을 시작하고 종료한다. 보통 제어기(IC 또는 마이크로컨트롤러)로 구현되며, 여러 개의 슬레이브 장치와 통신가능하다.

2. 슬레이브(Slave)

슬레이브는 마스터에 의해 선택되어 통신을 수행하는 장치다. 슬레이브는 마스터의 명령을 통해 데이터를 송수신한다.

각 슬레이브는 고유한 주소를 가지는데 이 주소를 통해 각 소자를 구분한다. 또한 여러 개의 슬레이브가 동시에 I2C버스를 공유할 수 있다.

 

3. 시리얼 데이터 라인(Serial Data Line, SDA)

SDA는 슬레이브와 마스터 의 데이터 전송을 위한 양방향 통신 라인이다.

마스터는 데이터를 SDA라인에 기록하며 슬레이브는 이 데이터를 읽어 온다.

SDA 라인은 Open-Drain 또는 Open-Collector 구성으로 사용되며, 외부 풀업 저항을 가지기에 데이터의 높은 상태를 유지하고, 필요에 따라 슬레이브나 마스터가  SDA라인을 당길 수도 있다.

 

4. 클럭 라인(Clock Line,SCL)

SCL은 데이터 전송의 타이밍을 제어하기 위한 단방향 클럭 신호 라인이다.

마스터는 클럭 신호를 생성하며, 슬레이브는 클럭 신호에 따라 데이터를 송수신한다. 클럭 속도는 마스터가 제어한다.

 

5. 주소

각 슬레이브는 고유한 7비트 또는 10비트 주소를 가진다.

마스터는 슬레이브를 선택하거나 데이터를 보낼 때 해당 슬레이브의 주소를 사용한다.

I2C는 주소 지정을 통해 특정 슬레이브 장치와 통신 가능하다.                                                                                               


  I2C의 특징                                                                                                                     

1. 주소 지정

: 바로 위에 언급한 것처럼 7 또는 10비트의 고유 주소를 지니며, 마스터가 해당 슬레이브의 주소를 통해 통신가능하다.

 

2. 멀티 마스터

: I2C는 멀티 마스터 시스템을 지원한다. 여러 개의 마스터 장치가 하나의 I2C 버스를 공유가능하며, 충돌을 방지하기 위해 충돌 감지 및 해결 매커니즘이 존재한다.

 

3. 속도 제어 

: I2C는 데이터 전송 속도 조정이 가능하다. 매우 느린 속도부터 고속까지 다양한 옵션을 제공한다

 

4. 동기식 통신

: I2C는 클럭 신호에 따라 데이터 전송이 동기적으로 이뤄지며, 클럭 신호에 따라 데이터 비트가 전송되고 수신되므로, 타이밍이 중요하다

 

5.  다양한 전송 모드

: I2C는 데이터 전소에 대한 다양한 모드를 지원한다. 주소 전송, 데이터 전송, 읽기 및 쓰기 동작 등이 있다.                                                                                                                                                                                                                                                                         

반응형

댓글