La USART permite la comunicación síncrona o asíncrona, transmisión y recepción de datos en modo full duplex. Está compuesta por un generador de baudios, circuito de muestreo y transmisor/receptor asíncrono. Existen registros de control como SPBRG, TXSTA y RCSTA para configurar la velocidad, modo y habilitar la transmisión y recepción. El dato recibido se almacena en RCREG y el transmitido en TXREG.
1. MICROCONTROLADORES PIC
USART
Universal Synchronous Asynchronous Receiver Transmitter
• Síncrona o asíncrona
• Recibe y transmite
• Operación full duplex asíncrona
• Aplicación típica: comunicación con un PC mediante el
protocolo RS232, para lo que necesita un driver para
desplazamiento de niveles
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
1
1
2. MICROCONTROLADORES PIC
USART
Bloques que forman la USART:
• Generador de la relación de baudios (BRG)
Genera el reloj de transmisión a partir del oscilador de la MCU
Determina la velocidad de transferencia
• Circuito de muestreo
Detección del nivel lógico en el terminal de RX
Síncronización del reloj
• Transmisor asíncrono
• Receptor asíncrono
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
2
2
5. MICROCONTROLADORES PIC
USART
Ejemplo: forma de onda de la transmisión serie del dato 25h con 8 y 125h
con 9 bits:
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
5
5
6. MICROCONTROLADORES PIC
USART. Registros de control
SPBRG – Generación del ‘baud rate’
BRGH bit en el registro TXSTA
SYNC bit en TXSTA
TXSTA – Control y estado de transmisión
RCSTA - Control y estado de recepción
TXREG – Registro de transmisión de datos
RCREG - Registro de recepción de datos
PIR1 – Registro de indicadores (‘flags’) de interrupción
PIE1 – Registro de habilitación de interrupciones
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
6
6
7. MICROCONTROLADORES PIC
USART. Velocidad de transmisión
Formulas para el cáculo de los baudios
Baudios = Fosc/(16(SPBRG+1)), BRGH=1
Baudios = Fosc/(64(SPBRG+1)), BRGH=0
Formulas para SPBRG
SPBRG = (Fosc/(16 x Baud rate)) - 1, BRGH=1
SPBRG = (Fosc/(64 x Baud rate)) - 1, BRGH=0
Ejemplo:
•Oscilador: 4MHz oscillator
•Velocidad de transmisión: 9600 baudios asíncrono
Para BRGH = 1
SPBRG = 4000000/(16 x 9600) - 1 = 25.04
Para BRGH = 0
SPBRG = 4000000/(64 x 9600) - 1 = 5.51
Mejor elección: BRGH = 1, SPBRG = 25
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
7
7
8. MICROCONTROLADORES PIC
USART
Velocidades de transmisión para:
BRGH=0
BRGH=1
Registros asociados con el generador de relación de baudios:
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
8
8
9. MICROCONTROLADORES PIC
USART. Registros de control
TXSTA: Transmit Status and Control Register
bit 7 CSRC: Bit de selección de fuente de reloj
Modo asíncrono: no utilizado
Modo síncrono
1 = Modo maestro (reloj generado internamente por BRG)
0 = Modo esclavo (reloj de la fuente externa)
bit 6 TX9: Bit de habilitación de transmisión de 9 bits
1 = Transmisión de 9 bits
0 = Transmisión de 8 bits
bit 5 TXEN: Bit de habilitación de transmisión
1 = Transmisión habilitada
0 = Transmisión no habilitada.
bit 4 SYNC: Bit de selección de modo en la USART
1 = Modo síncrono
0 = Modo asíncrono
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
9
9
10. MICROCONTROLADORES PIC
USART. Registros de control
TXSTA: Transmit Status and Control Register
bit 3 No implementado se lee 0
bit 2 BRGH: Bit de selección de alta velocidad de trasmisión (High Baud Rate)
Modo síncrono: no utilizado
Modo asíncrono
1 = Alta velocidad
0 = Baja velocidad
bit 1 TRMT: Bit de estado del registro de desplazamiento de transmisión
1 = TSR vacio
0 = TSR lleno
bit 0 TX9D: Noveno bit del dato a transmitir. Puede ser el bit de paridad.
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
10
10
11. MICROCONTROLADORES PIC
USART. Transmisor
Diagrama de bloques
TXREG vacío si TXIF=1
Buffer del registro
de desplazamiento (R/W)
Salida de datos
Registro de desplazamiento
de transmisión
Habilitación
de TX
TSR vacio
(TRMT=1)
Habilitación bit 9
Habilitación
puerto serie
Bit 9
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
11
11
14. MICROCONTROLADORES PIC
USART
Inicialización de la transmisión
• Inicializar el registro SPBRG con el valor apropiado para la velocidad a
utlizar (tener en cuenta el bit BRGH)
• Habilitar el puerto serie asíncrono poniendo a 0 el bit SYNC y a 1 el bit
SPEN.
• Para utilizar interrupciones poner a 1 los bits TXIE, GIE y PEIE.
• Para una trasmisión de 9 bits poner a 1 el bit TX9.
• Habilitar la transmisión con un 1 en el bit TXEN , qué también pondrá a
uno el bit TXIF.
• Si se utiliza la transmisión de 9 bits cargar el noveno bit en TX9D.
• Cargar el dato en el registro TXREG (comienza la transmisión).
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
14
14
15. MICROCONTROLADORES PIC
USART. Registros de control
RCSTA: Receive Status and Control Register
bit 7 SPEN: Bit de habilitación de puerto serie
1 = Puerto serie habilitado (configura RX/DT y TX/CK como pines del puerto
serie)
0 = Puerto serie inhibido
bit 6 RX9: Bit de habilitación de datos de 9
1 = Recepción de 9 bits
0 = Recepción de 8 bits
bit 5 SREN: Bit de habilitación de recepción sencilla.
Modo asíncrono: no utilizado
Modo síncrono - maestro
1 = Habilitada
0 = Inhibida Se pone a cero cuando se completa una recepción.
Modo síncrono - esclavo: no utilizado
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
15
15
16. MICROCONTROLADORES PIC
USART. Registros de control
RCSTA: Receive Status and Control Register
bit 4 CREN: Bit de habilitación de recepción continua
Modo asíncrono
1 = Habilitado
0 = Inhibido
Modo síncrono
1 = Habilitado
0 = Inhibido
bit 3 No implementado se lee 0
bit 2 FERR: Bit de error de trama
1 = Error de trama (se puede actualizar leyendo el registro RCREG y
leyendo el siguiente byte válido)
0 = Sin error de trama
bit 1 OERR: Bit de error de overrun
1 = Error de overrun (se puede ‘borrar’ poniendo a cero CREN)
0 = Sin error de overrun
bit 0 RX9D: Noveno bit recibido. Puede ser el bit de paridad
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
16
16
17. MICROCONTROLADORES PIC
Diagrama de bloques:
Recepción continua =1
USART. Receptor
Indicadores de error
Entrada de datos
Registro de desplazamiento
de recepción
Habilitación
puerto serie
Datos de 9 bits
Recepción completa
Datos no leído en FIFO
Doble buffer de recepción (FIFO)
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
17
17
19. MICROCONTROLADORES PIC
USART
Inicialización de la recepción
• Inicializar el registro SPBRG con el valor apropiado para la velocidad a
utlizar (tener en cuenta el bit BRGH)
• Habilitar el puerto serie asíncrono poniendo a 0 el bit SYNC y a 1 el bit
SPEN.
• Para utilizar interrupciones poner a 1 los bits TXIE, GIE y PEIE.
• Para una trasmisión de 9 bits poner a 1 el bit RX9.
• Habilitar la recepción con un 1 en el bit CREN.
• El bit RCIF se pondrá a 1 cuando la recepción se complete, se generará
una interrupción si RCIE esta activado.
• Leer RCSTA para coger el noveno bit si es necesario y determinar si ha
ocurrido algun error.
• Recoger el dato recibido del registro RCREG.
• Si se ha producido algun error poner a cero el bit .CREN
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
19
19
21. MICROCONTROLADORES PIC
USART.
Muestreo
El dato en el pin de RX se muestrea tres veces y se determina su nivel
(alto o bajo) por mayoría.
SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO
21
21