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