재잼재잼의 티스토리

3. UART 개요 본문

MCU

3. UART 개요

재잼재잼 2019. 1. 13. 15:37

각 장치끼리 통신하는 방법은 크게 2가지로 나뉜다. 직렬통신과 병렬통신.


직렬통신은 여러 비트의 데이터(n비트)를 전송할 때, 하나의 핀을 사용해서 한비트씩 전송하는방법이다.


병렬통신은 여러 비트의 데이터(n비트)를 전송할 때, 여러개의 핀을 사용해서 한번에 여러비트씩 전송하는 방법을 말한다.



01100011 이라는 비트 배열을 전송한다고 했을 때, 8개의 핀을 사용해서 한번에 보내는 방법이 병렬, 하나의 핀으로 한비트씩 보내는 것을 직렬통신이라 할 수 있다.


ATmega128의 경우에는 56개의 디지털핀이 존재하기 때문에 최대 56핀을 사용한 병렬통신을 사용할 수 있다.


병렬통신은 주로 LCD와 데이터 교환을 할 때, 4개 ~ 8개의 디지털핀을 사용할 수 있다.


-----------------------------------------------


UART(Universal Asynchronous Receive and Transmit)통신은 직렬통신방법으로 비동기 송/수신 방식을 말한다.


데이터 통신에서 0, 1의 논리값으로 데이터를 전송하는데, 송신장치에서의 송신속도와 수신장치에서 수신속도를 일치를 시켜야 정상적인 송/수신이 이루어질 수 있다.


이러한 전송속도를 baud rate를 사용해서 결정하는데, 여기서 baud rate는 1초에 전송되는 데이터 비트의 개수를 의미한다.


ATmega128의 경우 



 12bit의 값으로 Baud rate를 결정할 수 있다. ATmega128은 8bit MCU이기 때문에 상위비트와 하위비트로 나눠서 UBRRH, UBRRL로 사용한다.



주로 ATMega128 개발보드에서는 16MHz의 오실레이터를 사용하기 때문에 해당 주파수의 전송속도별 UBRR값과 에러율을 보여준다.


Baud rate로 9600을 사용하기위해서는 UBRR값이 103이 되어야 한다. 103은 이진수로 "0110 0111"이므로, 8bit로 표현 가능하다.


그래서 실제 코드에서는 UBRRH = 0; UBRRL = 103;  <- 의 형식으로 작성한다.


//추가 -> ATmega128에서는 비동기 1배속, 비동기 2배속의 전송모드가 있음. 위의 표는 비동기 1배속(U2X=0), 비동기 2배속(U2X=1)을 사용할 때, 각각의 UBRR값을 표현하고 있음.


---------------------------------


실제 디지털핀을 통해 전송되는 데이터 프레임은 아래와 같다.



ATmega128의 UART통신은 위의 프레임을 사용하여 데이터를 전송한다.


시작비트(1bit, always low), 데이터비트(0~8bit), 패리티비트(1bit, 제외가능), 정지비트(1~2bit, always high)로 구성된다.


'MCU' 카테고리의 다른 글

6. UART 문자열 송/수신  (0) 2019.01.16
5.UART 문자 송/수신  (0) 2019.01.15
4. UART사용 - 초기화  (0) 2019.01.14
2. 버튼 채터링 해결하기  (2) 2019.01.10
1. ATmega128 환경 구성  (0) 2019.01.09