1. 풀업 저항의 역할
I2C 통신 라인은 오픈 드레인(Open-drain) 구조로, 데이터(SDA)와 클럭(SCL) 신호를 LOW로 드라이브하는 것은 디바이스에서 직접 수행하지만, HIGH 상태는 외부 풀업 저항을 통해 이루어진다. 이 과정에서 풀업 저항 값 선택이 다음과 같은 요소에 영향을 미친다.
- 저항이 작은 경우 :
- 소모 전력 증가 (P=V^2/R, 저항값이 적을수록 더 많은 전류가 흐르고 전력 소비가 증가한다)
- Rise time 감소 (신호 상승 속도가 빠르다)
- 고속 데이터 전송에 적합
- 저항이 큰 경우 :
- 소모 전력 감소 (더 적은 전류가 흐른다)
- Rise time 증가 (신호 상승 속도가 느리다)
- 저속 데이터 전송에 적합
2. 통신 속도에 따른 전송 모드
I2C는 다양한 속도 모드에서 동작하는데 각 모드에 따라 최대 신호 상승 허용 시간과 풀업 저항 값의 요구사항이 달라진다.
I2C 모드 | 속도 |
Standard Mode | 100 kbps |
Fast Mode | 400 kbps |
Fast Mode Plus | 1 Mbps |
High Speed Mode | 3.4 Mbps |
Ultra-Fast Mode (Write-Only, 일부 표준 생략) |
5 Mbps |
3. 일반적인 저항 값 선택
보통 저속인 Standard Mode(100kbps)에서는 4.7kΩ ~ 10kΩ 사이의 저항 값을 선택하며, 고속 모드에서는 이보다 더 작은 저항 값을 선택할 필요가 있다. 아래 그림을 보면 알 수 있듯이, 통신 속도가 낮을 때는 저항이 크거나 작아도 상승 시간에 여유가 있어 신호 품질에는 큰 문제가 없다.
하지만 통신 속도가 높을 때 저항이 크면 상승 시간이 느려져 bit time 내에 신호가 충분히 HIGH로 올라가지 못하고 데이터 인식 오류가 발생할 수 있다.
4. 적정 풀업 저항 값 계산 방법
4.1. Rmin
최소 풀업 저항 값은 I2C 라인이 로직 LOW 상태를 안정적으로 유지할 수 있어야 하므로, LOW 상태에서 디바이스가 싱크할 수 있 최대 전류를 고려해 다음 공식으로 계산된다.
(I2C 신호는 Open-drain 구조라서 디바이스가 라인을 LOW로 만들려면 해당 핀을 GND로 연결해 전류를 싱킹해야 한다. 이 때 저항이 너무 작으면 전류가 많이 흘러서 디바이가 감당할 수 있는 전류 한계를 초과할 수 있다.)
- Vcc : 회로 공급 전압
- Vol : Logic-Low로 인식되는 맥시멈 전압
- Iolmax : Vol 이하일 때 핀이 싱크할 수 있는 최대 전류
EFM8LB1 MCU의 경우에 이 값은 171옴으로 계산된다.
- Rp(min) = (3.3V – 0.99V ) / 13.5mA = 171 Ohms
4.2. Rmax
최대 풀업 저항 값은 신호 상승 시간이 I2C 표준을 만족해야 하므로 다음의 공식으로 계산된다.
- tr : I2C 모드 별 최대 허용 상승 시간 (표준에서 제공된다. 아래 테이블 참조)
- Cbus : 버스 커패시턴스 (I2C 버스에 물린 디바이스의 수와 PCB 트레이스에 의해 결정되며, 설계 단계에서 이를 미리 계산하는 것은 어렵다.)
예를 들어 버스 커패시턴스가 100pF인 상황을 가정하고 통신 속도에 따른 최대 풀업 저항 값을 계산해보면 다음과 같다.
- Standard Mode : 11.8kΩ
- Fast Mode : 3.54kΩ,
- Fast Mode Plus : 1.42kΩ
5. 결론
일반적인 I2C 풀업 저항의 범위는 1kΩ에서 10kΩ 사이이며, 고속의 통신 모드를 사용하는 경우 신호의 빠른 상승 에지를 보장하기 위해 저항 값을 줄여야 할 수 있다. 이론적으로 적절한 풀업 저항을 계산하는 공식이 존재하긴 하지만 실제 회로에서 테스트 하면서 통신 품질과 전력 소비등을 모두 고려하여 조정하는 것이 가장 정확한 방법이다.
참고:
https://community.silabs.com/s/article/i2c-pull-up-resistor-calculation?language=en_US
'임베디드 개발 > 펌웨어' 카테고리의 다른 글
OpenVPX 커넥터 구조 및 핀 맵핑 방식 (0) | 2025.04.28 |
---|---|
RJ-45 커넥터 핀아웃 (10/100BASE-T, 1000BASE-T 연결 방법) (0) | 2025.04.15 |
DAC sine wave 생성 (0) | 2025.04.12 |
디지털 필터 (Moving Average, Exponential Filter) (0) | 2025.04.09 |
타코미터 센서 (Tachometer) (0) | 2025.03.24 |