{{위키데이터 속성 추적}}
[[파일:I2C.svg|thumb]]
'''I²C'''(아이스퀘어드시, Inter-Integrated Circuit)는 [[필립스]]에서 개발한 [[직렬 통신|직렬]] [[버스 (컴퓨팅)|버스]]이다. [[마더보드]], [[임베디드 시스템]], [[휴대 전화]] 등에 저속의 주변 기기를 연결하기 위해 사용된다.

== 설계 ==
I²C는 [[풀업 저항]]이 연결된 직렬 데이터(SDA)와 직렬 클럭(SCL)이라는 두 개의 양 방향 [[오픈 컬렉터]] 라인을 사용한다. 최대 전압은 +5&nbsp;V이며, 일반적으로 +3.3&nbsp;V 시스템이 사용되지만 다른 전압도 가능하다.

I²C [[레퍼런스 디자인]]은 7 비트의 [[주소 공간]]을 가지며, 이 중 16개는 예약되어 있으므로,
동일한 버스에 최대 112개의 노드를 연결할 수 있다. 가장 일반적으로 사용되는 I²C 버스의 모드는 ‘표준 모드’인 100&nbsp;[[kbit/s]]와, ‘저속 모드’인 10&nbsp;kbit/s 가 사용된다. 최신 리비전의 I²C는 보다 빠르게 동작하며,
‘패스트(fast) 모드’인 400 kbit/s와 ‘고속(high-speed) 모드’인 3.4 [[Mbit/s]]를 지원한다. 최대 1008 노드까지 연결 가능한 10 비트 [[주소 공간|주소 지정]] 등의 확장된 기능들을 지원한다.

== 리비전 ==
원래 I²C 시스템은 [[1980년대]] 초반에 개발되었으며, 여러 필립스 칩들을 이용하여
전자 제품을 구성하기 위한 간단한 내부 버스 시스템으로 사용되었다.

* [[1992년]]에 ‘패스트 모드’ 10 비트 주소 지정 기능이 추가된 최초 표준 버전이 발표되었으며,
* [[1998년]]에 낮은 전압에서 동작하는 ‘고속 모드’와 전원 관리 요구 사항이 추가된 버전 2.0이 발표되었다.
* [[2001년]]에 발표된 버전 2.1은 버전 2.0에서 약간의 수정이 가해진 것으로 현재 최신 버전에 해당한다.

== 응용 ==
I²C는 빠른 속도를 요구하지 않는 간단한 저비용 주변 장치들에 적합하다.
I²C 버스가 사용되는 주된 응용 영역은 다음과 같다.

* 사용자 설정값을 저장하기 위해 [[NVRAM]]에 접근하는 경우
* 저속의 [[디지털-아날로그 변환회로]]에 접근하는 경우
* 저속의 [[아날로그-디지털 변환회로]]에 접근하는 경우
* [[컴퓨터 디스플레이|모니터]]의 명암, 대비, 색상 등을 변경하는 경우
* 지능형 [[스피커]]의 볼륨값을 변경하는 경우
* [[휴대전화]]같은 장치에 포함된 [[발광 다이오드]]를 제어하는 경우
* [[중앙 처리 장치]] 온도나 팬 속도와 같은 하드웨어 모니터링 정보나 진단 센서 정보를 읽는 경우
* [[실시간 클럭]] 값을 읽는 경우
* 시스템 요소의 전원을 제어하는 경우

I²C의 장점은 특히 [[마이크로컨트롤러]]에서 단지 2개의 [[일반 목적 입출력]] 핀과 [[소프트웨어]]만을 이용하여 여러 장치들을 제어할 수 있다는 점이다.

주변 장치들은 시스템이 동작 중일때도 I²C 버스에 추가/제거될 수 있으며, 이것은 [[핫 스왑]]이 필요한 요소들을 이용하는 응용에 적합하다.

I²C 와 같은 버스들은 컴퓨터 엔지니어들이 칩의 패키지 크기와 핀 수가 생산 비용과 IC 설계에 영향을 준다는 것을 인식한 후부터 널리 사용되었다. 또한 작은 패키지는 일반적으로 더 적은 전력을 소모하므로, [[휴대전화]]나 이동형 장치들에서 사용하기에 편리하다.

== 운영 체제 지원 ==
[[리눅스]]에서는, I²C는 특정 장치에 대한 [[모듈 (리눅스)|커널 모듈]]로 처리된다. I²C 클라이언트를 작성하는 법은 커널 관련 문서와 /usr/include/linux/i2c.h [[헤더 파일]]에서 찾아볼 수 있다.

[[OpenBSD]]는 최근 I²C 프레임워크에 대한 지원을 추가하였으며, 몇 가지 일반적인 마스터 컨트롤러들과 센서들을 지원한다.

[[Sinclair QDOS]]와 [[Minerva|Minerva (QDOS reimplementation)]], [[Sinclair QL|QL]] [[운영체제]]에서는 [[TF 서비스]]에서 제공하는 확장 기능을 통해 I²C를 지원한다.

[[AmigaOS]]는 Wilhelm Noeker의 ''i2c.library'' 공유 라이브러리를 통해 I²C를 지원한다.

[[eCos]]는 여러 하드웨어 아키텍처에 대해 I²C를 지원한다.

[[EPIA]]-M 마더보드는 [[Mini-ITX]] 범위에서 I²C를 지원한다.

== 파생 기술 ==
I²C는 [[액세스.버스]], [[VESA]] [[디스플레이 데이터 채널]](DDC) 인터페이스, [[시스템 관리 버스]](SMBus), [[지능형 플랫폼 관리 인터페이스]](IPMI) 프로토콜 중의 하나인 지능형 플랫폼 관리 버스(IPMB)의 기본 기술이다. 이러한 것들은 전압과 클럭 주파수 범위에서 차이가 있으며, [[인터럽트]] 라인을 가질 수 있다.

== 같이 보기 ==
{{위키공용분류}}
* [[I²S]]
* [[1-Wire]] 버스
* [[직렬 주변기기 인터페이스 버스]](SPI 버스)
* [[시스템 관리 버스]]
* [[CAN 버스]]

== 외부 링크 ==
* [http://www.nxp.com/acrobat_download/literature/9398/39340011.pdf 필립스 I2C 명세] {{웨이백|url=http://www.nxp.com/acrobat_download/literature/9398/39340011.pdf |date=20070212223025 }}
* [http://www.i2c-bus.org/ 자세한 소개, 입문서]
* [https://web.archive.org/web/20070926222250/http://embedded.com/story/OEG20010718S0073 I2C 소개]
* [http://www.interfacebus.com/Design_Connector_I2C.html I<sup>2</sup>C Bus / Access Bus]
* [http://www.linuxjournal.com/article/1342 리눅스에서 I2C 버스 사용하기]
* [http://www.openbsd.org/cgi-bin/man.cgi?query=iic&sektion=4 OpenBSD iic(4) 매뉴얼 페이지]{{깨진 링크|url=http://www.openbsd.org/cgi-bin/man.cgi?query=iic&sektion=4 }}
* 리눅스 패키지 [http://secure.netroedge.com/~lm78/ lm-sensors]{{깨진 링크|url=http://secure.netroedge.com/~lm78/ }} - I2C 및 다른 버스 지원.
* [http://techref.massmind.org/i2cs.htm massmind i2c page] PC, PIC, SX 마이크로 컨트롤러에서 i2c를 사용하기 위한 소스 코드 및 기술 정보
* [https://web.archive.org/web/20061230193623/http://tmd.havit.cz/Papers/I2C.pdf I<sup>2</sup>C bus]
* [http://www.epanorama.net/links/serialbus.html 직렬 버스 정보]
* [http://www.esacademy.com/faq/i2c/ I2C 버스의 기술적인 개요 및 FAQ]
* [https://web.archive.org/web/20070102155852/http://www.kar.elf.stuba.sk/predmety/mmp/i2c/i2cindex.htm I2C FAQ 버전 2.0]
* [https://web.archive.org/web/20161013012648/http://www.bus-buffer.com/ I2C, SMBus, PMBus, IPMB & IPMI 와 같은 2 라인 버스 정보]

{{컴퓨터 버스}}

{{전거 통제}}

[[분류:직렬 버스]]
[[분류:컴퓨터 버스]]