
Let’s go!
-
i2c 세부 사항
I2C의 **중재(Arbitration)**는 여러 개의 마스터가 동시에 대화를 시작하려고 할 때, **”교통정리”**를 하는 아주 똑똑한 규칙입니다.
앞서 배운 **오픈 드레인(Open-Drain)**과 **와이어드 AND(Wired-AND)**의 특징을 생각하면 아주 쉽게 이해할 수 있습니다. 핵심은 **”0(Low)을 보낸 사람이 1(High)을 보낸 사람을 이긴다”**는 것입니다.
1. 중재의 핵심 원리: “말하면서 듣기”
I2C 마스터들은 데이터를 보낼 때 그냥 던지기만 하는 게 아니라, **내가 보낸 데이터가 선(SDA)에 똑같이 나타나고 있는지 실시간으로 확인(모니터링)**합니다.
- Logic 1을 보낼 때: 마스터는 스위치를 엽니다. (풀업 저항에 의해 선이 High가 되길 기대함)
- Logic 0을 보낼 때: 마스터는 스위치를 닫아 선을 바닥(GND)으로 강제로 끌어내립니다.
2. 중재 과정 (Step-by-Step)
상황: 마스터 A와 마스터 B가 정확히 동시에 통신을 시작했다고 가정해봅시다.
- 비트 단위 비교: 두 마스터는 각자의 데이터를 한 비트씩 보냅니다.
- 공통 구간: 처음 몇 비트가 둘 다 ‘0’이거나 둘 다 ‘1’이라면, 두 마스터는 서로 다른 누군가가 같이 말하고 있다는 사실을 전혀 모른 채 계속 전송합니다.
- 충돌 발생 (결정적 순간):
- 마스터 A: 이번 비트에서 **’1′(High)**을 보내려고 스위치를 열었습니다.
- 마스터 B: 이번 비트에서 **’0′(Low)**을 보내려고 선을 꽉 붙잡아 내렸습니다.
- 결과: SDA 선은 마스터 B 때문에 **’0′(Low)**이 됩니다. (Wired-AND 특성)
- 패배자 발견: ‘1’을 보냈던 마스터 A는 선을 확인해보니 ‘0’이 되어 있는 것을 발견합니다. “어? 난 1을 보냈는데 선은 0이네? 나보다 우선순위가 높은 누군가가 있구나!”라고 판단합니다.
- 즉시 항복: 마스터 A는 그 즉시 전송을 중단하고 손을 뗍니다. 이를 **’중재 패배’**라고 합니다.
- 승자 계속: 마스터 B는 자기가 보낸 ‘0’이 선에도 그대로 ‘0’으로 나타나므로, 방해받지 않았다고 생각하고 계속 데이터를 보냅니다. 이를 **’중재 승리’**라고 합니다.
3. 왜 I2C 중재가 훌륭한가요?
- 데이터가 깨지지 않음: 승리한 마스터(마스터 B)는 상대방이 중간에 포기했다는 사실조차 모를 정도로 신호에 아무런 간섭을 받지 않고 통신을 이어갑니다.
- 하드웨어 자동 처리: 개발자가 코드로 “누가 먼저 보낼지” 정해줄 필요가 없습니다. 칩 내부의 로직이 알아서 처리합니다.
- 자연스러운 우선순위: 주소 값이 낮은 장치(앞부분에 ‘0’이 더 많은 장치)가 자연스럽게 우선순위를 갖게 됩니다.
요약하자면
I2C 중재는 **”누가 더 먼저 선을 Low(0)로 당기느냐”**를 겨루는 게임입니다.
‘1’을 보내며 버스 상태를 관찰하던 마스터가, ‘0’을 보내며 선을 장악한 마스터에게 조용히 자리를 양보하는 질서 정연한 방식입니다.
이해가 좀 더 되셨나요? 중재가 끝난 뒤 패배한 마스터가 어떻게 행동하는지 등 추가로 궁금한 점이 있으시면 말씀해 주세요!
-
DC-DC Converter


Buck과 Boost 컨버터는 같은 부품을 사용하지만, 스위치·인덕터·다이오드의 위치가 다르기 때문에 에너지를 저장하고 전달하는 방식이 달라집니다. 이로 인해 Buck은 전압을 낮추고, Boost는 전압을 높이는 효과가 생깁니다.
🔧 핵심 원리: 인덕터의 에너지 저장과 방출 방식
항목 Buck (Step-down) Boost (Step-up) 스위치 ON일 때 인덕터에 전류가 흐르며 에너지 저장 인덕터에 전류가 흐르며 에너지 저장 스위치 OFF일 때 인덕터가 출력으로 에너지 방출 → 낮은 전압 인덕터가 다이오드를 통해 출력으로 에너지 방출 → 높은 전압 출력 전압 입력보다 낮음 입력보다 높음 Buck 컨버터에서는 스위치가 인덕터 앞에 있어서, 스위치가 꺼질 때 인덕터가 출력으로 직접 연결되어 전압이 낮아집니다.
Boost 컨버터에서는 인덕터가 스위치와 다이오드 사이에 있어, 스위치가 꺼지면 인덕터가 다이오드를 통해 출력으로 전류를 밀어내며 전압을 높입니다.
⚡ 인덕터의 역할이 결정적
- 인덕터는 전류가 흐를 때 자기장에 에너지를 저장하고,
- 전류가 끊기면 자기장을 붕괴시키며 전류를 밀어냅니다.
이때 어디로 밀어내느냐가 Buck과 Boost의 차이를 만듭니다.
🧠 직관적으로 이해하기
- Buck: 인덕터가 출력에 직접 연결 → 전압 낮춤
- Boost: 인덕터가 출력과 분리되어 있다가 다이오드를 통해 연결 → 전압 높임
Buck과 Boost의 동작을 더 깊이 이해하고 싶다면, 스위치 ON/OFF 시 인덕터 전류 흐름을 시간축으로 분석해 보는 것도 좋아요. 원하시면 함께 해볼까요?





