// education

디지털 통신 인터페이스 (I2C, SPI, 1-Wire)

마이크로컨트롤러가 주변 센서, 메모리 칩, 디스플레이 IC와 데이터를 교환하는 표준 디지털 통신 3대 인터페이스를 비교합니다.


1. 디지털 통신 용어 사전 (Glossary)


2. 통신 규격 3종 특성 비교표

비교 항목 I2C 통신 SPI 통신 1-Wire 통신
필요 신호선 수 2개 (SDA, SCL) 4개 (MOSI, MISO, SCK, CS) 1개 (Data)
전송 방식 반이중 (Half-Duplex) 전이중 (Full-Duplex) 반이중 (Half-Duplex)
최대 전송 속도 100kbps ~ 3.4Mbps 10Mbps ~ 100Mbps (최고속) ~16.3kbps (느림)
슬레이브 선택 방식 7-bit / 10-bit 소프트웨어 주소 하드웨어 CS(SS) 핀 개별 제어 64-bit 고유 ROM 주소
주요 사용 부품 Character LCD, RTC, 온습도 센서 SD 카드 모듈, TFT 컬러 LCD, RFID DS18B20 방수 온도 센서

3. I2C Scanner 진단 코드

내 연결된 I2C 장치의 주소를 모를 때 탐색하는 필수 스크립트입니다.

#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(9600);
  Serial.println("
I2C 버스 스캔 시작...");

  int count = 0;
  for (byte address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    if (Wire.endTransmission() == 0) {
      Serial.print("I2C 장치 발견! 주소: 0x");
      if (address < 16) Serial.print("0");
      Serial.println(address, HEX);
      count++;
    }
  }
  Serial.print("스캔 완료. 발견된 장치 수: "); Serial.println(count);
}
void loop() {}

4. 자주 묻는 질문 (Q&A)

Q. I2C 버스 신호선에 풀업 저항($4.7\text{K}\Omega$)을 다는 이유는 무엇인가요? A. I2C 출력 회로는 오픈 드레인(Open-Drain) 구조로 되어 있어 신호를 0V(LOW)로 당길 수만 있고 5V(HIGH)로 밀어 올리지 못합니다. 따라서 풀업 저항이 5V 상태를 유지해 주어야 통신이 이루어집니다.

← 이전사물인터넷(IoT)과 무선 통신의 이해 (Bluetooth, Wi-Fi) 다음 →인터럽트(Interrupt)와 타이머 활용