I2C 풀업 상승시간 계산기
풀업 저항과 버스 정전용량을 입력해 I2C 신호의 예상 상승시간을 계산합니다.
풀업 저항(Rp)과 버스 정전용량(Cb)을 기반으로 I2C 오픈 드레인 신호의 상승시간(tr)과 RC 시정수를 계산하고 표준 규격(100kHz, 400kHz, 1MHz) 만족 여부를 판정합니다.
I2C 풀업 상승시간 계산기
계산 공식 및 예시
예상 상승시간(ns) = 0.8473 × 풀업 저항(kΩ) × 버스 정전용량(pF)I2C 풀업 상승시간 계산기 사용법
I2C(Inter-Integrated Circuit) 버스는 SDA(데이터) 및 SCL(클록) 라인이 오픈 드레인(Open-Drain) 또는 오픈 컬렉터(Open-Collector) 형태로 설계되어 있습니다. 드라이버가 신호를 HIGH로 직접 밀어 올리지 못하고, 외부에 장착된 풀업 저항()을 통해 버스 정전용량()을 충전하면서 전압이 상승하게 됩니다.
이 계산기는 설정한 풀업 저항값()과 회로의 전체 버스 커패시턴스()를 입력받아, 신호 전압이 에서 까지 상승하는 데 걸리는 예상 상승시간()을 정밀 계산합니다. 또한 계산된 상승시간이 I2C 표준 모드(100kHz), 고속 모드(400kHz), 고속 플러스 모드(1MHz)의 규격 상한을 만족하는지 즉시 검증합니다.
계산 방법 및 이론적 배경
단순 1차 RC 충전 회로에서 시간 에 따른 버스 전압 는 다음과 같이 표현됩니다.
I2C 공식 사양서(NXP UM10204)에서 상승시간()은 신호 레벨이 논리 LOW 상한인 에서 논리 HIGH 하한인 까지 도달하는 시간 차이로 정의됩니다.
각 전압 임계치에 도달하는 시점 , 는 다음과 같이 계산됩니다.
따라서 신호 상승시간 공식은 아래와 같이 유도됩니다.
실무 단위로 풀업 저항을 , 버스 정전용량을 로 입력하면, 단위 변환 계수()에 따라 결과는 곧바로 나노초() 단위로 계산됩니다.
I2C 속도 모드별 최대 상승시간 규격 기준
I2C 버스 사양서에 명시된 주요 모드별 최대 허용 상승시간()과 최대 버스 커패시턴스() 한계는 다음과 같습니다.
- Standard-mode (Sm, 100 kHz): 최대 상승시간 , 최대 버스 용량
- Fast-mode (Fm, 400 kHz): 최대 상승시간 , 최대 버스 용량
- Fast-mode Plus (Fm+, 1 MHz): 최대 상승시간 , 최대 버스 용량
계산 결과 나온 값이 사용하려는 모드의 기준치를 초과할 경우, 데이터 셋업 타임 부족이나 클록 왜곡으로 인해 통신 패킷 손실이 발생합니다.
계산 예시
-
상황 1: 일반적인 4.7kΩ 풀업 저항과 100pF 버스 용량
- 풀업 저항 , 버스 정전용량
- RC 시정수:
- 예상 상승시간:
- 판정: Fast-mode 한계(300ns)를 초과하므로 Standard-mode(100kHz, 최대 1000ns)에서 안정적으로 동작합니다. 400kHz 고속 통신을 적용하려면 풀업 저항을 줄여야 합니다.
-
상황 2: 고속 400kHz 구동을 위해 2.2kΩ 적용 시
- 풀업 저항 , 버스 정전용량
- RC 시정수:
- 예상 상승시간:
- 판정: Fast-mode 한계치인 300ns보다 훨씬 낮으므로 400kHz Fast-mode를 완벽히 지원합니다.
실무 풀업 저항() 선정 가이드 및 주의사항
- 최대 풀업 저항 한계 (): 목표 통신 속도의 최대 허용 상승시간()을 만족하려면 풀업 저항은 다음 식 이하로 설계해야 합니다.
- 최소 풀업 저항 한계 (): 신호가 LOW로 유지될 때 IC 내부 트랜지스터가 버텨야 하는 최대 싱크 전류(, 통상 3mA)와 출력 로우 전압(, 보통 0.4V)을 고려하여 최소 저항값을 지켜야 합니다.
- 버스 정전용량 산정 체크포인트: 회로도 상에 별도 커패시터를 달지 않더라도 마이크로컨트롤러(MCU) 및 각 센서/EEPROM 핀당 약 5~10pF, PCB 선로 패턴 cm당 약 0.5~1pF의 기생 커패시턴스가 발생합니다. I2C 장치가 5개 이상 병렬 연결되거나 긴 플렉스 케이블을 사용할 경우 버스 용량이 쉽게 200pF를 넘어가므로 실측 기반의 검증이 권장됩니다.
Q&A
자주 묻는 질문
I2C 신호 상승시간(Rise Time, tr)이란 무엇인가요?
I2C 버스는 오픈 드레인(Open-Drain) 구조로 동작하므로 신호가 LOW에서 HIGH로 전환될 때 풀업 저항을 통해 버스 커패시턴스가 충전됩니다. I2C 표준 규격(NXP UM10204)에서는 LOW 인식 임계치인 $V_{IL} = 0.3 V_{DD}$에서 HIGH 인식 임계치인 $V_{IH} = 0.7 V_{DD}$까지 전압이 상승하는 데 걸리는 시간을 상승시간($t_r$)으로 정의합니다.
풀업 저항을 너무 크거나 작게 설정하면 어떤 문제가 발생하나요?
풀업 저항이 너무 크면 버스 충전 속도가 느려져 상승시간이 길어지고, 규격 한계(예: 400kHz 기준 300ns)를 초과하여 신호 왜곡과 통신 에러가 발생합니다. 반대로 풀업 저항이 너무 작으면 마스터나 슬레이브가 신호를 LOW로 당길 때 과도한 싱크 전류($I_{OL}$)가 흘러 전력 소비가 급증하고 LOW 레벨 전압($V_{OL}$)이 상승하여 통신 인식이 실패할 수 있습니다.
버스 정전용량(Cb)은 어떻게 산정하나요?
버스 정전용량($C_b$)은 PCB 패턴 배선의 기생 커패시턴스(통상 cm당 약 0.5~1pF), I2C 버스에 연결된 마스터 및 각 슬레이브 IC 핀의 내부 커패시턴스(IC당 약 5~10pF), 그리고 커넥터 및 케이블의 커패시턴스를 모두 합산하여 산출합니다.
I2C 속도 모드별 허용 상승시간 한계는 얼마인가요?
I2C 공식 규격에 따르면 Standard-mode(100kHz)는 최대 1000ns(1µs), Fast-mode(400kHz)는 최대 300ns, Fast-mode Plus(1MHz)는 최대 120ns 이하를 만족해야 정상적인 통신이 보장됩니다.