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
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
MICROCONTROLADORES PIC
USART

Diagrama simplificado de transmisión:

SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO

3

3
MICROCONTROLADORES PIC
USART
Diagrama simplificado de recepción:

SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO

4

4
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
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
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
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
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
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
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
MICROCONTROLADORES PIC
USART. Transmisor

Registros asociados en el 16F87x:

SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO

12

12
MICROCONTROLADORES PIC
USART. Transmisor

Cronogramas de transmisión:

SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO

13

13
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
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
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
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
MICROCONTROLADORES PIC
USART. Receptor

Registros asociados en la MCU 16F87x:

SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO

18

18
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
MICROCONTROLADORES PIC
USART.
Ejemplo de programa

SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO

20

20
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

Usart PIC config LANDA

  • 1.
    MICROCONTROLADORES PIC USART Universal SynchronousAsynchronous 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 queforman 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
  • 3.
    MICROCONTROLADORES PIC USART Diagrama simplificadode transmisión: SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO 3 3
  • 4.
    MICROCONTROLADORES PIC USART Diagrama simplificadode recepción: SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO 4 4
  • 5.
    MICROCONTROLADORES PIC USART Ejemplo: formade 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. Registrosde 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. Velocidadde 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 detransmisió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. Registrosde 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. Registrosde 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 Diagramade 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
  • 12.
    MICROCONTROLADORES PIC USART. Transmisor Registrosasociados en el 16F87x: SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO 12 12
  • 13.
    MICROCONTROLADORES PIC USART. Transmisor Cronogramasde transmisión: SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO 13 13
  • 14.
    MICROCONTROLADORES PIC USART Inicialización dela 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. Registrosde 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. Registrosde 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 debloques: 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
  • 18.
    MICROCONTROLADORES PIC USART. Receptor Registrosasociados en la MCU 16F87x: SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO 18 18
  • 19.
    MICROCONTROLADORES PIC USART Inicialización dela 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
  • 20.
    MICROCONTROLADORES PIC USART. Ejemplo deprograma SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO 20 20
  • 21.
    MICROCONTROLADORES PIC USART. Muestreo El datoen 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