Bus Communication Protocols
칩 내부와 외부의 장치들이 데이터를 교환하기 위해 사용하는 전기적 규약인 I2C, SPI, UART, CAN 버스의 물리적 신호 체계와 제어 로직을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts6 min read
1. Overview
버스 통신 프로토콜(Bus Communication Protocols, BCP)은 하드웨어 부품들이 서로 정보를 주고받기 위해 사용하는 '전기적 공용어'이자 물리적인 데이터 고속도로입니다.
어떤 센서는 단 두 선으로 수백 개 장치와 대화(I2C)하고, 어떤 모듈은 네 선으로 수십 메가비트의 속도를 냅니다(SPI). 학습자는 신호의 시작과 끝을 알리는 프레임 구조와 전압이 요동칠 때 발생하는 노이즈 및 동기화 물리 원리를 배웁니다. 특히 임베디드 현장에서 가장 많이 쓰이는 UART, SPI, I2C의 장단점을 물리적 결선과 클록 체계 관점에서 익히며, 자동차 산업의 표준인 CAN 버스의 충돌 회피 물리 사상을 이해합니다. 이를 통해 하드웨어 제약 조건에 맞는 최적의 통신 인프라를 구축하는 시스템 인터페이스 설계 역량을 확보합니다.
2. Scope & Boundaries
In-Scope
- UART Physics: 스타트/스톱 비트, 보드 레이트(Baud rate) 동기화 물리
- SPI Architecture: Full-duplex 고속 전송, Master-Slave 셀렉트 로직
- I2C Protocol: 오픈 드레인(Open-drain) 결선, 주소 지정 및 ACK/NACK 물리
- CAN Bus Mechanics: 차분 신호(Differential Signal)와 우선순위 기반 충돌 중재
Out-of-Scope
- 고수준 네트워크 스택 (TCP/IP) (08. Network 영역으로 위임)
- 무선 통신 물리 (07-01 Wireless Physics 영역으로 위임)
Boundaries
- BCP vs. On-chip Bus: AMBA나 AXI가 CPU 내부 '거대 도시의 간선 도로'라면, BCP는 장치 사이의 '국도와 지방도' 같은 인터페이스 규약입니다.
3. Counterexample
- 단순히 "센서와 통신한다"는 설명은 BCP 학습이 아닙니다. 왜 I2C 통신에서 **풀업 저항(Pull-up Resistor)**이 없으면 신호가 '1'로 복귀하지 못해 먹통이 되는지 전기적 이유를 지적해야 하며, UART에서 두 장치의 보드 레이트 오차가 누적될 때 왜 데이터 비트의 중간 지점을 읽지 못하고 오염(Framing Error)되는지 물리적 타이밍 관점에서 입증해야 합니다.
4. Prerequisites
- Digital Logic & Boolean Algebra (Basic): 0과 1의 전기적 임계치 기초 지식이 필수입니다. (02-01-01 DLB)
- Bare-metal Memory Mapping (Recommended): 통신 레지스터(TX/RX Buffer) 제어 이해가 권장됩니다. (02-05-01 BMM)
5. Learning Map
- Topology Awareness: 일대일(P2P)과 공유 버스(Multi-drop)의 물리적 연결형태를 구분합니다.
- Clock Synchronization: 송신자와 수신자의 심박수(Clock)를 어떻게 맞출지 기술 방식을 결정합니다.
- Data Framing: 비트의 바다에서 유의미한 데이터 덩어리를 낚아채는 규칙을 익힙니다.
- Error Physics: 전선이 길어지거나 노이즈가 낄 때 전기 신호를 안전하게 복원하는 기법을 배웁니다.
6. Learning Topics
Basic
Core: UART와 비동기 통신의 원리 (UART Async Physics)
- Why to Learn: 시계(Clock) 선을 공유하지 않고도 전선 두 가닥만으로 소통하는 가장 경제적인 방식이기 때문입니다.
- What to Learn:
- Baud rate: 1초에 보내는 물리적 비트 수와 타이밍 오차 한계
- Start/Stop bits: 전압의 상태 변화를 통해 데이터 시작을 인지하는 물리
- Full-duplex vs Half-duplex: 물리적 통로의 개수에 따른 전송 방향성
- How to Learn:
- 보드 레이트가 9600과 115200일 때, 비트 하나가 유지되는 물리적 시간() 계산 실습
- 오실로스코프로 UART 신호를 찍어 'Start bit' 전압 강하가 일어나는 순간 포착
- Implement: 데이터 한 바이트를 UART 비트 시퀀스로 변환해주는 시뮬레이션 로직
Recommended
Core: SPI와 I2C의 물리적 차이 (SPI vs I2C Architectures)
- Why to Learn: 속도가 중요한지, 핀 개수가 중요한지에 따라 하드웨어를 선택하기 위해서입니다.
- What to Learn:
- SPI: 전용 클록과 셀렉트 선()을 통한 수십 MHz급 고속 물리 전송
- I2C: 오픈 드레인 결선과 풀업 저항을 이용한 7비트 주소 기반 공유 버스 물리
- Clock Polarity (CPOL) & Phase (CPHA): 데이터 샘플링 시점 조정 물리
- How to Learn:
- SPI 통신 시 핀을 제어하지 않았을 때 데이터가 왜 씹히는지 분석 실습
- I2C에서 여러 슬레이브를 물렸을 때 주소 경합을 물리적으로 어떻게 탐지하는지 이해
- Implement: SPI의 4가지 모드(Mode 0~3)에 따른 클록-데이터 관계를 출력하는 분석 도구
Practical
Core: 차분 신호와 CAN 버스 (Differential Signaling & CAN)
- Why to Learn: 소음이 심한 공장이나 자동차 환경에서 전기 신호가 왜곡되지 않게 지키기 위합니다.
- What to Learn:
- Differential Signal (CAN High/Low): 두 선의 전압 차이를 이용하여 노이즈를 상쇄하는 물리
- Bitwise Arbitration: 메시지 ID가 낮은(우선순위 높은) 장치가 버스를 차지하는 물리적 중재
- 종단 저항(Termination Resistor): 신호의 반사 현상을 막기 위한 물리적 마감
- How to Learn:
- 한쪽 선에 노이즈가 꼈을 때 차분 신호 연산()을 통해 순수 데이터만 남는 물리 과정 작도 실습
- CAN 버스 충돌 시 지배적 비트(Dominant)가 열성 비트(Recessive)를 누르는 전기적 원리 분석
- Implement: 두 장치가 동시에 전송을 시작했을 때 ID 값에 따라 승자가 결정되는 CAN 중재 로직
Advanced
Core: 버스 무결성과 시그널 인테그리티 (Signal Integrity Physics)
- Why to Learn: 통신 속도를 극도로 높일 때 발생하는 전기적 참사(반사, 간섭)를 물리적으로 막기 위해서입니다.
- What to Learn:
- Rise/Fall Time: 전압이 0에서 1로 변하는 속도가 통신 속도에 미치는 물리적 한계
- Cross-talk: 평행하게 지나가는 두 전선 사이의 자기적 간섭 물리
- CRC (Cyclic Redundancy Check): 하드웨어적으로 데이터 오염을 즉각 탐지하는 비트 연산 기법
- How to Learn:
- 통신 선로의 길이가 1m일 때와 10m일 때, 신호 왜곡(Ringing) 현상이 어떻게 달라지는지 분석 연습
- 특정 프로토콜의 하드웨어 에러 카운터(Error Counter)를 모니터링하여 물리적 연결 상태 진단
- Implement: 전송 데이터에 대해 CRC 계산을 수행하고 수신단에서 대조하는 하드웨어 가속 의사 코드
7. Terminology
8. References
Primary
- [P1] CS2023 - AR/Embedded Systems (Serial Interfaces) — Core requirements.
- [P2] SWEBOK v4.0 - Computing Foundations / Communication Interconnects — Structural standards.
Secondary
- [Art of Electronics] Horowitz & Hill — Deep dive into Open-drain & Signals.
- [Controller Area Network (CAN) Basics] Microchip — Detailed CAN physics.
Industry
- [NXP: I2C-bus specification and user manual] — The definitive I2C guide.
- [Motorola: SPI Block Guide] — The original SPI standard.
9. Final Checklist
Primary
- 'SPI' 통신이 'I2C'보다 물리적으로 수십 배 빠른 데이터 전송이 가능한 근본적인 이유(핀 구성, 동기 방식)를 설명 가능한가? (P1)
- 'UART' 결선 시 송신(TX)과 수신(RX)을 왜 교차(Cross)해서 연결해야 하는지 물리적 경로 관점에서 입증할 수 있는 가? (P1)
Secondary
- I2C 버스에 장치가 너무 많이 물렸을 때, '풀업 저항'의 임계값에 의해 신호의 상승 시간(Rise time)이 지연되어 통신이 깨지는 현상을 소통 가능한가?
- CAN 버스에서 자신의 ID를 보내는 도중 타 장치의 'Dominant' 비트를 감지했을 때, 하위 장치가 왜 즉각 전송을 포기해야 하는지 물리적 정당성을 증명할 수 있는 가?
Industry
- 노이즈가 심한 전기 자동차 엔진룸 부근의 센서 데이터 전송 시, 왜 SPI 대신 CAN이나 차분 신호 방식이 필수적인지 설득 근거를 제안할 수 있는 가? (SFIA)
- 통신 모듈의 'Framing Error' 발생 시, 하드웨어 오실레이터의 온도 드리프트(Drift)로 인한 타이밍 오차 가능성을 진단할 수 있는 가?