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