I2C Communication Protocol (Open Drain & Pull-up Resistor)
--------- 시간이 부족하여서 간략하게 구성하고 내일 수정하도록 하겠습니다 ㅠㅠ -------------------
오늘은 I2C 통신 방식을 이해하기 위해서 먼저 Pull-up Resistor와 Open Drain 구조에 대하여 공부하여 보도록 하겠습니다.
먼저 Open Drain 구조에 대하여 알아보도록 하겠습니다.
Open Drain은 말그대로 Mosfet의 Drain단이 Open되어 있는 구조를 의미합니다. Open이 되어 있으므로 Default Status가 Floating이 됩니다. 이러한 Open drain구조의 장점으로는 하나의 line에 여러가지 device들이 연결될 수 있으며 풀업, 풀다운 저항을 통하여 원하는 레벨로 조정도 가능한 것들이 있습니다.
1. VDD와 연결된 구조. (풀업)
2. GND와 연결된 구조. (풀다운)
3. 둘 다 아닌 경우 (Floating Status)
I2C 통신에 있어서 플로팅 상태는 위험합니다. 통신 프로토콜 자체가 1과 0의 조합으로만 이루어져 있기 때문입니다.(이에 대하여서는 다음에 자세히 포스팅하도록 하겠습니다.)
이런 플로팅 상태를 막기위해 Pull-Up구조를 취하게 됩니다. Open Drain의 구조상 Default State를 VDD전압으로 강제로 끌어올려 주기 때문에 Pull-up이라는 이름이 붙게 됩니다.
주된 풀업 저항의 용도는 기본 상태를 VDD 상태로 유지하여 주기도 하지만, 원하는 Device의 Level로 Driving할 수 있게 하여줍니다.
5V로 동작하는 Master Device를 MCU가 있고 3.3V로 동작하는 Slave device가 있다면 둘간의 통신은 어떻게 하여야 할까요?? VDD전압을 따로 5V, 3.3V로 구성하여서 동작시킬 수도 있겠지만 그렇게되면 모든 디바이스들에 대한 전압을 구성하여야 하며 이는 회로적으로 너무 큰 손실을 가져오게 됩니다. 하여 정해진 전압 내에서 풀업저항을 통하여 레벨을 조정함으로써 적은수의 전압을 가지고 여러가지의 디바이스를 사용할 수 있게 됩니다.
다음에는 i2c의 실질적인 통신 프로토콜에 대하여 공부하여 보겠습니다.