RS-232와 UART

2015. 6. 1. 15:27 from 통신

RS-232와 UART


UART 통신이란 직렬 범용('U'가 Universal을 의미)통신의 규격을 정해 놓은 것이고(쉽게 말해서 디지털로 0과 1을 어떻게 보낼 것인지) 여기에 UART(Universal Asynchronous Receiver/Transmitter)와 USART(Universal Synchronous/Asynchronous Receiver/Transmitter)로 나누어지는 것은 동기(Sync)냐 비동기(Async) 통신이냐는 개념까지 더해서 혼동이 생기는 것 같다. 일반적으로 비동기식으로 많이 쓰기 때문에 UART통신이라고 부르는 것도 맞지만 동기식 통신도 있으니 USART가 더 일반적인 용어라고 보는 것이 맞는 것 같다. 보통 마이크로컨트롤러 데이터시트에는 동기/비동기식 직렬 통신을 모두 지원하기 때문에 USART로 표시하기도 한다.

이에 반해 RS-232는 UART라는 통신 방식으로 데이터를 주고 받을 수 있게 정한 통신 장비(하드웨어)에 대한 규격이다. 역사적으로 RS-232는 1969년 미국의 EIA(Electric Industries Association)에 의해 정해진 표준 인터페이스라고 할 수 있다. 간단히 말해서 PC 통신을 위한 하드웨어 규격이라고 하는 것이 더 이해하기 쉬울 수 있다. 하드웨어 규격이라고 하면 데이터 라인 종류라든가 커넥터 규격, 전기 신호 규격 등을 정해서 표준으로 정해서 공개했기 때문에 통신 장비 제조사들은 이러한 표준규격만 따라 만드리만 하면 UART 통신을 할 수 있는 것이다. 주로 RS-232C라고 불리는데, RS는 Recommended Standard의 약자이고 뒤의 C는 버전을 의미하고 232는 이렇게 정한 규격을 EIA에서 부여한 코드라고 볼 수 있습니다. 정리하자면 UART는 디지털 데이터 0과 1을 어떻게 통신할 것인지에 대한 통신 규격을 정해 놓은 것이고 RS-232는 이러한 UART 통신을 할 수 있게 PC의 통신 하드웨어 규격을 표준으로 정해 놓은 것이다.

이렇게 정해진 RS-232C는 한 번에 한 비트씩 전송되는 방식이고 통신 거리는 일반적으로 15 m(50ft)이지만 통신 속도가 높을수록 거리가 짧아지고 느릴수록 더 멀리까지 가능하다. 하지만 다이나믹셀은 이러한 RS-232C 신호가 아닌 5 V TTL 레벨의 통신을 수행한다. RS_232C는 프린터 같은 PC 주변기기와 통신하기에는 적합하지만 배터리 기반으 ㅣ임베디드 시스템과 통신하기 위해서는 적합하지 않기 때문이다.




출처 : 임베디드 로보틱스  (오픈 소스를 활용한,OpenCM의 활용)

'통신' 카테고리의 다른 글

통신 방식  (0) 2015.06.07
왜 TTL 통신인가  (0) 2015.06.01
Buad rate  (0) 2015.06.01
직렬 통신과 병렬 통신  (0) 2015.06.01
동기 비동기 개념  (0) 2015.05.28
Posted by 나무길 :

Buad rate

2015. 6. 1. 15:10 from 통신

Buad rate


비동기식 통신을 할 경우 송신부와 수신부는 같은 속도로 데이트를 보내거나 받아야 한다. 시작 비트가 들어오면 수신부는 타이머를 리셋하게 되고 이후 일정한 시간 간격으로 데이터를 읽게되는데, 이때 송신부와의 속도가 다르게 되면 데이터를 똑바로 읽을 수 가 없다. 예를 들어 수신부가 송신부보다 빠르게 데이터 샘플링을 하여 읽게 되면 아래 그림과 같이 한 개의 비트 정보를 두변 읽게 될 수 있고, 반대로 너무 느리게 샘플링 한다면 데이터를 빼먹고 읽거나 패리티 비트를 데이터로 읽게되는 오류가 발생할 수 있다.



수신부는 시작 비트와 동기화하며 정지 비트를 이용하여 데이터를 확인한다. 정확한 데이터 송수신을 위해서 통신 속도를 정해줘야 하는데, 이것이 baud rate 세팅이다. Baud rate은 300, 1200, 2400, 4800, 9600, 19200 혹은 이들의 2배수 중에서 선택 가능하다. 예를 들어 9600 baud rate은 샘플링을 1초에 9600번 한다는 의미이며 이는 1초에 9600비트에 해당한다. 이 경우 한 개의 비트는 1/9600 = 104.17 us 폭을 갖게 됨을 의미한다.

데이터 통신양을 살펴보면 19200 baud rate, 1개 start bit, 8 data bits, 패리티 사용하지 않고 1 개 stop bit를 사용한다고 하면 데이터 8 비트 송수신을 위해 한 번에 10 비트를 보내야 한다. 19200 baud rate은 19.2 kbps에 해당하므로 총 전송 가능 데이터 속도는 19.2 kbps * 8/10 = 15.36 kbps 가 된다. 이는 1.875 Kbtye/s 속도에 해당한다.


'통신' 카테고리의 다른 글

왜 TTL 통신인가  (0) 2015.06.01
RS-232와 UART  (0) 2015.06.01
직렬 통신과 병렬 통신  (0) 2015.06.01
동기 비동기 개념  (0) 2015.05.28
시리얼 통신 개요  (0) 2015.05.28
Posted by 나무길 :

직렬 통신과 병렬 통신

2015. 6. 1. 12:59 from 통신

병렬 통신


일반적으로 마이크로프로세서가 데이터를 주고 받는 방식은 병렬 통신과 직렬 통신 2가지로 볼 수 있다. 병렬 통신이란 다수의 비트를 한번의 클럭 타이밍에 처리하는 방식을 말한다. 이는 대량의 데이터를 짧은 시간에 한꺼번에 처리함으로써 통신 속도의 향상을 꾀한 방식이다. 8비트 병렬 통신이라고 하면 8개의 IO 포트들을 통해서 한번에 8비트(1바이트)가 동시에 전송된다. 하지만 병렬 통신은 한 번에 처리하는 비트가 많아질수록 많은 데이터 라인이 필요하고 사용되는 포트수가 많아져서 설계의 어려움과 함께 비용이 증가한다. 그리고 라인수가 많기 떄문에 멀리까지 통신하기 어려울 뿐만 아니라 선간 누화(노이즈)현상까지 생겨서 데이터 무결성에도 문제가 생긴다. 이러한 이유로 외부와 통신하는 경우에는 병렬 통신보다 라인수가 훨씬 적은 직렬 통신을 많이 사용하게 된다.



직렬 통신


직렬 통신이란 데이터 비트를 1개의 비트 단위로 송수신하는 방식을 말한다. 데이터 비트가 1비트이기 때문에 송순에 필요한 라인수가 2개면(RX/TX) 충분해진다.

한 개의 비트의 정보를 순차적으로 전달하는데, 8비트 통신의 경우 1비트씩 순차적으로 8개의 정보를 전달하는 방식이며, 직렬 통신을 시리얼 통신이라고 부르는 이유이다. 직렬 통신은 한 번에 처리하는 데이터가 많지 않기 때문에 병렬 통신에 비해 느리지만 라인 구성이 간단해서 구현하기 쉽고 비용이 적다. 거기에다가 멀리까지 갈 수 있는 장점이 있어서 OpenCM9.04와 같은 임베디드 환경에서 많이 쓰인다.



출처 : 임베디드 로보틱스  (오픈 소스를 활용한,OpenCM의 활용)

'통신' 카테고리의 다른 글

왜 TTL 통신인가  (0) 2015.06.01
RS-232와 UART  (0) 2015.06.01
Buad rate  (0) 2015.06.01
동기 비동기 개념  (0) 2015.05.28
시리얼 통신 개요  (0) 2015.05.28
Posted by 나무길 :