여짓것 UART 를 써오면서 통신에 대한 이해없이 그냥 소스코드를 ctrl + c,  ctrl + v 로 사용해 왔다. 그래서 뭐 통신이란 말이 나왔다하면 RS232C, UART, SPI 이런 단어들이 맨날 나오면서도 뭔소린지 몰랐었는데 이번 기회에 비동기통신에 대해 한번 정리해 볼려고한다.



비동기 통신 UART, RS232C


 먼저 UART 를 실제 사용하면 RS232C 케이블로 외부장치와 연결해야 하고 RS232C 통신규격에 따라 송수신을 해야한다. 여기서 계속 나오는 RS232C 가 무엇일까. 앞으로도 다른 무엇을 할 때 통신하면 빼놓지 않고 같이 나오는 것이다. RS232C 란 원래 모뎀과 터미널간의 인터페이스 방법에 대한 EIA (미국전자공업협회)의 RS (Recommended Standard) 규격이다. 실제로 UART 는 "RS232C 기능을 수행하는 장치"라고 할 정도로 RS232C 규격에 따라 송수신을 한다.


 RS232C 는 통신 프로토콜 (protocal) 중 하나이다. 음.. 일단 프로토콜이란 "통신상의 규약"이다. 결국 통신상에는 여러가지 규약이 있는데 그중 하나가 RS232C 라는 말이다. 이렇게 통신 규약이 있는 이유는 장치 상호간에 데이터의 송수신을 원활히 하기 위해서는 회선의 접속 및 절단, 비트 신호의 형태 및 의미, 전송 속도 및 제어 방법 등이 수신과 송신 양방간에 서로 맞아야 하므로 이런 것들에 대하여 미리 규약을 정할 필요가 있는데, 이와 같은 장치 상호간의 통신 규약을 프로토콜 (protocal) 이라고 한다.


  RS232C 에서는 회선의 접속, 정보전송, 절단 등과 같은 통신 프로토콜 외에도 보율, 패리티 방법, 프레임, stop 비트의 수 등에 대해서도 규정하고 있는데 이들 중 보율 (baud rate) 은 가장 기본이 되는 규약이다. 그 다음으로 기본이 되는 규약은 프레임 구성에 대한 것이다. 프레임 (frame) 이란 정보를 이루는 하나의 단위 (RS232C에서는 1바이트) 를 특별한 구조로 조직하게 하는 틀을 말한다. 데이터 비트의 수, 패리티의 종류, stop 비트의 수 등이 있다. 



보율 (baud rate)


 보율 (baud rate). 앞에서 나온것과 같이 보율은 RS232C 에 있어서 가장 기본이 되는 규약이다. 보율이란 (baud rate) 1초 동안에 전송되는 비트의 수, 즉 "초당 비트 전송 수 (BPS: Bits Per Second)" 로서, 수산과 송신 양측에서 이것이 같아야 한다. 


baud rate = bits/sec(bps)




프레임 (frame)


 그 다음으로 중요한 것이 프레임 (frame)이다. RS232C 에서는 하나의 바이트를 아래 그림과 같은 구조로 조직한다. 1개의 start 비트, 8개 또는 9개의 데이터 비트, 1개의 stop 비트가 직렬로 구성된다. 


 비동기 통신에서는 동기 통신에서와 달리 데이터를 시스템 클럭에 동기해서 전송하지 않기 때문에 동기 통신처럼 연속해서 데이터를 보낸다면 하나의 바이트가 어디서 시작해서 어디서 끝나는지 알 길이 없다. (여기서 동기 통신의 특성 다시한번 볼것) 그래서 시작점과 끝 점을 알려줘서 다른 장치 상호간 통신을 할 수 있게 하는 것이다. start 비트는 1개로 논리 0 이고 stop 비트는 1~2개로 논리 1이다.


 RS232C 수신에서는 start 비트를 놓치면 어떻게 될까? 망하는 거다. 그래서 start 비트가 중요한데 통신이 시작되기 전에는 mark 상태라고 해서 논리 1의 상태가 지속된다. 통신이 시작되면 start 비트부터 수신되므로(논리 0) 쉽게 start 비트를 잡을 수 있다. 문제는 그 다음인데, 데이터는 논리 값이 지 맘대로다. 그렇다면 stop 비트가 논리 1 이라 한들 어떻게 데이터 비트와 stop 비트를 구분할 수 있을까. 그것은 프레임(틀이 정해져있으므로)으로 알수 있다. stop 비트 자리가 정해져 있기 때문에 stop 비트 자리에 논리 1이 있고 바로 이어서 논리 0이 있으면 이것을 start 비트로 인식한다. 만약 start 비트 자리에 이것이 없으면 framing error(USR<4>) 를 발생한다.






 start BIT 앞 부분이 mark.


사진 출처 : http://blog.naver.com/PostView.nhn?blogId=ubicomputing&logNo=150121031176&categoryNo=34&viewDate=&currentPage=1&listtype=0&from=postList

내용 출처 : AVR과 그 응용

'project > 스마트폰으로 avr 제어' 카테고리의 다른 글

step2-2. DC Motor pwm control  (0) 2013.11.20
step2-1. DC Motor pwm control  (2) 2013.11.19
step1. 모터드라이브 L298N 제어  (0) 2013.11.19
step0. project 목차  (0) 2013.11.19
RF 용어 설명  (0) 2013.11.16
Posted by 나무길 :