Está en la página 1de 38

Módulo USART

UART: Universal Asynchronous Receiver-Transmitter


USART: Universal Synchronous/Asynchronous Receiver-Transmitter
Módulo USART
Descripción funcional
Módulo USART
Descripción funcional

UART:
• Genera la señal de reloj dentro del microcontrolador y lo sincroniza
con el envío de datos a través del bit de inicio.
• El emisor y receptor deben conocer las tasas de transmisión. Ejemplo:
9600bps.
• Útil para aplicaciones que requieren bajas tasas de transferencia. Por
tal razón su consumo de potencia es menor.
Módulo USART
Descripción funcional

USART:
• La señal de reloj puede ser incluída en el datastream y el receptor la puede
recuperar sin conocerla previamente.
• Alternativamente puede haber un link exclusivo para transmitir la señal de
reloj. De ésta manera se pueden alcanzar tasas de bit más elevadas.
• Soporta más protocolos, tales como IrDA, LIN (Local Interconnect Network)
usado para conectar componentes en vehículos, y Smart Card (Tarjetas con
Chip).
• Su gasto de potencia es por lo tanto mayor que para el módulo UART.
Módulo USART
Descripción funcional

Señales de control: Se activan y desactivan por hardware en la STM.

• CTS: Clear to send. Disponible para enviar.


• RTS: Request to send. El módulo USART está disponible para recibir.
Módulo USART
Descripción funcional

Cualquier USART bidireccional requiere dos pines:


• RX: Para recibir datos.
• TX: Para recibir datos. Cuando éste pin es habilitado y no hay nada
para ser transmitido, su nivel lógico es alto.
Módulo USART

USART-STM32F
Módulo USART
Registros relevantes en
Programación:
• USART_CR1
• USART_CR2
• USART_ISR
• USART_BRR
• USART_TDR
• USART_RDR
Adicionales:
• RCC_APB1ENR
• GPIOx_AFRL/ GPIOx_AFRH
• GPIO_MODER
Módulo USART
Registro USART_CR1
Bits M[1:0] del registro USART_CR1: Definen la longitud de los datos, siendo 7, 8 o
9 las posibilidades disponibles.

• Para 7 bits, M[1:0] = 10.


• Para 8 bits, M[1:0] = 00.
• Para 9 bits, M[1:0] = 01.
Módulo USART
Registro USART_CR1
Para el caso de 9 bits. El reloj de transmisión controla el envío de datos.
Idle y break frames envían, respectivamente, un 1 y un 0 constante.
Módulo USART
Registro USART_CR1
Bit TE (Transmitter Enable) del registro USART_CR1: Corresponde al bit 3. Habilita
la transmisión.
TE = 1, para habilitar la transmisión.
TE = 0, para deshabilitar la transmisión.
Lo mismo aplica para el bit RE (Receiver Enable).
Módulo USART
Registro USART_CR1
Bit UE (USART Enable) del registro USART_CR1: Habilita el módulo USART.
UE = 1, USART enabled.
UE = 0, prescalers y salidas del módulo USART se deshabilitan.
Módulo USART
Registro USART_CR1
Bit TXEIE del registro USART_CR1: Habilita la interrupción del módulo USART
cuando se envían datos.
TXEIE = 1, la interrupción del módulo USART se habilita cuando los bits ORE o RXNE
son iguales a 1 en el registro USART_ISR.
TXEIE = 0, la interrupción se inhibe.
Módulo USART
Registro USART_CR1
Bit RXNEIE del registro USART_CR1: Habilita la interrupción del módulo USART
cuando se reciben datos.
RXNEIE = 1, la interrupción del módulo USART se habilita cuando los bits ORE o
RXNE son iguales a 1 en el registro USART_ISR.
RXNEIE = 0, la interrupción se inhibe.
Módulo USART
Registro USART_ISR
Bit TXE del registro USART_ISR: Es modificado por hardware cuando el
contenido del registro USART_TDR ha sido transferido al registro de
corrimiento. Se genera una interrupción si el bit TXEIE del registro
USART_CR1 es igual a 1.
Módulo USART
Registro USART_ISR
Bit RXNE del registro USART_ISR: Es modificado por hardware cuando
el contenido del registro de corrimiento RDR es transferido al registro
USART_RDR, y es limpiado cuando se lee el contenido de éste último.
RXNE = 0, no se han recibido datos.
RXNE = 1, se han recibido datos y están listos para ser leídos.
Módulo USART
Registro USART_BRR
Éste registro se puede escribir solamente cuando UE = 0. Su configuración es de dos formas determinadas por
el fck (clock source frequency), el cual corresponde al reloj HSI cuya frecuencia es de 16MHz por defecto.
• Oversampling by 8 (OVER8=1), se alcanza mayor velocidad en TX y RX (fck/8).
BRR[2:0] = USARTDIV[3:0] shifted 1 bit to the right.
BRR[3] must be kept cleared.
BRR[15:4] = USARTDIV[15:4]
• Oversampling by 16 (OVER8=0), se fija una menor velocidad en TX y RX (fck/16).
BRR[15:4] = USARTDIV[15:0]
Módulo USART
Registro USART_BRR

1. Oversampling by 8 (OVER8=1), la ecuación usada es:


2𝑓𝑐𝑘
USARTDIV=
𝑇𝑋/𝑅𝑋 𝑏𝑎𝑢𝑑
𝟐(𝟖𝟎𝟎𝟎𝟎𝟎𝟎)
Ejemplo: para fck de 8MHz y una baud rate de 9600 bps, USARTDIV = 𝟗𝟔𝟎𝟎
=1666,66(1667d=683h). Por lo
tanto se hace corrimiento a la derecha para 3h, es decir, BRR[3:0] = 3h >> 1 = 1h, y finalmente, BRR = 0x681h.
2. Oversampling by 16 (OVER8=0), la ecuación usada es:
𝑓𝑐𝑘
USARTDIV=
𝑇𝑋/𝑅𝑋 𝑏𝑎𝑢𝑑
𝟏𝟔𝟎𝟎𝟎𝟎𝟎𝟎
Ejemplo: para fck de 16Mhz y una baud rate de 9600bps, USARTDIV = 𝟗𝟔𝟎𝟎
=1666,66(1667d=683h). Por lo
tanto, BRR = 0x683h.
Módulo USART
Registro USART_CR2
Bits STOP[1:0] del registro USART_CR2: Programan la configuración
para los bits de parada. Solo se puede modificar cuando el modulo
USART está deshabilitado (UE=0).
STOP[1:0] = 00, para 1 bit de parada.
STOP[1:0] = 01, para 0.5 bits de parada.
STOP[1:0] = 10, para 2 bits de parada.
STOP[1:0] = 11, para 1.5 bits de parada.
Módulo USART
Registro GPIOx_AFRL (x=A…K)
Configura los pines del 0 al 7 de los puertos A-K en función alternante I/O con el fin de habilitar la
transmisión (TX) y recepción (RX).
Módulo USART
Registro GPIOx_AFRH (x=A…K)
Configura los pines del 8 al 15 de los puertos A-K en función alternante I/O con el fin de habilitar la
transmisión (TX) y recepción (RX).
Módulo USART
Mapeo alternante
Se debe tener en cuenta además el mapeo de función alternante dado en el datasheet de la STM.
Ejemplo: Para usar el módulo UART4, teniendo como pin de TX a PA0 y como RX a PC11, se tiene del datasheet lo siguiente:
Módulo USART
Registro GPIOx_AFRL (x=A…K)
Por lo tanto debemos habilitar AF8 para los pines 0 y 11 de los puertos A y C, respectivamente. Es
decir, para el puerto A:
GPIOA-> AFR[0] |= 0x8; //1000, AFR[0] = AFRL. 1000=AF8.

1 0 0 0
Módulo USART
Registro GPIOx_AFRH (x=A…K)
Y para el puerto C:
GPIOA-> AFR[1] |= 0x8000; // AFR[1] = AFRH. 0x8000=AF8.

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Módulo USART
Hasta ahora se ha configurado UART y modo alternante de pines 0 y 11. Pero qué puertos?

GPIOA->MODER |= (2UL<<2*0);//Función alternante para PA0.


GPIOC->MODER |= (2UL<<2*11); //Función alternante para PC11.
Módulo USART
Registro RCC_APB1ENR. Se usa para habilitar el reloj de la UART o USART que
se vaya a utilizar.

Ejemplo: RCC-> APB1ENR |=0x80000;//Habilita UART 4.


Módulo USART
Ejemplo.
Cree un programa para conectar el PC y su STM por
medio de comunicación serial.
1. Configure el PA0 como transmisor y el PC11
como receptor.
2. Utilice los terminales RX y TX de la STM para
tener contacto con el PC a través del puerto
serial COMX que se haya configurado para la
STM.
3. Envíe el mensaje “HELLO THERE” al PC cada vez
que se pulse el botón PC13.
Módulo USART
Ejemplo.
4. Desde el PC controle el encendido y apagado de los leds de usuario según la siguiente tabla:

Enviado desde PC Acción en STM

1 Enciende led 1

2 Apaga led 1

3 Enciende led 2

4 Apaga led 2

5 Enciende led 3

6 Apaga led 3
Módulo USART
Solución.

1. Configuración de puertos para salida y


Entrada.
Módulo USART
Solución.

2. Configuración de UART_CR1.
Módulo USART
Solución.

3. Configuración de UART_CR2.
STOP=00 para un bit de parada. No es necesario modificar el registro en código para éste caso.
Módulo USART
Solución.

2. Configuración de GPIO y AFR.


Módulo USART
Solución.

Envío y recepción.
Módulo USART
Solución.

Funciones y encabezado.
Registro
del cual se
lee

Registro al
cual se
escribe
Evalúa
Módulo USART RXNE

Solución.

Funciones y encabezado.

Evalúa TXE
Módulo USART
Solución.
Módulo USART
Ejemplo 2.
Utilice el código anterior para conectar la STM con un teléfono celular mediante bluetooth usando
los siguientes elementos.
1. Módulo serial Bluetooth HC05.
2. Android App Bluetooth Terminal HC05.
Módulo USART
Solución.

También podría gustarte