본문 바로가기

카테고리 없음

오픈 컬렉터, 오픈 드레인이란?

반응형

안녕하세요. 취업한 공대누나입니다.

오늘은 오픈 콜렉터와 오픈 드레인에 대해 알아보도록 하겠습니다.


1. 오픈 컬렉터, 오픈 드레인이란?

가끔 MCU의 데이터시트를 보면 어떤 핀의 형태가 Open-Drain이다. Open-Collector이다라고 되어 있는 것을 볼 수 있습니다.

Collector 단자에 아무것도 연결되어 있지 않은 경우 Open Collector라고 하고,

FET에서 Drain 단자에 아무것도 연결되어 있지 않은 경우 Open Drain이라고 부릅니다.

즉, IC의 내부 소자가 BJT로 되어 있으면 Open Collector, FET로 구성되어 있으면 Open Drain이 되겠지요.


2. 그렇다면 오픈 컬렉터, 오픈드레인을 왜 사용할까요?

일반적으로는 레벨 드라이빙을 위해 사용합니다.

일반적인 MCU의 출력은 3.3V가 됩니다.

그런데 내가 외부 부하를 구동하는데 5V의 전원이 필요하다고 해보겠습니다.

이럴 경우 외부에 5V 전원과 풀업 저항을 달게 되면 5V가 되어 해당 부하를 구동시킬 수 있습니다.

위의 그림에서 빨간색 부분의 회로에 대한 구성이 비교적 자유로워진다고 말할 수 있겠지요.

 

이때, 출력을 내기 위해서는 풀업 저항을 반드시 달아줘야 합니다.

풀업 저항을 달아주지 않고 전원을 다이렉트로 연결하게 되면..

스위치가 ON이 되었을 때 (Base에 일정 전류가 흘렀을 때) Collector와 Emitter가 Short 되어 회로가 고장날 수 있습니다.

 

또한 Collector 단자 쪽을 모니터링 하고 있다면 베이스에 전류가 흘렀을 때 Collector 단자는 0(Low),

베이스에 전류가 흐르지 않았을 때 Collector 단자는 1(High)로 논리적인 값을 가질 수 있습니다. 만약 풀업저항이 없다면 Floating 되어 있게 되겠지요.


3. I2C에서 오픈드레인, 오픈컬렉터 살펴보기

I2C 통신을 얘기하기 잠깐 전에 아래 로직을 보고 가도록 하겠습니다.

오픈 컬렉터 구조를 가진 두개의 디바이스가 하나의 풀업저항을 공유하며 아래와 같이 연결되어 있다고 해봅시다.

이 때, A와 B가 모두 논리적으로 0이어야지만 C가 High가 됩니다.

만약 둘 중 하나라도 1이되면 C는 Low로 떨어지게 됩니다.

 

I2C 통신의 경우 SDA와 SCL라인에 모두 풀업 저항을 달게 되어 있습니다.

Open Collector나, Open Drain 구조이기 때문인데요.

I2C에서는 왜 이러한 구조를 사용할까요?

I2C는 SDA와 SCL, 두 개의 라인을 이용해서 다수의 Master와 다수의 Slave가 통신할 수 있는 방식입니다.

즉, 두 개 이상의 Master가 존재할 수 있는 것입니다.

하지만 한 순간에는 반드시 하나의 마스터와 하나의 슬레이브만이 통신할 수 있습니다.

 

통신이 진행되지 않는 상황에서 모든 장치의 출력은 Floating 상태이므로 SCL과 SDA의 상태는 모두 '1'입니다. (풀업저항이 달려있기 때문이죠) 이 상황에서 I2C 버스의 사용을 원하는 Master는 SCL과 SDA로 시작 조건을 출력하여 버스 소유권을 주장하고 통신을 시작할 수 있습니다.

 

즉, 다른 마스터는 두 신호의 상태가 모두 논리 '1'이 아니라면 현재 다른 마스터가 버스 소유권을 가지고 통신을 진행하고 있다는 것을 알 수 있습니다. 그래서 그 마스터가 버스 소유권을 반납할 때에 다른 마스터가 새로운 통신을 할 수 있게 되는 것입니다.

 


알고 나면 별거 아닌 것 같지만 이걸 이해하기까지 애를 좀 먹었습니다.

이해력이 좋지 않아서 슬픕니다.

혹시 틀린 것이 있다면 알려주세요.

반응형