강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

박진호님의 프로필 이미지
박진호

작성한 질문수

PCB HW설계 실무 : STM32를 활용한 Mixed-signal 보드 설계 프로젝트

UART to TTL Converter schematic 설계하기

URAT 통신

해결된 질문

작성

·

11

0

안녕하세요. 삼코치님 질문이 있습니다.

 

UART 통신에 대한 질문입니다.
UART 통신의 경우, 직렬 방식으로 데이터를 교환하는 방식으로 알고 있습니다. USB도 핀 숫자를 보면 직렬방식의 통신 방식인것을 알 수 있었는데요. CH340C라는 컨버팅 소자를 사용하는 이유가 데이터 계층이 달라서 사용하는게 맞을까요?

  1. USB의 경우 PHY 계층의 0V ,3V와 같은 시그널로 존재

  2. MCU에서 통신하는 RX,TX line의 경우 디지털 0과 1인 MAC 계층으로 존재


    위 두가지 데이터의 계층이 다르기 때문에 사용하는 것이 맞나요???

 

추가 질문입니다. 만약 병렬 시그널로 입력이 되어서 직렬 시그널로 변환되는 경우도 UART 통신으로 생각할 수 있을까요?

답변 1

0

안녕하세요, 답변 남겨드립니다.

먼저 UART 통신과 USB 통신을 구분해야 합니다. 말씀하신 대로 UART는 MCU 내부에서 가장 기본적으로 사용하는 직렬 통신 방식 중 하나이며, 보통 TX, RX 두 가닥의 선으로 데이터를 주고받습니다. 여기서 전송되는 신호는 단순히 디지털 로직 레벨(예: 0V = Logic '0', 3.3V = Logic '1') 기반이며, 별도의 클록 라인이 없고 Start/Stop bit로 프레이밍을 합니다. 즉, UART는 물리 계층(Physical Layer)에서 아주 단순한 직렬 전송 규격입니다.

반면 USB는 물리 계층부터 상위 계층까지 훨씬 복잡합니다. 단순히 "0V와 3V" 같은 전기적 신호만 다루는 것이 아니라, Differential Signaling (D+, D-)을 사용하고, 상위 계층에서는 패킷 기반의 프로토콜을 통해 Host와 Device 간의 통신을 관리합니다. 예컨대 USB는 Enumeration, Endpoint, Frame, Token 등의 개념이 필요하고, Device Descriptor를 통해 장치를 등록하는 절차가 있습니다. 즉, USB는 단순한 직렬 데이터 전송이 아니라 계층 구조가 포함된 프로토콜 스택입니다.

따라서 CH340C 같은 USB-UART 컨버터 칩이 필요한 이유는 단순히 전압 변환 때문이 아니라, USB의 복잡한 프로토콜을 해석하고 이를 단순한 UART 스트림으로 변환해주는 역할을 하기 때문입니다. 즉, PC에서는 USB Driver와 USB Host Controller가 동작하고, CH340C는 Device로서 Enumeration을 수행하여 "가상 COM 포트(Virtual COM Port)"로 등록됩니다. 그 이후 MCU의 TX/RX와 연결되어 단순한 UART 신호로 변환됩니다. 이 과정은 단순히 PHY 신호 변환이 아니라, USB Protocol Layer UART Bitstream 간의 브릿지라고 보셔야 맞습니다.

추가 질문 주신 병렬 → 직렬 변환의 경우, 모든 병렬-직렬 변환이 UART라고 보기는 어렵습니다. UART는 직렬 변환의 한 방식일 뿐이며, 명확한 규격이 있습니다. 예를 들어 FPGA 내부에서 병렬 데이터 버스를 직렬로 변환하여 송신하는 경우, 그것이 UART가 되려면 Start bit, Data bit, Stop bit의 규격을 따라야 하고, 상대방도 동일한 Baud rate과 Frame 구조를 이해해야 합니다. 만약 단순히 병렬 데이터를 Shift Register로 직렬화하는 것이라면 그것은 그냥 Serializing이지 UART는 아닙니다. 예를 들어 PCIe나 SerDes도 병렬-직렬 변환을 하지만, 이는 해당 프로토콜의 인코딩 규칙을 따르므로 UART와는 완전히 다른 통신 방식입니다.

현업 예시를 하나 들어보겠습니다. MCU와 GPS 모듈을 연결할 때는 보통 UART를 씁니다. 이때 GPS 모듈은 단순히 UART 스트림을 출력하므로 MCU가 바로 RX로 받으면 됩니다. 반대로 MCU를 PC와 연결하려면 PC는 UART 포트를 직접 갖고 있지 않기 때문에, CH340C 같은 컨버터를 써서 USB를 UART로 변환해야만 연결이 됩니다. 또 다른 예시로, SoC 내부에서 CPU와 Peripheral 사이에 AMBA AXI 버스는 병렬 데이터 전송을 하지만, 외부 칩과 통신할 때는 SPI/I2C/UART 같은 직렬 프로토콜을 씁니다. 이 경우에도 단순한 직렬화는 프로토콜이라 부를 수 없고, 정해진 신호 구조가 있을 때만 UART라 할 수 있습니다.

즉, 요약하면 CH340C는 계층 차이 때문에 필요한 것이 맞고, 단순 직렬화가 항상 UART는 아니며 UART는 명확한 프레임 규격이 있는 직렬 통신이라고 이해하시면 됩니다.

박진호님의 프로필 이미지
박진호

작성한 질문수

질문하기