I2S(Inter-IC Sound, Inter-IC Serial) 프로토콜은 디지털 오디오 데이터를 전송하기 위한 직렬 통신 인터페이스입니다. 주로 오디오 CODEC, DAC, ADC, 마이크, DSP, MCU 간의 오디오 데이터 교환에 사용됩니다.
🔧 기본 구성 신호선
I2S는 일반적으로 3개 혹은 4개 라인으로 구성됩니다.
| 신호 | 명칭 | 방향 | 설명 |
| SCK (또는 BCLK) | Bit Clock | Master → Slave | 각 비트 전송 타이밍을 지정하는 클록. 1bit마다 1번 토글. |
| WS (또는 LRCLK) | Word Select / Left-Right Clock | Master → Slave | 좌/우 채널 구분. 0=Left, 1=Right |
| SD | Serial Data | 양방향 (보통 한쪽 전송) | 오디오 데이터 스트림 (MSB부터 전송). |
| MCLK (Optional) | Master Clock | Master → Slave | 내부 oversampling용 클록 (예: 256×fs). 일부 CODEC에서 필요. |
🧩 데이터 포맷 구조
한 프레임(frame)은 왼쪽 채널 데이터 + 오른쪽 채널 데이터로 구성됩니다.
기본 타이밍 예시:

- **WS(=LRCLK)**이 0일 때 → 왼쪽 채널 데이터
- WS이 1일 때 → 오른쪽 채널 데이터
- 각 채널의 데이터 길이는 일반적으로 16bit / 24bit / 32bit
- 데이터는 항상 MSB(최상위 비트)부터 전송
🕒 클록 관계
- Bit Clock(BCLK) 주파수 = fs × 채널수 × 비트수
- 예: 48 kHz, 16bit, 스테레오 → 48,000 × 2 × 16 = 1.536 MHz
- Master Clock(MCLK)는 CODEC 내부 PLL용
- 보통 MCLK = fs × 256, 즉 12.288 MHz (for 48 kHz)
🧠 동작 모드
| 모드 | BCLK / WS 생성 주체 | 설명 |
| Master Mode | MCU가 클록 생성 | MCU → CODEC (BCLK, WS, MCLK 송출) |
| Slave Mode | CODEC이 클록 생성 | CODEC → MCU (MCU는 수신만) |
🗣️ 예시 시나리오
- MCU → DAC : MCU가 오디오 데이터를 DAC에 전송 → TX 모드
- ADC → MCU : ADC가 샘플 데이터를 MCU로 전송 → RX 모드
- Full-Duplex : 동시에 송수신 가능 (I2S 지원 칩에서만)
⚙️ 변형 프로토콜
I2S 규격은 Philips가 정의했지만, 유사한 파생 형태가 많습니다.
| 형식 | 특징 |
| Left Justified (LJ) | 데이터가 WS 변화와 동시에 시작됨 (MSB=WS 경계) |
| Right Justified (RJ) | LSB가 WS 경계에 맞춰짐 |
| TDM (Time Division Multiplexed) | 4ch 이상 다채널 확장용 |
| DSP Mode (PCM Mode) | 일부 오디오 DSP용, WS 펄스 한 번만 발생 |
📊 요약
| 항목 | 내용 |
| 전송 방식 | 동기식 직렬 |
| 데이터 단위 | 16/24/32bit |
| 채널 | 2채널(스테레오) |
| 동작 클록 | SCK(=BCLK), WS(=LRCLK), MCLK |
| 전송 순서 | MSB First |
| 사용 예 | 오디오 CODEC, DAC, ADC, 마이크, Bluetooth 오디오 |



🎧 2. I2S는 “클록 기반 동기형 스트리밍”이다
I2S는 이런 핸드셰이크 신호가 없습니다.
그 이유는 I2S가 다음과 같은 전제를 가지기 때문입니다:
- Master 장치가 BCLK(비트클록), WS(LRCLK) 를 계속 생성
- Slave 장치(예: CODEC, DAC, ADC)는 클록에 맞춰 즉시 송수신
- 즉, "준비됐냐?" / "보내도 되냐?" 같은 질의응답이 필요 없음
- 오디오 스트림은 연속 데이터 흐름(Stream) 형태로 동작함
따라서 I2S에서는:
“클록이 곧 타이밍이고, 클록의 존재 자체가 핸드셰이크 역할을 대체한다.”
🔄 3. 실제 동작 흐름 (예: MCU → DAC)
1️⃣ MCU가 Master로서 MCLK, BCLK, WS를 생성
2️⃣ DAC은 WS=0일 때 왼쪽 채널, WS=1일 때 오른쪽 채널로 샘플 수신
3️⃣ MCU는 각 WS 전환 주기에 맞춰 SD 라인에 데이터 출력
4️⃣ 클록이 유지되는 한 스트림은 끊김 없이 계속됨
즉, 데이터는 BCLK 신호에 맞춰 밀어 넣거나 읽기만 하면 된다.
ACK, READY, BUSY 같은 신호가 존재하지 않는다.
⚙️ 4. 정리: I2S 신호 교환의 성격
| 항목 | 설명 |
| 핸드셰이크 신호 | 없음 |
| 동기화 방식 | 클록(BCLK, WS)에 의한 하드웨어 동기 |
| 전송 흐름 제어 | 불가 (Flow control 없음) |
| 전제 조건 | 송수신 클록 정확히 일치해야 함 |
| 오류 복구 | 없음 (오디오 스트림이므로 실시간 손실 허용) |
🎧 I2S 주요 신호와 주파수 관계
| 신호 | 의미 | 일반 표기 | 주파수 계산식 | 예시 (48kHz, 16bit, 스테레오) |
| MCLK | Master Clock (오버샘플 클록) | fMCLK=fs×Nf_{MCLK} = f_s × N | 48k×256=12.288MHz48k × 256 = 12.288 MHz | |
| BCLK / SCK | Bit Clock (비트 단위 전송) | fBCLK=fs×채널수×비트수f_{BCLK} = f_s × \text{채널수} × \text{비트수} | 48k×2×16=1.536MHz48k × 2 × 16 = 1.536 MHz | |
| LRCLK / WS | Left-Right Clock (채널 구분) | fWS=fsf_{WS} = f_s | 48kHz48 kHz | |
| SD | Serial Data | 데이터 비트 스트림 | BCLK 속도에 맞춰 변화 | 비트당 1.536 MHz 속도로 변화 |
'하드웨어 > 상식' 카테고리의 다른 글
| RabbitMQ (0) | 2025.10.15 |
|---|---|
| MQTT(Message Queuing Telemetry Transport) (0) | 2025.10.15 |
| UF2 : USB Flashing Format (0) | 2025.10.13 |
| Oscillator(발진기) 설명 및 신호 측정 (0) | 2025.10.04 |
| LoRa(Long Range) : 저전력 광역 통신망(LPWAN) (0) | 2025.09.30 |