RS-232 장비가 응답하지 않을 때 가장 흔한 원인은 송신·수신 선이 엇갈리지 않았거나 두 번 엇갈린 것입니다. PC 의 COM 포트와 USB-RS232 변환기의 9핀(DB9) 커넥터는 핀 배치가 정해져 있으므로, 상대 장비 매뉴얼의 핀 표와 나란히 놓고 보면 어떤 케이블이 필요한지 알 수 있습니다.
PC(DTE) DB9 핀 배치
| DB9 핀 | 신호 | PC 쪽에서 | DB25 핀 |
|---|---|---|---|
| 1 | DCD (Carrier Detect) | 입력 | 8 |
| 2 | RxD (Receive Data) | 입력 | 3 |
| 3 | TxD (Transmit Data) | 출력 | 2 |
| 4 | DTR (Data Terminal Ready) | 출력 | 20 |
| 5 | SG (Signal Ground) | — | 7 |
| 6 | DSR (Data Set Ready) | 입력 | 6 |
| 7 | RTS (Request To Send) | 출력 | 4 |
| 8 | CTS (Clear To Send) | 입력 | 5 |
| 9 | RI (Ring Indicator) | 입력 | 22 |
표는 Linux 문서 프로젝트의 Serial-HOWTO 를 따릅니다. 9핀과 25핀은 2·3번 핀의 뜻이 서로 반대이고(9핀은 3번이 송신, 25핀은 2번이 송신), 접지는 9핀 5번·25핀 7번입니다. 9핀 ↔ 25핀 변환 젠더가 핀을 1:1 로 잇는 것이 아니라 신호 이름끼리 잇는 이유입니다.
스트레이트와 크로스(널 모뎀)
- PC 같은 단말 쪽을 DTE, 모뎀 쪽을 DCE 라고 합니다. DTE ↔ DCE 는 핀을 그대로 잇는 스트레이트 케이블을 씁니다 — DCE 는 원래 3번 핀으로 받고 2번 핀으로 보내기 때문입니다.
- DTE ↔ DTE(PC 와 PC, PC 와 DTE 처럼 배선된 장비)는 송신과 수신을 엇갈리는 널 모뎀(크로스) 케이블이 필요합니다.
- 상대 장비가 어느 쪽인지는 매뉴얼의 핀 표에서 2번 핀이 «송신(TxD)» 인지 «수신(RxD)» 인지로 봅니다. 장비 기준으로 3번이 송신이면 PC 와 같은 DTE 배치라 크로스가 필요하고, 2번이 송신이면 스트레이트입니다.
널 모뎀 결선 (DB9 ↔ DB9)
| 이쪽 핀 | 저쪽 핀 | 용도 | |
|---|---|---|---|
| 3 TxD | → | 2 RxD | 데이터 |
| 2 RxD | ← | 3 TxD | 데이터 |
| 5 GND | — | 5 GND | 신호 접지 |
| 7 RTS | → | 8 CTS | 하드웨어 흐름 제어 |
| 8 CTS | ← | 7 RTS | 하드웨어 흐름 제어 |
| 4 DTR | → | 6 DSR · 1 DCD | 모뎀 제어 |
| 6 DSR · 1 DCD | ← | 4 DTR | 모뎀 제어 |
| 9 RI | 연결 안 함 |
이 결선은 Text-Terminal-HOWTO 의 «표준 널 모뎀 케이블» 입니다. 시중 케이블 중에는 다르게 배선된 것도 있으므로, 흐름 제어를 쓸 때는 케이블의 결선도를 확인합니다.
3선이면 충분한가
장비와 PC 가 흐름 제어를 쓰지 않으면(통신 프로그램의 흐름 제어 «없음») TxD·RxD·GND 세 선만 엇갈려 이어도 됩니다. 장비가 CTS·DSR 같은 입력이 켜져 있어야 보내도록 되어 있는데 케이블에 그 선이 없다면, 같은 문서가 옛 방법으로 소개하듯 커넥터 안에서 자기 RTS 와 CTS 를, DTR 과 DSR·DCD 를 서로 이어 «스스로 허락» 하게 만들기도 합니다. 어느 쪽이 맞는지는 장비 매뉴얼의 흐름 제어 설정을 따릅니다.
통신이 안 될 때 확인 순서
- 루프백: PC 쪽 커넥터의 2번과 3번을 이어 보낸 바이트가 그대로 돌아오는지 봅니다. 돌아오면 PC 포트·변환기·드라이버는 정상입니다.
- 엇갈림: 케이블 끝에서 다시 루프백해 보면 케이블이 스트레이트인지 크로스인지 알 수 있습니다. 상대가 DTE 면 크로스여야 합니다.
- GND: 5번 접지가 빠지면 신호 기준이 없어 글자가 깨지거나 아무것도 안 옵니다.
- 설정: 속도·데이터 비트·패리티·정지 비트가 양쪽에서 같아야 하고, 흐름 제어 설정도 같아야 합니다. 하드웨어 흐름 제어를 켰는데 CTS 선이 없으면 송신이 막힙니다.
- 소프트웨어 흐름 제어(XON/XOFF)는 DC1(0x11)·DC3(0x13) 바이트로 멈춤·재개를 알리므로, 바이너리 데이터를 보낼 때는 쓰지 않습니다.
- 변환기 쪽: 단자대형 RS-232 변환기는 TxD·RxD 이름이 «변환기 기준» 인지 «상대 기준» 인지 설명서를 봅니다.
PortDock 에서는
- Serial: 상태줄에 입력 신호 CTS·DSR·RI·CD 표시등과 출력 신호 DTR·RTS 가 보여, 결선이 맞는지(상대의 DTR 이 내 DSR 로 오는지) 바로 확인할 수 있습니다. 흐름 제어는 «없음»·«하드웨어(RTS/CTS)»·«소프트웨어(XON/XOFF)» 중에서 고릅니다.
- 웹 도구 «ASCII 코드표·제어 문자»: STX·ETX·ACK·NAK·XON·XOFF 같은 제어 바이트의 값을 찾습니다.
- 웹 도구 «UART 보율 오차 계산기»: 장비 MCU 클럭에서 보율 오차가 큰지 봅니다.
작성 2026-10-23