본문 바로가기
기술팁

twi,iic,i2c 통신에서 풀업 저항값 변화에 따른 파형

by nyg -i 2021. 1. 4.

i2c 통신을 보면 마스터로부터 클럭을 입력받아 클럭에 맞추어 SDA한개의 선으로 통신을 하게 된다.

전원선(+)과 그라운드(-)

그리고 클럭(scl), sda 총 4개의 선만 있으면 되므로 구조적으로 간단하다.

그리고 여러개의 디바이스를 4개의 선으로 통신할수 있기 때문에 이런 장점으로 여러 곳에 쓰이는 통신이다.

하지만, 노이즈등으로 인해 클럭 타이밍이 틀어진다면, 빠져나오지 못하고 시스템 전체가 먹통이 되는 

짜증나는 현상이 있기에 주의가 필요하다.

 

 위 그림에 보듯이 SCL 과 SDA 핀에는 FET 의 드레인핀과 같다. 어느곳도 연결된곳도 없는 Open-drain 이다.

그냥두면 아래위로 들쭉날쭉 자기맘대로 움직이는 3-state 상태가 된다.

 통신을 하려면 풀업저항이 필요한데, 보통 4.7k 저항을 넣으라고 한다.

난 스코프가 없었다. 하지만 최근 저렴이 스코프를 구입하고 나서 처음으로 파형을 찍어보았다.

프로브 접촉부는  SCL라인이다.  avr 3.3v 에 i2c 디바이스 * 3개가 장착되어 있다.

 아래사진에 보듯이, 5K에 가까운 풀업저항을 달고 찍어본 파형은 매우 이상했다. 

 마치 톱니바퀴처럼 뾰족한 형태다.(4.7k)

확대해본 모습이다.(4.7k)

축소한 모습인데 칼날이 닳아서 없어진 모습이다. 통신이 되는게 신기할 정도다. (4.7k)

 

다음은 1.5k 풀업저항을 달고 파형을 찍어 보았다.

톱니가 약간 무뎌진 느낌이다.

 

확대한 모습.

 

1.5k축소한 모습인데, 4.7k보다는 칼날이 많이 위로 자라있다.

 

다음은 풀업저항을 100옴으로 달아보았다.

아주 이상적인 파형이지 않은가?  100옴

확대한 모습이다. 100옴

100옴 축소한 파형 모습이다.  풀업저항이 높아질수록 파형의 속도를 느려지게 만드는 것 같다.

결국 나의 I2C 통신에서의 풀업저항 선택은 100옴이다.

물론 디바이스 스펙이나 개수, mcu 의 종류, 연결상태에 따라 다르겠지만, 일반적으로 풀업저항이라고 2k~10k 사이의

값을 적당하게 달았다고 생각한다면, 다시 생각해보아야 할 것 같다.