RS-232 디버그를 위한 데이터 캡춰 케이블 제작방법

시리얼 통신장비의 디버그용 RS-232 데이터 캡춰 케이블을 만드는 방법과 DE-9 핀 배열, 시리얼 장비의 접속법에 대한 소개

시리얼통신을 사용하는 장비의 개발이나 디버그(혹은 역설계)를 위해서는, 해당 포트를 통해 어떤 메시지들이 오고 가는 확인해야 할 필요가 있다.

특히, 제어창지와 피 제어장치의 제조사가 다른데 장비간에 통신으로 인한 문제가 발생했을 경우, 서로 자기네 문제가 아니라고 궁뎅이를 뒤로 빼기에 바쁘다. 이런 상황에서 누구 궁뎅이를 걷어차 줘야 하는지 결정하려면, 제어하는 놈이 말을 잘못 한건지, 제어 받는 놈이 말귀를 못 알아 먹은건지 알아내야 하는데, 이를 위해서는 통신포트의 데이터를 중간에서 직접 들여다 봐야 한다. (증거를 들이밀어도 발 빼려고 하는건 나중에 생각하기로 하자)

직렬통신 RS-232

시리얼 통신 규격은 여러가지가 있으나, 그 중 가장 흔하게 접할 수 있는 방식은 RC-232라고 하는 규격이다.

RS-232의 신호선

RS-232는 8개의 신호선과 1개의 신호접지선을 사용하며, 보통 DE-9(DB-9 라고도 불린다)라고 하는 9핀 커넥터를 사용한다.

DE-9 암 수 커넥터
DE-9 (DB-9) 암/수 커넥터- blog.mbedded.ninja
DE-9(DB-9) RS-232 핀 배열
PIN 이름 방향 역할
1 DCD(Data Carrier Detect) 수신 통신 선로의 캐리어 신호 감지 여부
2 RXD(Receive Data) 수신 대국에서 들어오는 데이터
3 TXD(Transmit Data) 송신 대국으로 내보내는 데이터
4 DTR(Data Terminal Ready) 송신 자국의 통신 가능 상태
5 GND(Ground) 양방향 신호 기준 접지
6 DSR(Data Set Ready) 수신 대국의 통신 가능 상태
7 RTS(Request To Send) 송신 자국의 수신 가능 상태
8 CTS(Clear To Send) 수신 대국의 수신 가능 상태
9 RI(Ring) 수신 종명신호 검출
본래 RS-232규격은 PC와 모뎀을 연결하기 위한 규격으로, 모뎀통신에 필요한 여러가지 제어 신호선들이 함께 있다. 이 중 순수하게 데이터의 송수신에 사용되는 선은 RXD, TXD 2개 뿐이다. 우리는 이 2가지 신호와, 이 신호의 기준이 되는 GND만 생각하면 된다. (흐름제어를 사용할 경우 CTS/RTS도 고려 대상이 되나, 여기서는 논외로 치겠다.)

RS-232의 연결

RS-232의 장비간 접속은 매우 간단하다. 자국(또는 제어장치)의 TX가 대국(또는 피 제어장치)의 RX로, 자국의 RX가 대국의 TX로 연결되면 된다. 그리고, 두 장치가 공통된 신호의 전압 기준을 가질 수 있도록 GND끼리 연결해 주면 된다.

시리얼 통신 장비의 선로 연결 방법. RX와 TX를 서로 교차해 연결해 준다.
시리얼 통신 장비의 연결 RX와 TX를 서로 교차 연결 시킨다

신호 캡춰 방법

우리는 TXD와 RXD를 캡춰할 장비로 보내 주어야 한다. 사실 복잡할 건 없다. 캡춰를 받을 장비 입장에서는, TXD신호와 RXD 모두 수신받는 신호가 된다. TXD신호선과 RXD신호선을 하나 더 딴 다음, 캡춰받을 장비의 RX로 넣어주면 된다. 하나의 포트는 하나의 RX만 가지고 있으므로, 캡춰받을 장비는 포트가 2개 있어야 겠다.

시리얼 통신 장비간의 통신신호를 중간에서 캡춰하기 위한 개념도. 캡춰장비는 장비간의 통신에 사용되는 2가닥의 선을 모두 RXD 로 받는다.
캡춰 장비는 장비1과 장비2의 신호를 모두 RXD로 입력받는다.
이를 결선도로 그려보면 이렇게 되겠다.
캡춰 케이블의 결선도.
캡춰 케이블 결선

시리얼 캡춰 케이블을 만들어 보자

필요 자재

먼저 필요한 자재를 준비한다.

  • 적당한 길이의 3선 케이블 3EA : 필자는 남는 Canare L-282AL 오디오 선을 사용했다.
  • 입력단자용 숫놈 DE-9 1EA
  • 출력단자용 암놈 DE-9 3EA (RXD 모니터, TXD 모니터, THRU)
  • 납땜도구

입력 단자

신호를 입력받을 단자로, 숫놈이다. 수신 장치로 들어가는 케이블을 여기에 연결해 주면 된다. 사용할 선들을 색별로 묶어 납땜해 준다. 필자는 황색선을 RXD용으로, 백색선을 TXD용으로, 쉴드를 GND로 사용 했다.

시리얼 캡춰 케이블의 입력단자를 납땜한 모습
입력단자 결선

THRU 단자

입력 단자와 병렬로 연결된 단자이다. 원래의 수신 장치에 연결해 주면 된다. 입력단자와 1:1로, 동일하게 납땜해 준다.

시리얼 캡춰 케이블의 THRU단자를 납땜한 모습
THRU 단자 결선

RXD 모니터 단자

입력 단자의 RXD에 연결된 주황색 선을 2번 핀에 연결해 준다. 수신 장치에서 입력 단자를 향해 전송한 신호들은 이 포트에서 모니터 할 수 있다.

시리얼 캡춰 케이블의 RXD 모니터 단자를 납땜한 모습
RXD 모니터 단자

TXD 모니터 단자

입력 단자의 TXD에 연결된 흰색 선을 2번 핀에 연결해 준다. 입력 단자에서 수신 장치를 향하는 신호들은 이 포트에서 모니터 할 수 있다.

시리얼 캡춰 케이블의 TXD 모니터 단자를 납땜한 모습
TXD 단자 결선

완성

완성된 모습이다. 수축튜브로 정리 해 주고, 단자 구분을 위한 라벨을 붙여 준다. 시험해 보니 잘 동작한다. 다만, 사진에 보이는 것 처럼, 오래 쓰지는 못할 것 같긴 하다. 하지만 어쩌겠는가? 일단 써 먹어야지..

시리얼 캡춰 케이블의 완성된 모습
최종 완성된 모습