죄송합니다. 더 이상 지원되지 않는 웹 브라우저입니다.

반도체네트워크의 다양한 최신 기능을 사용하려면 이를 완전히 지원하는 최신 브라우저로 업그레이드 하셔야 합니다.
아래의 링크에서 브라우저를 업그레이드 하시기 바랍니다.

Internet Explorer 다운로드 | Chrome 다운로드

내부 집적 회로(I2C) 버스가 IC 연결을 간소화하는 이유 - 사용 방법


PDF 다운로드



글/Art Pini, Digi-Key 북미 편집자 제공


인쇄 회로 기판(pc 기판)에서 집적 회로 간의 통신 및 제어 시 병렬 버스를 사용하는 것은 실용적이지 않다. 8비트 프로세서도 데이터용으로 16개 라인이 필요하며, 주소 버스용으로는 더 많은 라인이 필요하다. 따라서 공유 통신 버스에 여러 IC를 실장해야 하는 경우 큰 문제가 될 수 있다. 모든 pc 기판은 트레이스를 실장하는 공간이 부족한다. 이때 솔루션은 2선식 직렬 버스인 내부 집적 회로(I2C) 버스와 같은 직렬 통신 버스를 사용하여 IC를 연결하는 것이다.
이 기사에서는 I2C 버스의 기원을 설명하고 IC 간의 효과적인 직렬 연결을 위해 이 버스가 어떻게 작동하는지를 알아본다. 그런 다음 I2C 버스가 실제로 구현되는 방법, 프로토콜 구조, 유비쿼터스 통신 버스의 일반적인 응용 분야에 대해 설명한다. Microchip Technology의 예제 I2C 인터페이스 및 솔루션이 데모용으로 사용된다. 또한, I2C와 시스템 관리 버스(SMBus) 간의 유사점과 차이점을 설명한다.

I2C 버스란?

I2C 버스는 공통 pc 기판에서 집적 회로를 효과적으로 통신하고 제어하기 위해 1980년대 초 Phillips Semicon-ductors(현재의 NXP Semiconductors)에서 간단한 양방향 2선식 버스로 개발했다. 최초 사양은 1992년에 완성되었으며 그 이후에 이 버스는 50개 이상 IC 제조업체의 부품에 제공되는 사실상 표준이 되었다. 대규모로 배포되었기 때문에 시스템이 설계에 적용되어 맞춤형 설계 없이 IC를 I2C 버스 구조에 즉시 포함시킬 수 있다. SMBus 및 전력 관리 버스(PMBus)와 같은 다른 여러 특수 버스는 여러 다른 버스와 기본 아키텍처를 공유한다.
I2C 버스는 어드레서블 버스이므로 여러 IC 및 센서를 연결할 수 있다. 따라서 7비트 또는 10비트 주소 필드를 사용하여 마스터 장치에서 선택된 장치에 메시지를 전송할 수 있다. 원래 I2C의 최대 클록 속도는 100kHz이지만, 수년 동안 고속 작동 모드에서 이 제한이 3.4MHz로 향상되었다.
I2C 버스에서는 2선식 지정 직렬 데이터 회선(SDA) 및 직렬 클록 회선(SCL)을 사용한다. SDA와 SCL은 개방 드레인/콜렉터 양방향 회선이며 전류원 또는 풀업 저항기를 통해 양극 전력 버스에 연결된다. 버스에 여러 장치를 연결할 수 있으며, 그 최대 수는 버스 정전 용량에 따라 제한된다. 마스터 장치에서 버스를 제어하며 버스의 장치마다 고유한 주소가 있다. 마스터 장치는 버스를 통해 데이터 송/수신을 모두 수행할 수 있다(그림 1). I2C는 충돌 감지 및 중재 기능을 갖춘 다중 마스터 작동을 지원하여 두 개 이상의 마스터 장치에서 데이터 전송을 동시에 시작하지 않도록 차단한다. 하지만 이 기사에서는 단일 마스터 구성을 중심으로 살펴본다.

AR(내부)-1.jpg

[그림 1] Microchip Technology의 데모 pc 기판 회로도에서는 I2C 버스를 구현하여 5개의 다른 장치에 연결한다. 마스터 장치는 커넥터 P1을 통해 오프보드 된다. SCL 및 SDA 회선은 녹색 윤곽선으로 표시되고 두 풀업 저항기는 파란색 원으로 표시된다. (이미지 출처: Microchip Technology)

그림 1은 Microchip Technology PKSERIAL-I2C1 I2C 데모 기판의 회로도를 보여준다. 이 기판은 5개 장치 즉, EEPROM, 온도 센서, 12비트 아날로그 디지털 컨버터(ADC), 10비트 디지털 아날로그 컨버터(DAC), 8비트 직렬 병렬 컨버터를 사용하여 I2C 버스를 구현한다. 마스터 장치는 기판에 실장되지 않고 커넥터 P1을 통해 연결된다. SDA 및 SCL 버스 회선은 녹색 윤곽선으로 표시되고 풀업 저항기는 파란색 원으로 표시된다.
SDA 및 SCL 수준은 일반적으로 양극 공급 전압의 고정된 비율(%)이며 VDD로 표시된다. 레퍼런스 수준은 각각 논리 ‘1’(하이) 및 논리 ‘0’(로우)에 대해 VDD의 70% 및 30%로 설정된다.
클록 신호는 데이터 비트당 1클록을 전송하여 버스트에서 발생한다. SDA 회선의 데이터는 하이 클록에서만 유효해야 한다. 로우 클록에서만 데이터를 변경할 수 있다.
설계자의 관점에서는 I2C 인터페이스가 IC에 통합되어 인터페이스를 설계할 필요가 없으므로 새 프로젝트가 간단해진다. 각 장치를 버스에 직접 연결하면 된다. 다른 회로에 영향을 주지 않고(총 IC 수에 따라 정전 용량이 제한되지 않는다고 가정) 버스에서 IC를 추가하거나 제거할 수 있다. 간단한 2선식 버스는 각 IC의 핀 수와 pc 기판의 실행 횟수를 최소화한다.

I2C 프로토콜

버스는 8비트 지향이며 바이트로 통신한다. 앞서 언급한 대로 원래 최대 클록 속도는 100kHz이며 현재는 이를 표준 모드라고 한다. 이제 버스는 고속 모드에서 400kb/s, 고속 모드 플러스에서 최대 1Mb/s, Hs 모드에서 최대 3.4Mb/s를 지원한다.
I2C 프로토콜은 버스의 일반 전송을 통해 가장 잘 설명된다(그림 2). 화면의 이미지 출처는 저속 직렬 데이터 트리거 및 디코딩 옵션 WS4KHD-EMB TD가 적용된 Teledyne LeCroy 오실로스코프이다. 이 오실로스코프 옵션은 I2C를 포함하여 최대 19개 저속 직렬 데이터 인터페이스를 트리거 및 디코딩할 수 있다.

AR(내부)-2.jpg

[그림 2] 일반 I2C 데이터 패킷은 시작 비트, 주소 필드, 승인 비트, 각각 고유한 ACK 비트를 가진 17 데이터 바이트, 정지 비트로 구성된다. 각 필드는 색이 지정된 오버레이로 식별된다. 위쪽(노란색) 트레이스는 전체 SDA 패킷이고, 그 아래는 SCL 클록(빨간색)이다. 세 번째 및 네 번째 트레이스는 두 신호가 가로로 확장된 모습이다. (이미지 출처: Digi-Key Electronics)

오실로스코프는 시작, 정지, 누락 승인(ACK), 주소, 데이터, 주소 플러스 데이터, 프레임 길이, EEPROM 데이터 전송 등 특정 직렬 이벤트에 대해 트리거될 수 있다. 직렬 데이터 표준의 프로토콜 요소는 색이 지정된 오버레이로 식별된다. 각 프로토콜 필드는 2진, 16진 또는 ASCII 형식으로 디코딩되며, 오버레이 내에 선택된 코드가 표시된다.
SDA 신호는 노란색 트레이스로 표시되고 SCL 신호는 빨간색 트레이스로 표시된다. 회색 오버레이 상자는 시작 기능과 정지 기능을 나타낸다. 붉은 벽돌색 오버레이는 주소 데이터를 표시하고, 파란색 필드는 패킷 데이터이고, 올리브 오버레이 상자는 ACK 기능을 표시한다.
상단 트레이스는 시작부터 정지까지 전체 I2C SDA 패킷을 보여준다. 바로 아래에는 해당 SCL 신호가 있다. 아래쪽 세 번째 트레이스는 SDA 신호의 시간 확장된 확대/축소 트레이스이고, 그 아래에는 동기식 SCL 신호가 있다.
SDA 회선과 SCL 회선은 모두 버스가 사용 가능할 경우 전송 간에 상위 상태를 유지한다. SCL 신호는 클록 속도에서 9개 펄스(전송 중인 데이터 비트마다 1개, ACK 비트를 위한 추가 펄스 1개) 버스트로 구성된다.
모든 버스 트랜잭션은 확대/축소된 SDA 트레이스에 회색 오버레이 상자로 표시되는 마스터 생성 시작 비트로 시작된다. SCL 회선이 상위 상태에 있는 동안 마스터에서 SDA 회선을 아래로 당겨서 시작을 나타낸다. 마스터에서 시작 비트를 실행하면 버스가 사용 중인 것으로 간주된다. 마스터는 시작을 여러 번 실행할 수 있다. 이 경우 후속 시작을 재시작이라고도 한다.
모든 데이터 전송의 길이는 8비트(1바이트)이며, 각 비트 뒤에 ACK 비트가 온다. 비트는 최상위 비트(MSB)부터 전송된다. 각 바이트 전송을 확인해야 한다. 슬레이브 장치는 사용 중이고 데이터를 수신하거나 송신할 수 없는 경우 SCL 회선을 아래로 당길 수 있다. 그러면 슬레이브 장치가 SCL 회선을 해제할 때까지 마스터 장치가 대기 상태로 전환된다.
ACK 비트는 송신 장치에서 SDA 회선을 해제한 후 9번째 승인 클록 펄스 이전에 형성된다. 수신 장치에서 데이터 바이트를 수신한 후 SDA 회선을 아래로 당긴다. 그림 2의 SDA 확대/축소 보기에서 9번째 클록 펄스 바로 앞에 좁은 스파이크가 있으며, 여기서 SDA 회선을 해제하여 상위 상태로 되돌린다. 수신기에서는 올리브 상자 오버레이를 통해 기호로 표시되는 ACK 신호를 생성하여 SDA 회선을 아래로 당긴다. 수신기가 9번째 클록 펄스 이전에 SDA 회선을 아래로 당기지 않은 경우 승인되지 않은(NACK) 응답이 발생한다. NACK가 발생한 경우 마스터는 정지 신호를 생성하고 전송을 중단하거나, 시작을 반복적으로 실행하여 다시 시도할 수 있다.
시작 조건이 발생하는 즉시 슬레이브 주소가 실행된다. 이는 붉은 벽돌색 오버레이 상자로 표시된다. 7비트 또는 10비트의 두 가지 가능한 주소 형식이 있으며 7비트 주소가 가장 일반적이다. 시작 후 처음 7비트는 주소 데이터를 나타낸다. 8번째 비트는 데이터 방향(읽기 또는 쓰기)을 나타낸다. 쓰기는 low 상태의 SDA 회선으로 표시되고, high 상태 SDA 회선은 읽기 작업을 나타낸다. 10비트 주소 지정에서는 시작 조건 후 처음 두 개의 바이트를 사용한다. I2C에는 내부 기능 전용의 여러 주소가 있다. 디코드 주소 데이터는 주소 오버레이 상자에 2진, 16진 또는 ASCII 형식으로 표시된다.
파란색 오버레이 필드에서는 데이터 전송을 표시한다. 각각 8비트 길이이며 ACK/NACK 응답이 따라 온다. I2C 패킷의 데이터 바이트 수는 제한이 없지만 그림 2에는 17개가 포함되어 있다. 디코딩된 데이터(예: 주소 디코드)는 데이터 오버레이 상자에 표시된다. 데이터 전송이 끝나면 데이터 스트림 다음에 마스터에서 생성된 정지 비트가 따라오고, 맨 위 데이터 트레이스에 회색 오버레이 상자로 표시된다. SCL 회선이 high 상태에 있는 동안 정지 비트는 SDA 회선에서 low-high로 전환된다. 정지 신호 이후 버스는 다시 사용 가능한 상태가 된다.
디스플레이 맨 아래 표에는 트리거 후 경과 시간, 주소 길이, 주소, 읽기 또는 쓰기 작업, 패킷 길이, 데이터 콘텐츠 요약 등 관련 데이터 패킷에 대한 모든 정보가 요약되어 있다. 표의 항목 수는 해당 범위에서 획득된 I2C 패킷 수와 일치하며, 이 경우 단일 회선만 있다.
프로토콜 오류가 발생한 경우 다른 프로토콜 오버레이 상자 뒤에 밝은 빨간색 상자로 표시된다.

I2C 장치

I2C 버스의 가장 큰 장점 중 하나는 설계에 매우 많은 장치를 통합할 수 있다는 것이다. Microchip Technologies 데모 기판은 I2C 버스 또는 파생 장치 중 하나(예: SMBus)를 통합하는 IC 유형의 몇 가지 예를 제공한다.
Microchip Technology의 PIC16F677은 많은 내장형 설계에서 사용되는 8비트 마이크로 컨트롤러이다. 이 마이크로 컨트롤러는 직렬 주변 소자 인터페이스(SPI) 또는 I2C를 다른 컨트롤러 또는 주변 장치에 전달하도록 제어할 수 있는 동기식 직렬 포트를 구현한다(그림 3).

AR(내부)-3.jpg

[그림 3] Microchip Technology PIC16F677은 SPI 또는 I2C 버스로 프로그래밍될 수 있는 동기식 직렬 포트(주황색 윤곽)를 포함하는 8비트 마이크로 컨트롤러이다. (이미지 출처: Microchip Technology)

이 마이크로 컨트롤러는 7비트 또는 10비트 주소 지정을 사용하여 I2C의 마스터 모드와 슬레이브 모드를 모두 지원한다. 또한 I2C SCL 클록 신호용 SCK/SCL 핀과 데이터 신호용 SDI/SDA 핀을 사용한다.
이 두 핀을 I2C 버스의 SCL 및 SDA 회선에 연결하여 다른 장치와 통신할 수 있다. 일반적으로 I2C 기반 센서(예: Microchip Technology의 TCN75AVOA713 2선식 직렬 온도 센서)에 연결된다(그림 4).

AR(내부)-4.jpg

[그림 4] Microchip Technology TCN75A 온도 센서는 PIC16F677 마이크로 컨트롤러에 직접 연결되어 온도 데이터를 전달한다. (이미지 출처: Microchip Technology)

직렬 통신 기능을 지원하는 이 온도 센서는 기능이 향상되었다. 내부 사용자 프로그래밍 가능 레지스터를 사용하여 온도 측정 분해능, 전원 차단 절전 모드를 설정하고, 온도 범위가 사전 설정된 한도를 초과한 상태를 나타내는 경고 출력을 설정할 수 있다.
또한 I2C 직렬 데이터 스트림을 디코딩하여 병렬 데이터로 분할하는 많은 장치가 있다. Microchip Technology MIC74YQS-TR 2선식 I/O 확장기 및 팬 컨트롤러를 고려해 보자(그림 5).

AR(내부)-5.jpg

[그림 5] Microchip Technology MIC74YQS-TR I/O 확장기는 직렬 데이터 스트림을 8개의 독립 병렬 I/O 회선으로 변환한다. (이미지 출처: Microchip Technology)

이 IC는 8개의 독립 I/O 회선을 제공하는 완전히 프로그래밍 가능한 I/O 확장기이다. I/O 회선을 입력 또는 출력으로 개별적으로 프로그래밍할 수 있다. 그림 5는 직렬 버스의 제어에 따라 8개의 LED를 구동하는 MIC74YQS-TR을 보여준다. 이는 그림 1의 I2C 데모 기판에서 MCO23008을 사용하는 것과 비슷한다. 또한 MIC74YQS-TR은 전력 조정기와 함께 4개의 최상위 비트를 사용하여 팬 모터 속도 제어를 구현할 수 있다.

SMBus 및 I2C

I/O 확장기에 대한 직렬 입력은 SMBus용으로 설계되었지만 I2C 버스와도 호환된다. SMBus 사양은 I2C를 기반으로 하며 1994년 Intel과 Duracell에서 정립했다. 주요 차이점은 표준 모드 I2C 논리 레벨은 VDD에 상대적이고, SMBus의 논리 레벨은 고정되어 있다는 점이다. 대부분의 경우 VDD는 3V ~ 5V 사이이고 경험에 비춰볼 때 이는 문제가 되지 않다.
또 다른 차이점은 SMBus의 클록 속도는 100kHz 이하로 제한되고 I2C는 더 높은 클록 속도를 지원하는 다양한 모드를 제공한다는 것이다. 버스 호환성을 처리할 때 이는 최대 클록 속도를 100kHz 또는 I2C 표준 클록 모드로 제한한다.
따라서 특별한 경우를 제외하고 SMBus와 I2C는 호환된다.

결론

I2C 버스와 파생 장치가 모든 유형의 수백 개 IC에서 확산되어 다면적 설계 및 응용 분야에서 쉽게 연결할 수 있게 되었다. 혼합 신호 및 아날로그 센서를 결합하면 마이크로 컨트롤러 기반 내장형 시스템의 범위를 확장할 수 있다. 이 모두는 간단한 2선식 직렬 디지털 인터페이스를 통해 실현된다.

leekh@seminet.co.kr
(끝)
<저작권자(c) 반도체네트워크, 무단 전재-재배포 금지>

X


PDF 다운로드

개인정보보호법 제15조에 의한 수집/이용 동의 규정과 관련하여 아래와 같이 PDF 다운로드를 위한 개인정보 수집 및 이용에 동의하십니까? 동의를 거부할 수 있으며, 동의 거부 시 다운로드 하실 수 없습니다.

이메일을 입력하면,
(1) 신규참여자 : 성명/전화번호/회사명/분야를 입력할 수 있는 입력란이 나타납니다.
(2) 기참여자 : 이메일 입력만으로 다운로드가 가능합니다.

×

회원 정보 수정