Você está na página 1de 23

Comunicao Serial USART/ UART

Comunicao Serial
USRT - Universal Synchronous Receiver/Transmitter
- So utilizados em sistemas de comunicao para aplicaes especficas, com sincronizao feita por hardware e a muito curtas distncias;

UART - Universal Asynchronous Receiver/Transmitter:


- So utilizados para comunicar a maiores distncias e a sua sincronizao e feita por software. Devido sincronizao ser feita por software, a velocidade de comunicao a que funcionam, muito menor que a dos USRTs;

USART - Universal Synchronous/Asynchronous Receiver/Transmitter: So os mais usados, devido a terem maior


versatilidade, por poderem ser utilizados em ambos os modos (sncrono e assncrono).
Algoritmos e Tcnicas de Programao Escola de Engenharia Mackenzie

Universal Synchronous Receiver/Transmitter


Sncrono
- Necessita de clock; - Pode operar de forma mais rpida que a comunicao assncrona; - O clock precisa ser sincronizado; - Os dados podem ser no espaados.

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Universal Asynchronous Receiver/Transmitter


Assncrono
- No necessita de clock; - Um cabealho adicionado na mensagem para sincronizao; - Os dados so uniformemente espaados; - Taxa de transmisso: 110 Bd at 256 kBd; - Aplicaes: Comunicao serial entre computadores Comunicao ponto a ponto

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Universal Asynchronous Receiver/Transmitter


Diagrama de blocos

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

RS232/IA232
Universal Asynchronous Receiver/Transmitter
- Nvel de tenso no compatvel com o TTL

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

RS232/IA232
Protocolo
- Start bit - 8 bits de dados - Paridade: Nenhuma, Par ou mpar - Stop bit

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

RS232/IA232
Baud Rate
- Nmero de smbolos transmitido por segundo - No caso da RS232 um smbolo equivale a 5, 6, 7 ou 8 bits de dados - A unidade baud (Bd) derivado do nome Emile Baud, inventor do cdigo Baudot utilizado na telegrafia.

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

RS232/IA232 Conexo

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

RS232/IA232 Conexo DTE

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

RS232/IA232 Conexo DCE

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

RS232/IA232 Conexo DTE/DCE


DTE (DB9 Macho) 2 TX 3 RX 5 Terra DTE (DB9 Macho) 2 TX 3 RX 5 Terra DCE (DB9 Fmea) 2 RX 3 TX 5 Terra DTE (DB9 Macho) 3 RX 2 TX 5 Terra

DCE (DB9 Fmea) 3 TX 2 RX 5 Terra

DCE (DB9 Fmea) 2 RX 3 TX 5 Terra

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

RS232/IA232 Conexo DTE/DCE


Pin 2 - Transmitted Data (TxD) :
- This signal is active when data is transmitted from the DTE device to the DCE device. When no data is transmitted, the signal is held in the mark condition (logic '1', negative voltage). - NOTE: Pin 2 on the DCE device is commonly labeled "Received Data", although by the EIA232 standard it should still be called Transmitted Data because the data is thought to be destined for a remote DTE device

Pin 3 - Received Data (RxD)


-This signal is active when the DTE device receives data from the DCE device. When no data is transmitted, the signal is held in the mark condition (logic '1', negative voltage). -NOTE: Pin 3 on the DCE device is commonly labeled "Transmitted Data", although by the EIA232 standard it should still be called Received Data because the data is thought to arrive from a remote DTE device.

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Biblioteca RS232
Biblioteca RS232
http://www.teuniz.net/RS-232/RS-232.tar.gz Esta biblioteca possui os parmetros fixos de 8 bits de dados, nenhuma paridade e 1 bit de parada.

int OpenComport(int comport_number, int baudrate) - Abre a porta serial no computador; - comport_number: nmero da porta serial (0 at 15 que representa a porta COM 1
at COM 16); -baudrate: 110 , 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 128000, 256000; - Retorna 1 quando no for possvel realizar a conexo.

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Biblioteca RS232
int PollComport(int comport_number, unsigned char *buf, int size)
- Realiza a leitura da porta serial e armazena no buffer; - comport_number: nmero da porta serial (0 at 15 que representa a porta COM 1 at COM 16); -unsigned char *buf : ponteiro do vetor buffer; -int size: tamanho do vetor do buffer; -Retorna o nmero de bytes recebidos e armazenados no buffer. O valor 0 indica que nenhum byte foi recebido. Aps realizar a leitura do buffer, um atraso de 100 ms deve ser realizado.

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Biblioteca RS232
void cprintf(int comport_number, const char *text)
- Envia texto pela porta serial. O texto deve terminal com zero. -comport_number: nmero da porta serial (0 at 15 que representa a porta COM 1 at COM 16); -const char *text : ponteiro do vetor do text;

int SendByte(int comport_number, unsigned char byte)


- Transmite um byte pela porta serial; -comport_number: nmero da porta serial (0 at 15 que representa a porta COM 1 at COM 16); - unsigned char byte: Byte a ser transmitido -Retorna 1 em caso de erro.

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Biblioteca RS232
int SendBuf(int comport_number, unsigned char *buf, int size)
- Transmite vrios Bytes pela porta serial; -comport_number: nmero da porta serial (0 at 15 que representa a porta COM 1 at COM 16); - unsigned char *buf: ponteiro do vetor buffer -int size : nmero de bytes a ser transmitido -Retorna -1 em caso de erro ou o nmero de Bytes transmitido.

void CloseComport(int comport_number) - Fecha a porta serial. Esta operao deve ser realizada antes de fechar o programa; - comport_number: nmero da porta serial (0 at 15 que representa a porta COM 1
at COM 16).

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Biblioteca RS232 - Exemplo


#include "stdio.h" #include "stdlib.h" #include "conio.h" #include "rs232.h" unsigned char buffRx[2048]={0}; // buffer do Rx unsigned char buffTx[2048]={0}; // buffer do Tx

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Biblioteca RS232 - Exemplo


int main(void) { char c; int porta=0; int n; int baudrate=57600; OpenComport(porta,baudrate); // Abre porta COM

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Biblioteca RS232 - Exemplo


do { n = PollComport(porta,buffRx,2048); // Verifica se existe //dados no buffer, n=0, buffer vazio if (n!=0) { printf("\nMensagem Recebida\n"); printf("%s\n",buffRx); }

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Biblioteca RS232 - Exemplo


else { if ( kbhit() ) // Gera interrupo { c=getche(); printf("\nMensagem transmitida\n"); scanf("%s",&buffRx); cprintf(porta,buffRx); // Transmite buffer } _sleep(100);// gera atraso de 100 ms aps a leitura do buffer }

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Biblioteca RS232 - Exemplo


} while( c!= 'Q'); // Sai do programa quando a tecla [Q] for //pressionada CloseComport(porta);// Fecha porta COM e libera o uso para //outro programa

return 0;
}

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Referncia Bibliogrfica
[1] http://pt.wikipedia.org/wiki/UART

[2] http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html
[3] James, Kevin, PC interfacing and data acquisition : techniques for measurement, instrumentation and control, Oxford : Newnes, 2003.

[4] http://www.teuniz.net/RS-232/

Algoritmos e Tcnicas de Programao

Escola de Engenharia Mackenzie

Você também pode gostar