RS232 | RS485 | |
특징 | 1. 1대 1통신만 가능 2. 전송거리가 짧고, 노이즈에 약하다. -> Single-ended 방식 3. 전송속도가 비교적 느리다. |
1. 1대 N통신 가능 2. 전송거리가 길고, 노이즈에 강하다. -> 차동신호 방식 3. 전송속도가 빠르다. |
결선 방식 | 3개의 선(TX, RX, GND)을 사용하여 단방향 또는 전이중통신이 가능하다. |
2선 방식(A,B 또는 TRX+, TRX-)을 사용 시 반이중통신이 가능하다. 4선 방식 사용 시 전이중통신도 가능하다. |
전기적 특성 | 전압 레벨( ±3V ~ ±15V)이 TTL(3.3V/5V)보다 높아서 레벨 변환이 필요하다. | 차동신호 방식을 사용하여 노이즈에 강하고 장거리 통신에 적합니다. |
통신 방법 | 비동기 UART 방식 TX에서 데이터 전송 시 RX로 수신이 가능하다(전이중 구조) |
비동기 UART 방식 RE(수신 Enable), DE(송신 Enable) 제어 선이 필요 보통 RTS(RE+DE)핀으로 송수신 모드를 제어 |
공통점 | 둘 다 UART 기반 비동기 시리얼 통신이다. 따라서 동일한 Baudrate, 데이터 비트 수, 패리티, 시작 및 정지 비트 등이 사전 설정되어야 통신이 가능하다. |
RS232
● Single-ended 방식
데이터 신호를 하나의 선(TX 또는 RX)으로 보내고 수신 측에서는 이 신호의 전압을 공통된 기준선(GND)과 비교해서 판단하는 방식이다. 이 방식은 GND의 상태에 매우 민감할 수 밖에 없는데, 예를 들어 GND에 0.5V의 노이즈가 섞이면 +5V를 보내도 수신 측은 +4.5V로 해석할 수 있다. 따라서 RS232는 장거리나 노이즈 환경에 매우 약하다.
RS485
● 차동신호 방식
RS232 통신과는 다르게 데이터가 한 선이 아니라 두 선이라서 차동으로 데이터를 송수신한다.
예를 들어 그림1처럼 UART TXD로 5V, 5V, -5V로 신호를 보내면, RS485 Transceiver는 그 신호를 받아서 TXD+와 TXD-로 나누어 차동신호로 내보낸다.
이때 TXD+는 그대로, TXD_는 반전해서 보내는데 그림1처럼 TXD+쪽은 5V, 5V, -5V가 나가고, TXD-쪽은 -5V, -5V, 5V가 나가게 된다.
그리고 그림1에서 내보낸 차동신호는 그림2의 초록색 부분처럼 들어오게 되는데 아래와 같이 해석된다.
즉, 위의 식대로 계산하면 처음에 UART에서 보낸 신호 +5V, +5V, -5V가 +10V, +10V, -10V가 되어 Logic이 1,1,0으로 동일하다. 그리고 중요한 점은 Noise가 들어온다고 해도 아래처럼 상쇄되어서 Logic 값에는 영향이 없다는 것이다.
● 통신 방법
RS485 2선 방식에서 RE, DE 핀은 보통 하나로 묶어서 제어한다. 이 두 개의 핀을 하나로 묶은 핀을 RTS라고 부르고 이 RTS핀 제어에 따라 RS485통신이 송신모드 혹은 수신모드로 선택되어 통신하게 된다. 대부분 RTS가 High일 때 송신모드로 Setting되고 Low일 때 수신모드로 Setting된다.
RS485 2선 방식은 반 이중 방식이기 때문에 송수신이 동시에 되지 않는다. 따라서 송신 측에서 데이터를 보내고 응답을 받는 형식으로 사용해야 한다. 이 동작은 아래처럼 RTS 스위칭에 의해 구현할 수 있다.
순서적으로만 보면 정말 간단하게 표현할 수 있지만 여기에는 한 가지 문제가 있다. 바로 스위칭 타이밍으로, 만약 스위칭 타이밍이 맞지 않으면 데이터 송신에는 성공할 수 있지만 수신 시에는 원하는 데이터를 받지 못하고 데이터가 잘린다거나 깨지는 문제가 발생한다. 따라서 이를 해결하기 위해 송신버퍼의 상태를 체크하는 과정을 추가해야 하는데 RS485 송신 버퍼가 비워졌는지를 확인한 뒤 전송이 완료되어 송신 버퍼가 비워지면 그와 동시에 RTS Low Setting을 통해 수신 모드로 변경하면 된다. 즉, 전송 뒤 수신모드로 바꾸는 타이밍 자체를 송신 버퍼가 비는 시점(데이터 전송이 완료된 바로 직후)에 스위칭하는 방식으로 사용하는 것이다.
최종적인 동작 순서는 아래와 같이 구현할 수 있다.