USART Peripheral Interfac e Modo UART

Post on 12-Jan-2016

92 views 0 download

Tags:

description

USART Peripheral Interfac e Modo UART. USART :U niversal Synchronous / asynchronous receive/transmit. Sincrónico (SPI). Asincrónico (UART). UxCTL Usart Control Register. Modos seriales USART. Esquemático USART. Varios protocolos de comunicación. Datos de 7 ó 8 bits. - PowerPoint PPT Presentation

Transcript of USART Peripheral Interfac e Modo UART

1

USART:UniversalSynchronous/asynchronousreceive/transmit

USART Peripheral InterfacUSART Peripheral InterfaceeModo UARTModo UART

2

Modos seriales Modos seriales USARTUSART

Sincrónico (SPI)

Asincrónico (UART)

UxCTL Usart Control Register

3

Esquemático USARTEsquemático USART

4

Algunas CaracterísticasAlgunas Características

Datos de 7 ó 8 bits

Tx y Rx de LSB primero

Buffers de Tx y Rx separados

Registros de desplazamiento de Tx y Rx

Varios protocolos de comunicación

5

Algunas CaracterísticasAlgunas Características

Tasa de transmisión programable

Flags de detección y supresión de errores

Interrupción independiente para Rx y Tx

Capacidad de salir de modo bajo consumo,dado un cambio de estado

6

OperaciónOperación

Inicialización y reinicio (reset)

Formato del Character

Inicialización y reinicio (reset)

Protocolos de comunicaciónDetección automática de erroresHabilitación de recepción

Habilitación de transmisión

Generación de tasa de transferencia

Interrupciones

7

Inicialización y reinicio Inicialización y reinicio (reset)(reset)

PUC

SWRST=1

UxCTL Usart Control Register

8

OperaciónOperación

Inicialización y reinicio (reset)

Formato del CharacterFormato del CharacterProtocolos de comunicaciónDetección automática de erroresHabilitación de recepción

Habilitación de transmisión

Generación de tasa de transferencia

Interrupciones

9

Octavo bit de datoAdress bitBit de

paridadSegundo bit de detención

Formato del characterFormato del character

10

Protocolos de comunicación

OperaciónOperación

Inicialización y reinicio (reset)

Formato del Character

Protocolos de comunicaciónDetección automática de erroresHabilitación de recepción

Habilitación de transmisión

Generación de tasa de transferencia

Interrupciones

11

Idle-Line Multiprocessor Format

Address-Bit Multiprocessor Format

2 dispositivosBit MM=0

3 o más dispositivos

Bit MM=1

Protocolos de Protocolos de ComunicaciónComunicación

12

Tiempo de espera de 10 bits o mas

Tiempo de espera menor a 10 bits

Frame Frame dentro del bloque

Frame dentro del bloque

Primer Frame dentro del bloque es uan

direccion, sigue a un tiempo de espera

Expandido

Protocolos de Comunicación:

Protocolos de Comunicación:Protocolos de Comunicación:Idle-Line Multiprocessor Idle-Line Multiprocessor FormatFormat

13

Protocolos de Comunicación

TXWAKE=1

Escribir character en UxTXBUFContenido de UxTXBUF es llevado al registro de TXTransmite 11 unos

TXWAKE=0 automaticamente

Idle-Line Multiprocessor FormatIdle-Line Multiprocessor Format Transmisión de datosTransmisión de datos

14

Protocolos de Comunicación:

Se escribe la dirección en UxTXBUF

Registro tiene que estar listo

Se inicia la transmisión con un character ‘dont care’

Idle-Line Multiprocessor FormatIdle-Line Multiprocessor Format Transmisión de datosTransmisión de datos

15

Primer frame del bloque es una dirección

AD Bit es cero para dato en el bloque

Expandido

Tiempo de espera

Bloques de frames

Tiempo de espera

Protocolos de Comunicación:

Protocolos de Comunicación:Protocolos de Comunicación: Address-Bit Multiprocessor FormatAddress-Bit Multiprocessor Format

UxRCTL Usart Receive Control Register

16

Protocolos de Comunicación:Control del address bit para transmisiónControl del address bit para transmisión

Se escribe en bit TXWAKE

Este es cargado en el address bit del carácter transferido

Se limpia automáticamente

Address-Bit Multiprocessor FormatAddress-Bit Multiprocessor Format

UxTCTL, Usart Transmit Control Register

17

Detección automática de errores

OperaciónOperación

Inicialización y reinicio (reset)

Formato del Character

Detección automática de erroresProtocolos de comunicación

Habilitación de recepción

Habilitación de transmisión

Generación de tasa de transferencia

Interrupciones

18

Error de framing

Error de paridad

Error de rebalse (receive overrun)

Condición de break

Detección automática Detección automática dedeheroresheroreserroreerrore

ss

UxRCTL Usart Receive Control Register

19

Habilitación de recepción

OperaciónOperación

Inicialización y reinicio (reset)

Formato del Character

Habilitación de recepción

Protocolos de comunicaciónDetección automática de errores

Habilitación de transmisión

Generación de tasa de transferencia

Interrupciones

20

Habilitación de recepción

Habilitación de recepciónHabilitación de recepción(Receive Enable)(Receive Enable)

URXEX Habilita o deshabilita recepción de datosSe guardan en el UxRXBUF

21

Habilitación de recepción

Character recibido

Condición de Interrupción

URXEx=0 URXEx=1

URXEx=1

URXEx=0URXEx=1

URXEx=0

Recepcion

Deshabilitada

Estado de espera

(Recepcion Deshabilitada)

Receptor recibe el character

Incompleto

Bit de inicio inválido

Habilitación de recepción Habilitación de recepción (Receive Enable)(Receive Enable)

UxTCTL, Usart Transmit Control Register

22

Habilitación de transmisión

Habilitación de recepción

OperaciónOperación

Inicialización y reinicio (reset)

Formato del Character

Habilitación de transmisión

Protocolos de comunicaciónDetección automática de errores

Generación de tasa de transferencia

Interrupciones

23

Habilitación de transmision

Habilitación de Transmisión Habilitación de Transmisión (Transmit Enable)(Transmit Enable)

UTxEX habilita o deshabilita transmisión de datosSe inicia la transmisión escribiendo en UxTxBUF

24

Character Transmitido

Condición de Interrupción

UTXEx=0UTXEx=1, Se escribe dato al buffer de transmisión

UTXEx=1

UTXEx=0UTXEx=1

UTXEx=0 y última entrada del buffer es transmitida

Transmisión

Deshabilitada

Estado de espera (Transmisor Habilitado)

Transmisión Activa

IncompletoNo se escribe dato en el buffer de

transmisión

Habilitación de transmision

Habilitación de TransmisiónHabilitación de Transmisión (Transmit Enable)(Transmit Enable)

UxTCTL, Usart Transmit Control Register

25

Habilitación de transmision

Habilitación de TransmisiónHabilitación de Transmisión (Transmit Enable)(Transmit Enable)

Para transmitir al buffer

UTxEX=1 y UTxIFGX=1

El bit TxEPT=1 indica que la transmisión activa se ha completado, esto evita errores

26

Generación de tasa de transferencia

Habilitación de transmisión

Habilitación de recepción

OperaciónOperación

Inicialización y reinicio (reset)

Formato del Character

Generación de la tasa de transferencia

Protocolos de comunicaciónDetección automática de errores

Interrupciones

27

Generacion de la tasa

Generación de la tasa de Generación de la tasa de transferencia (Baude transferencia (Baude rate)rate)La tasa máxima=1/3 BRCKL

Puede generar frecuencias no estándares Baude rate=BRCLK/N

Factor guardado en registros UxBR0 y UxBR1

UxBR0 y UxBR0 , Baud Rate Control Register

28

Interrupciones

Generación de tasa de transferencia

Habilitación de transmisión

Habilitación de recepción

OperaciónOperación

Inicialización y reinicio (reset)

Formato del Character

Interrupciones

Protocolos de comunicaciónDetección automática de errores

29

Interrupciones

InterrupcioneInterrupcioness

Vector de interrupciones para transmisión

Vector de interrupciones para recepción

Cuando el buffer está listo

Cuando ya ha transmitido se resetea

Cuando un carácter es recibido y cargado en el buffer

Se resetea cuando ha sido leído o la interrupción ha sido servida

URxIFGX=1

UTxIFGX=1

30

Interrupciones

InterrupcionesInterrupcionesRegistros de interrupción 1 Registros de interrupción 1 y 2y 2

UTXIFGX, flag de transmisión

URXIFGX, flag de recepción

31

#include <msp430x14x.h>

#include "MSP430lib.c"

#include "TRcircbuf.c"

void main (void){

/* Inicialización de osciladores (MSP430lib)*/

InitOsc ();

/* Inicialización de puertos Entrada/Salida (MSP430lib) */

InitPorts ();

/* Inicialización de UART (TRcircbuf) */

RS232Init ();

/* Inicialización de LCD (MSP430lib) */

InitLCD ();

Ejemplo de programaciónEjemplo de Programación

32

/* Loop de recepción */

while (1){

/* Espera la llegada de un byte a la entada serial y lo almacena en el buffer*/

/* Este estado es interrumpido por RXInterrupt */

if ( RS232RXBufferCount() ){

/* Lee el caracter del buffer y lo almacena en una variable */

RxB = cRS232GetChar();

/* Prende el led */

STATUS_LED_ON;

Ejemplo de programación(2)Ejemplo de programación

33

/* Limpia el LCD */

if (cntr == 0){

SEND_CMD(CLR_DISP);

SEND_CMD(DD_RAM_ADDR);

}

/* Envia el caracter recibido al LCD */

SEND_CHAR(RxB);

if(cntr == 15) SEND_CMD(DD_RAM_ADDR2);

if(cntr++ == 31) cntr = 0;

STATUS_LED_OFF;

}

}

}

Ejemplo de programación(3)Ejemplo de programación

34

Fin del asuntoFin del asunto

35

(Aplausos aquí)(Aplausos aquí)

36

unsigned char RS232RXBufferCount (void)

{

return (RXCharCount);

}

RS232RXBufferCount

37

void RS232Init (void)

{

RXWriteIndex = RXReadIndex = RXCharCount = 0;

TXWriteIndex = TXReadIndex = TXCharCount = 0;

TXBufferEmpty = BUFFER_EMPTY; // reset empty flag

InitUART0();

}

RS232Init

38

char cRS232GetChar (void)

{

char Byte;

if (RXCharCount){ /* Verifica si hay char aún disponible */

Byte = RXBuffer[RXReadIndex++]; /* Obtiene byte del buffer */

RXReadIndex &= RXBUFSIZE-1; /* Indice de buffer circular */

RX_INT_DISABLE; /* Inhabilita interrupción (IE2) */

RXCharCount--; /* Lectura de un char decrementa la cuenta */

RX_INT_ENABLE; /* Hecho, se habilita interrupción(IE2) */

return (Byte);

}

else

return (0); /* si no hay nuevo char */

}

cRS232GetChar

39

InitPorts

void InitPorts(void) {

P1SEL = 0; P1OUT = 0; P1DIR = BIT5 | BIT6; /* enable only Relay outputs */

P2SEL = 0; P2OUT = 0; P2DIR = ~BIT0; /* habilita P2.0 es entrada */ P3SEL |= BIT4 | BIT5; /* enable UART0 */ P3DIR |= BIT4; /* enable TXD0 as output */ P3DIR &= ~BIT5; /* enable RXD0 as input */

P4SEL = 0; P4OUT = 0; P4DIR = BIT2 | BIT3; /* only buzzer pins are outputs */

P6SEL = 0x80; P6OUT = 0; P6DIR = 0x00; /* all output */}

40

void InitUART0 (void) /* Inicialización UART0 */

{

BCSCTL1 & = ~DIVA0;

BCSCTL1 | = DIVA1; /* ACLK = XT1 / 4 */

UCTL0 = CHAR; /* 8 data bits, sin paridad, 1 bit de detencion*/

UTCTL0 = SSEL0; /* se elige ACLK como reloj para UART */

U0BR0 = 0xd0; /* 2000000:9600=208

U0BR1 = 0x00;

UMCTL0 = 0x00; /* sin modulación*/

ME1 | = UTXE0 | URXE0; /* habilitan modulos de tx y rx UART */

P3SEL | = 0x30; /* define bits de tx y rx P3.4 P3.5 */

P3DIR | = BIT4; /* habilita TXD0 como salida*/

P3DIR & = ~BIT5; /* habilita RXD0 como entrada*/

IE1 | = URXIE0; /* habilita USART0 RX interrupcion*/

IE1 | = UTXIE0; /* habilita USART0 TX interrupcion */

_EINT(); /* habilita interrupción*/

}

InitUART0InitUART0

41

UxCTL Registro de control USART

42

UxTCTLUxCTL Registro de control de tx

43

uxbr0Registro de control de tasa de transferencia

44

bcsctl

45

Uxmctl

46

me1