El puerto UART en la placa TM4C1294 envía basura

0

Estoy usando el puerto COM virtual de la placa TI TM4C1294XL que viene en la interfaz ICDI. Este es el código que estoy usando:

#include <stdint.h>
#include <stdbool.h>
#include "inc/tm4c1294ncpdt.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"

int main(void)
{
    SYSCTL_RCGCUART_R = SYSCTL_RCGCUART_R0;
    while((SYSCTL_PRUART_R & SYSCTL_PRUART_R0) == 0);

    SYSCTL_RCGCGPIO_R = SYSCTL_RCGCGPIO_R0;
    while((SYSCTL_PRGPIO_R & SYSCTL_PRGPIO_R0) == 0);

    GPIO_PORTA_AHB_AFSEL_R = GPIO_PIN_0 | GPIO_PIN_1;
    GPIO_PORTA_AHB_PCTL_R  = 0x11;
    GPIO_PORTA_AHB_DEN_R   = GPIO_PIN_0 | GPIO_PIN_1;

    UART0_CTL_R  &= ~0x1;
    // UART0_LCRH_R &= ~UART_LCRH_FEN;
    UART0_IBRD_R  = 0x30D;
    UART0_FBRD_R  = 0x010;

    UART0_CC_R = 0x0;

    UART0_LCRH_R  = 0x00;
    UART0_LCRH_R |= UART_LCRH_WLEN_8;
    // UART0_LCRH_R |= UART_LCRH_FEN;
    UART0_CTL_R  |= UART_CTL_TXE | UART_CTL_UARTEN;

    while(1)
    {
        while( (UART0_FR_R & 0x0020) != 0);
        UART0_DR_R = 'a';
        SysCtlDelay(1000000);
        // while( (UART0_FR_R & 0x0020) != 0);
        // UART0_DR_R = '\n';
    }
}

Esto es lo que obtengo de putty :

¿Cuál es la razón de tales caracteres de basura, independientemente de lo que se envíe al puerto UART? Probé otros puertos UART disponibles pero sin suerte.

Actualización: por alguna razón, reducir el reloj de MCU a 12MHz hizo el trabajo. ¿Alguien puede explicar esto y ponerlo como respuesta? Muchas gracias.

    
pregunta 3bdalla

0 respuestas

Lea otras preguntas en las etiquetas