UART, I2C, SPI 통신: 임베디드 시스템의 필수 통신 프로토콜
페이지 정보

본문
지난 시간에는 ADC/DAC 컨버터를 통해 로봇이 아날로그와 디지털 세상을 연결하는 방법을 알아보았습니다. 로봇의 '뇌'인 MCU는 주변 센서, 액추에이터, 그리고 다른 프로세서와 데이터를 주고받아야만 완전한 기능을 수행할 수 있습니다. 이때 MCU가 다양한 장치들과 효율적으로 데이터를 교환하는 데 사용되는 것이 바로 **통신 프로토콜(Communication Protocol)**입니다. 그중에서도 UART, I2C, SPI 통신은 임베디드 시스템에서 가장 널리 사용되는 필수 통신 프로토콜로, 로봇의 센서 데이터 수집부터 액추에이터 제어, 다른 모듈과의 연동에 이르기까지 핵심적인 역할을 합니다.
각 프로토콜은 통신 방식, 속도, 연결 가능 장치 수, 배선 등에 따라 장단점이 뚜렷합니다. 로봇 개발자는 프로젝트의 요구사항(데이터 전송량, 속도, 연결할 장치 수, 배선 복잡도)을 정확히 분석하여 적절한 통신 프로토콜을 선택하고 구현해야 합니다. 이 설명을 통해 UART, I2C, SPI 통신이 무엇이며, 어떻게 임베디드 시스템의 필수 통신 프로토콜이 되는지, 그 기본 원리와 사용법, 그리고 로봇 개발에서의 활용은 무엇인지 자세히 파헤쳐 보겠습니다.
로봇이 "외부 GPS 모듈로부터 위치 정보를 받고, IMU 센서로부터 자세 데이터를 읽어 들이며, 동시에 OLED 디스플레이에 현재 상태를 표시하고, 상위 프로세서와 명령을 주고받는" 것과 같은 상황이라면, UART, I2C, SPI 통신은 각각의 장치에 적합한 방식으로 데이터를 교환하여 로봇의 기능을 완성합니다.
1. UART (Universal Asynchronous Receiver/Transmitter) 통신
1.1. 개념: UART는 비동기식(Asynchronous) 시리얼(Serial) 통신 프로토콜로, 두 장치 간에 데이터를 단일 비트 스트림으로 한 번에 한 비트씩 전송합니다.
비동기식: 데이터를 보내는 측(Transmitter)과 받는 측(Receiver)이 서로 공통된 클럭 신호를 공유하지 않습니다. 대신 시작 비트(Start Bit)와 정지 비트(Stop Bit)를 사용하여 데이터 프레임을 동기화합니다.
전이중 통신 (Full-Duplex): 송신(TX) 라인과 수신(RX) 라인이 분리되어 있어 양방향으로 동시에 데이터 전송이 가능합니다.
1.2. 특징:
연결: TX(송신) 핀과 RX(수신) 핀, 총 2개의 데이터 라인과 GND만 있으면 됩니다. (VCC는 전원 공급용)
마스터/슬레이브 없음: 통신 주체가 명확히 구분되지 않고, TX-RX로 직접 연결됩니다. (PC-MCU 통신 등)
클럭 없음: 클럭 신호 라인이 없어 배선이 간단합니다.
통신 속도: 일반적으로 수 kbps ~ 수 Mbps 범위로 설정하며, 양쪽 장치가 동일한 통신 속도(Baud Rate)를 사용해야 합니다.
오류 검사: 패리티 비트(Parity Bit)를 선택적으로 사용하여 데이터 오류를 감지할 수 있습니다.
1.3. 장점: 간단한 배선, 널리 사용됨.
1.4. 단점: 데이터 전송 속도가 비교적 느리고, 여러 장치 간 통신에 적합하지 않습니다 (점대점 통신).
1.5. 로봇 개발에서의 활용:
PC-로봇 디버깅/로그 출력: 로봇의 상태 정보나 디버깅 메시지를 PC로 전송합니다.
GPS 모듈 통신: GPS 모듈로부터 위치 정보를 수신합니다.
Bluetooth/Wi-Fi 모듈 통신: 블루투스 또는 Wi-Fi 모듈을 통해 무선 통신을 제어합니다.
센서/모듈 연동: UART 인터페이스를 가지는 다양한 센서나 모듈(예: LIDAR Lite, 일부 카메라 모듈)과 데이터를 주고받습니다.
2. I2C (Inter-Integrated Circuit) 통신
2.1. 개념: I2C는 필립스(현 NXP)에서 개발한 동기식(Synchronous) 시리얼 통신 프로토콜로, 두 개의 와이어(SDA, SCL)만을 사용하여 여러 장치 간에 데이터 통신을 가능하게 합니다.
동기식: 클럭(SCL) 라인을 공유하여 데이터 전송 타이밍을 맞춥니다.
2.2. 특징:
연결: SDA(Serial Data Line) 핀과 SCL(Serial Clock Line) 핀, 총 2개의 데이터 라인과 GND만 필요합니다. 각 라인에는 풀업(Pull-up) 저항이 필요합니다.
마스터/슬레이브 구조: 통신을 제어하는 마스터(Master) 장치(보통 MCU)와, 마스터의 명령에 따라 동작하는 하나 이상의 슬레이브(Slave) 장치로 구성됩니다.
주소 기반 통신: 각 슬레이브 장치는 고유한 7비트 또는 10비트 주소(Address)를 가지며, 마스터는 이 주소를 사용하여 특정 슬레이브와 통신합니다.
다중 장치 연결: 하나의 마스터에 여러 개의 슬레이브를 병렬로 연결하여 통신할 수 있습니다 (버스 통신).
통신 속도: 표준 모드(100kbps), 고속 모드(400kbps), 초고속 모드(3.4Mbps) 등.
2.3. 장점: 적은 배선(2선), 다중 장치 연결 용이.
2.4. 단점: 통신 속도가 SPI보다 느리고, 동시에 한 장치와만 통신 가능하며, 대용량 데이터 전송에는 부적합합니다.
2.5. 로봇 개발에서의 활용:
IMU 센서 (가속도, 자이로, 지자기): 로봇의 자세(roll, pitch, yaw)를 파악하는 IMU 센서로부터 데이터를 수신합니다.
환경 센서: 온도, 습도, 압력 센서 등 다양한 환경 센서로부터 데이터를 수신합니다.
OLED/LCD 디스플레이: 로봇의 상태 정보나 간단한 메시지를 표시하는 소형 디스플레이를 제어합니다.
확장 보드/모듈: I2C 인터페이스를 제공하는 확장 보드나 외부 EEPROM과 통신합니다.
3. SPI (Serial Peripheral Interface) 통신
3.1. 개념: SPI는 모토로라에서 개발한 동기식 시리얼 통신 프로토콜로, 4개의 와이어를 사용하여 고속 전이중(Full-Duplex) 통신을 가능하게 합니다.
동기식: 클럭(SCLK) 라인을 공유하여 데이터 전송 타이밍을 맞춥니다.
3.2. 특징:
연결: SCLK(Serial Clock), MOSI(Master Out Slave In), MISO(Master In Slave Out), SS/CS(Slave Select/Chip Select) 핀, 총 4개의 데이터 라인과 GND가 필요합니다.
마스터/슬레이브 구조: 하나의 마스터와 하나 이상의 슬레이브 장치로 구성됩니다. 마스터는 SCLK 신호를 생성하고 SS 핀을 사용하여 특정 슬레이브를 선택합니다.
다중 장치 연결: SS 핀이 로봇의 GPIO 핀 수에 따라 제약이 있지만, 여러 개의 슬레이브를 병렬로 연결하여 통신할 수 있습니다. 각 슬레이브는 고유한 SS 핀에 연결됩니다.
전이중 통신: MOSI(마스터가 슬레이브로)와 MISO(슬레이브가 마스터로) 라인이 분리되어 있어 동시에 데이터를 송수신할 수 있습니다.
통신 속도: 수 Mbps에서 수십 Mbps에 이르는 고속 통신이 가능합니다.
3.3. 장점: 고속 통신, 전이중 통신, 다중 장치 연결 가능.
3.4. 단점: I2C보다 많은 배선(4선), 하나의 슬레이브 장치와 통신할 때마다 SS 핀이 필요하여 GPIO 핀을 많이 소비할 수 있습니다.
3.5. 로봇 개발에서의 활용:
SD 카드 모듈: 로봇의 센서 데이터 로그를 저장하거나, 지도 정보를 로드하는 등 대용량 데이터 저장.
고속 ADC/DAC: 고속 샘플링 또는 고속 출력이 필요한 정밀 센서/액추에이터.
컬러 LCD/OLED 디스플레이: 로봇의 복잡한 GUI(그래픽 사용자 인터페이스) 표시.
FLASH 메모리/EEPROM: 펌웨어 백업, 설정값 저장 등.
고속 센서: 일부 LiDAR 센서나 카메라 모듈 등 대용량/고속 데이터 처리가 필요한 센서.
4. 통신 프로토콜 선택 가이드 (요약)
특징 UART I2C SPI
방식 비동기식 시리얼 동기식 시리얼 동기식 시리얼
데이터 라인 2개 (TX, RX) + GND 2개 (SDA, SCL) + GND (+ 풀업 저항) 4개 (MOSI, MISO, SCLK, SS/CS) + GND
장치 수 2개 (점대점) 여러 개 (슬레이브 주소 기반, 버스) 여러 개 (슬레이브 셀렉트 기반, 버스)
클럭 없음 (시작/정지 비트 동기화) SCL 라인 공유 SCLK 라인 공유
마스터/슬레이브 없음 1 마스터, N 슬레이브 1 마스터, N 슬레이브
통신 속도 느림 ~ 보통 (수 kbps ~ 수 Mbps) 보통 (수백 kbps ~ 수 Mbps) 빠름 (수 Mbps ~ 수십 Mbps)
전이중/반이중 전이중 반이중 전이중
복잡도 간단 중간 중간
주요 활용 PC 통신, GPS, Bluetooth/Wi-Fi 모듈, 로깅 IMU, 환경 센서, 소형 OLED, EEPROM SD 카드, 고속 ADC/DAC, 대형 디스플레이, FLASH
UART, I2C, SPI 통신은 임베디드 시스템에서 마이크로컨트롤러(MCU)가 다양한 외부 장치들과 효율적으로 데이터를 교환하는 데 사용되는 필수 통신 프로토콜입니다. UART는 간단한 점대점 비동기 통신에, I2C는 2개 선으로 다수의 저속 슬레이브 장치와 통신하는 데, SPI는 4개 선으로 다수의 고속 슬레이브 장치와 통신하는 데 각각 최적화되어 있습니다.
각 통신 프로토콜의 기본 원리, 특징, 장단점을 완벽하게 이해하고 프로젝트의 요구사항(데이터 전송량, 속도, 연결할 장치 수, 배선 복잡도)을 고려하여 적절한 프로토콜을 선택하고 구현하는 것은 로봇의 센서 데이터를 효율적으로 수집하고, 액추에이터를 정확하게 제어하며, 다른 모듈과의 연동을 안정적으로 수행하는 데 필수적인 역량이 될 것입니다. 로봇에게 '효율적인 대화 능력'을 선물하여 더욱 강력하고 정밀하게 작동하는 자율 로봇 시스템을 만들어가시기를 응원합니다!
- 이전글DMA (Direct Memory Access): MCU의 부담을 줄이는 데이터 전송 기술 26.01.01
- 다음글ADC/DAC 컨버터: 아날로그와 디지털 세상 연결하기 26.01.01
댓글목록
등록된 댓글이 없습니다.
