Sie sind auf Seite 1von 5

23/10/2019 Interfaz UART con microcontrolador PIC - OpenLabPro.

com

Interfaz UART con microcontrolador PIC

Interfaz UART con circuito PIC

El conector DB9 es un conector analógico utilizado principalmente para conexiones en serie para la
transmisión asíncrona de datos según lo dispuesto por el estándar RS-232. Aquí está el pinout del
conector PC DB9.

Pinout del conector DB9

Registros USART asociados con PIC 18F4550


PIC18F4550 tiene un módulo EUSART (USART mejorado) incorporado. El módulo tiene
características adicionales como la detección automática de la velocidad de transmisión de los
módulos UART convencionales en los microcontroladores PIC. La detección automática de la
velocidad en baudios es la técnica en la cual la velocidad en baudios se detecta automáticamente
cuando se reciben datos en el lado del controlador. Los registros asociados con el módulo se
explican a continuación.

https://openlabpro.com/guide/uart-interfacing-with-pic-microcontroller/ 1/5
23/10/2019 Interfaz UART con microcontrolador PIC - OpenLabPro.com

TXSTA

TRMT : el bit de estado (solo lectura) muestra el estado del registro de desplazamiento de
transmisión. El bit se establece cuando se completa una transmisión y se borra cuando una
transmisión está en progreso.

BRGH: configurado para determinar la comunicación asincrónica, configurado para alta velocidad
y claro para baja velocidad.

SINCRONIZACIÓN : este modo selecciona el modo de comunicación. El bit se establece para el


modo síncrono y se borra para el modo asíncrono.

TXEN: este bit se establece en alto para permitir la transmisión.

TX9: este bit se establece en alto mientras se envían datos de 9 bits de longitud (establecido para
datos de 9 bits y borrado para datos de 8 bits).

RCSTA

CREN - Configurado para habilitar la recepción continua. Borrar este bit detendrá la recepción.

RX9: este bit se utiliza cuando se reciben datos de 9 bits de longitud. El bit está configurado para
seleccionar la recepción de 9 bits borrada para seleccionar la recepción de 8 bits.

SPEN: este bit se utiliza para habilitar / deshabilitar el puerto serie (pines Tx y Rx). Se configura
para habilitar el puerto y se borra para deshabilitar el puerto serie.

SREN : este bit solo se usa en modo síncrono.

ADDEN : bit de habilitación de detección de dirección utilizado en formato de datos de 9 bits.

FERR & OERR : bit de error de trama y bit de error de desbordamiento. Los bits se establecen
cuando se producen los errores correspondientes.

TXREG
TXREG es el registro de búfer de transmisión en el que se almacenan los datos a transmitir.

RCREG

https://openlabpro.com/guide/uart-interfacing-with-pic-microcontroller/ 2/5
23/10/2019 Interfaz UART con microcontrolador PIC - OpenLabPro.com

RCREG es el registro del búfer de recepción en el que se almacenan los datos recibidos.

PIR1 (registro de solicitud de interrupción periférica)

RCIF : el indicador de interrupción de recepción se establece cuando los datos recibidos en el


registro RCREG. La interrupción de recepción ocurre si está habilitada.

TXIF : el indicador de interrupción de transmisión se establece cuando los datos en el registro


TXREG se transmiten y están vacíos.

PIE1
RCIE : al configurar este bit se habilitará la interrupción del receptor.
TXIE : al configurar este bit se habilitará la interrupción de la transmisión.

BAUDCON

Este registro controla la generación de la velocidad en baudios y algunas otras características de


UART, como la generación automática de la velocidad en baudios, la inversión de la recepción de
datos, etc.

BRG16: este bit permite la generación de la velocidad en baudios de 16 bits. Cuando se establece
este bit, los registros SPBRG y SPBRGH generan la velocidad en baudios cuando se borra, la
velocidad en baudios se genera solo por el registro SPBRG.

Configuraciones de velocidad en baudios


La velocidad en baudios es la medida de la velocidad de transferencia de datos en la comunicación
en serie en unidades de símbolos por segundo. También puede considerarse como el número de bits
por segundo en algunas circunstancias. La velocidad de transmisión se puede configurar para
diferentes modos de UART usando diferentes fórmulas.

Por ejemplo, si se va a usar una velocidad de 9600 baudios para el modo asíncrono de 8 bits de
transferencia de datos, la velocidad de transmisión se calcula con la fórmula

Velocidad de transmisión = FOSC / [64 x (SPBRG + 1)]

SPBRG + 1 = FOSC / (64 x Baudios)

https://openlabpro.com/guide/uart-interfacing-with-pic-microcontroller/ 3/5
23/10/2019 Interfaz UART con microcontrolador PIC - OpenLabPro.com

SPBRG = [20000000 / (64 x 9600)] - 1

SPBRG = 31.555 (aproximadamente 32)

El registro SPBRG debe cargarse con 31 para generar una velocidad de 9600 bits por segundo a
relojes de 20 MHz.

Firmware
Desarrollar el firmware para la comunicación UART implica configurar los registros como primer
paso. Los bits de registro de dirección del microcontrolador deben configurarse de tal manera que
el pin Rx esté configurado como entrada y el pin Tx como salida.

Register configuration for UART C


1 void setting_registers()
2 {
3 TRISCbits.RC6 = 0; //direction of Tx and Rx pins
4 TRISCbits.RC7 = 1;
5
6 SPBRG = 31; /* set the baud rate 9600 for 20 mhz clock */
7 SYNC = 0; /* asynchronous */
8 SPEN = 1; /* enable serial port pins */
9 CREN = 1; /* enable reception */
10 TXIE = 0; /* disable tx interrupts */
11 RCIE = 0; /* disable rx interrupts */
12 TX9 = 0; /* 8- or 9-bit transmission */
13 RX9 = 0; /* 8- or 9-bit reception */
14 TXEN = 1; /* enable the transmitter */
15 }

Establecer los bits de registro adecuadamente configuraría el módulo UART para la velocidad de
transmisión deseada. La transmisión de un personaje en serie usando el módulo requeriría que el
personaje se cargue en el registro de desplazamiento de transmisión y espere hasta que se complete
la transmisión.

Loading a byte to UART transmit buffer register C


1 void transmit_character(char out)
2 {
3 while(TXIF==0); /*wait for transmit interrupt flag*/
4 TXREG=out; /*wait for transmit interrupt flag to set which in
5 for another transmission*/
6 }

Los datos recibidos del otro dispositivo se almacenarán en el registro del búfer de recepción. Para
leer el carácter recibido, tenemos que esperar hasta que el búfer de recepción esté lleno.

C
1 char USART_ReceiveChar()
2 {
3 while(RCIF==0); /*wait for receive interrupt flag*/
https://openlabpro.com/guide/uart-interfacing-with-pic-microcontroller/ 4/5
23/10/2019 Interfaz UART con microcontrolador PIC - OpenLabPro.com

4 if(RCSTAbits.OERR)
5 {
6 CREN = 0;
7 NOP();
8 CREN=1;
9 }
10 return(RCREG); /*received in RCREG register and return to ma
11 }
12

Es posible recibir texto en la comunicación UART al recibir cada carácter uno por uno en una
matriz de caracteres.

Receiving a string data from receive buffer register C


1 void receive_string()
2 {
3 char rc_data[10];
4 unsigned int i; /*array index variable */
5 for(i=0;;i++)
6 {
7 while(!RCIF);
8 rc_data[i]=RCREG;
9 if(rc_data[i]=='\r') /*character is received until end of th
10 {
11 rc_data[i]='\0';
12 break;
13 }
14 }
15 }
16

Técnicas de depuración
Shorting Tx y Rx pins
Al acortar el pin Tx y Rx del cable DB9 podemos verificar el error en el lado del cable observando
en el monitor en serie. El cortocircuito del pin Tx y Rx hará eco del carácter ingresado desde el
teclado en el monitor en serie.

https://openlabpro.com/guide/uart-interfacing-with-pic-microcontroller/ 5/5

Das könnte Ihnen auch gefallen