Skip to content
RFrftools.io
PROTOCOLbeginner

UART vs SPI vs I2C

UART, SPI 및 I2C는 임베디드 시스템을 위한 가장 일반적인 세 가지 직렬 프로토콜입니다.각 제품은 포인트-투-포인트 비동기 링크용 UART, 고속 주변 장치 버스용 SPI, 2선을 통한 다중 장치 통신용 I2C 등 서로 다른 사용 사례에 맞게 설계되었습니다.속도, 핀 수, 토폴로지에 따라 적합한 제품을 선택할 수 있습니다.

UART (범용 비동기 수신기/송신기)

UART는 별도의 TX 및 RX 라인을 사용하는 포인트-투-포인트 비동기 직렬 프로토콜입니다.공유 클럭이 없습니다. 양측 모두 전송 속도에 동의해야 합니다.표준 속도는 9600~4Mbps입니다.디버그 콘솔, GPS 모듈 및 블루투스 모듈에 사용됩니다.

Advantages

  • 간단한 하드웨어 — 단 두 개의 와이어 (TX, RX)
  • 클록 신호 불필요 — 비동기 작동
  • 범용 지원 — 거의 모든 MCU에 UART가 있습니다.
  • 긴 케이블에서도 작동하며 터미널로 쉽게 디버그할 수 있습니다.

Disadvantages

  • 포인트-투-포인트 전용 — 네이티브 멀티 디바이스 버스 없음
  • 양측 모두 전송 속도에 동의해야 합니다. 구성이 잘못되면 데이터가 왜곡될 수 있습니다.
  • 대량 전송의 경우 SPI보다 속도가 느림
  • 프레이밍 바이트 및 시작/중지 비트 필요 — 오버헤드 최대 20%

When to use

GPS 수신기, 블루투스/와이파이 모듈, 디버그 로깅, RS-232/RS-485가 탑재된 산업용 장치 등 포인트-투-포인트 링크에 UART를 사용하십시오.속도보다 단순성과 장거리 통신이 더 중요한 경우에 적합합니다.

UART 전송 속도 계산기

I2C (인터-인티그레이티드 서킷)

I2C는 단일 버스에서 여러 마스터와 최대 127개의 장치를 지원하는 2선 버스 프로토콜 (SDA+SCL) 입니다.표준 속도: 100kbps, 400kbps, 1Mbps (고속+), 3.4Mbps (고속).7비트 주소 지정을 사용합니다.

Advantages

  • 장치 수에 관계없이 단 두 개의 와이어 (SDA+SCL)
  • 다중 장치 버스 — 최대 127개 장치 주소 지정 가능
  • 칩 선택 라인이 필요 없습니다. 주소 지정은 대역 내에서 이루어집니다.
  • 센서, EEPROM, RTC 및 디스플레이 컨트롤러에 적합

Disadvantages

  • 대량 데이터 전송의 경우 SPI보다 느림
  • 오픈 드레인 버스에는 풀업 저항이 필요하므로 긴 트레이스에서는 속도가 제한됩니다.
  • 고정 주소 디바이스에서 발생할 수 있는 주소 충돌
  • 고속 데이터 스트림에는 적합하지 않음

When to use

버스를 공유하는 저속/중속 주변 장치가 여러 대 있고 핀 수를 최소화하려는 경우 I2C를 사용하십시오.센서 (IMU, 온도, 습도), EEPROM, RTC 및 디스플레이 드라이버에 적합합니다.

I2C 풀업 계산기

Key Differences

  • 와이어 수: UART = 2 (TX/RX), I2C = 2 (SDA/SCL, 공유 버스), SPI = 4+ (디바이스당 MOSI/MISO/SCK + CS)
  • 속도: 대량 전송의 경우 SPI > I2C > UART, 단순 스트리밍의 경우 UART가 가장 빠릅니다.
  • 토폴로지: UART = 포인트-투-포인트, I2C/SPI = 다중 장치 버스 (I2C는 주소 지정을 사용하고, SPI는 칩 선택 라인을 사용함)
  • UART는 비동기식이고 SPI와 I2C는 동기식입니다 (공유 클럭).
  • SPI는 전이중입니다. I2C 및 UART는 전이중 (UART) 또는 반이중 (I2C) 일 수 있습니다.

Summary

포인트-투-포인트 직렬 링크 및 디버그/로그 출력에 UART를 사용합니다.여러 저속 센서 또는 주변 장치를 두 개의 와이어로 연결해야 하는 경우 I2C를 사용하십시오.단일 주변기기 (디스플레이, 플래시 메모리, ADC) 로의 고속 전송이 필요한 경우 SPI를 사용하십시오.일반적으로 핀 수와 속도가 결정 요인입니다.

Frequently Asked Questions

SPI, I2C, UART 중 어느 것이 더 빠릅니까?

SPI는 가장 빠릅니다. 일반적인 구현은 10—50MHz (10—50Mbps) 에서 실행되며 주로 트레이스 커패시턴스에 의해 제한됩니다.I2C의 최고 속도는 3.4Mbps (고속 모드) 입니다.표준 구현의 경우 UART의 속도는 일반적으로 115.2kbps에서 4Mbps입니다.

UART 버스에 여러 장치를 연결할 수 있나요?

표준 UART는 포인트 투 포인트 방식입니다.RS-485 (UART 시그널링의 멀티드롭 확장) 은 차동 버스에서 최대 10Mbps의 속도로 최대 32개 노드를 허용합니다.각 디바이스는 애플리케이션 계층에서 주소 지정이 필요합니다.

I2C에 풀업 저항이 필요한 이유는 무엇입니까?

I2C는 오픈 드레인 시그널링을 사용합니다. 디바이스는 버스를 높지 않고 낮게 끌어당길 수만 있습니다.외부 풀업 저항 (일반적으로 100kbps의 경우 4.7kΩ, 400kbps의 경우 2.2kΩ) 을 구동하는 장치가 없을 때는 선을 높이 당깁니다.풀업 및 버스 커패시턴스의 RC 시정수는 최대 속도를 제한합니다.

I2C가 할 수 없는 데 사용되는 SPI는 무엇입니까?

SPI는 SD 카드 (최대 25MHz), SPI 플래시 (최대 133MHz), 컬러 디스플레이 (SPI TFT) 및 고속 ADC/DAC와 같은 고속 대량 데이터에 적합합니다.오픈 드레인 버스 제약으로 인해 I2C는 3.4Mbps 이상에서 안정적으로 작동할 수 없습니다.

Related Comparisons

Related Calculators