TI TM4C1294 UART en el problema del puerto C hace que la placa no sea programable

0

En la placa mencionada anteriormente, el puerto C tiene 8 pines en los cuales se usan 0-3 para JTAG (¿Entonces 4-7 debería estar disponible GPIO, verdad?). Estoy usando el siguiente código:

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

int main(void)
{
    SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 12000000);

    SYSCTL_RCGCUART_R = SYSCTL_RCGCUART_R3;
    while((SYSCTL_PRUART_R & SYSCTL_PRUART_R3) == 0);

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

    // HWREG(GPIO_PORTC_BASE+ GPIO_O_LOCK) = GPIO_LOCK_KEY;
    // HWREG(GPIO_PORTC_BASE + GPIO_O_CR) |= (GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);

    GPIO_PORTA_AHB_AFSEL_R = GPIO_PIN_4 | GPIO_PIN_5;
    GPIO_PORTA_AHB_PCTL_R  = 0x00110000;
    GPIO_PORTA_AHB_DEN_R   = GPIO_PIN_4 | GPIO_PIN_5;

    // UART3_LCRH_R &= ~UART_LCRH_FEN;
    UART3_IBRD_R  = 78;
    UART3_FBRD_R  = 8;
    UART3_LCRH_R |= UART_LCRH_WLEN_8;
    UART3_CC_R    = 0x0;
    // UART3_LCRH_R |= UART_LCRH_FEN;
    // UART3_CTL_R  |= UART_CTL_TXE | UART_CTL_UARTEN;
    UART3_CTL_R  |= UART_CTL_UARTEN;

    while(1)
    {
        while( (UART3_FR_R & 0x0020) != 0);
        UART3_DR_R = (char) 'a';
        SysCtlDelay(1000000);
    }
}

El código está configurado para funcionar con el módulo UART 3 ( RCGCUART_R3 ) que reside en el puerto A ( RCGCGPIO_R0 ), pines 4 y amp; 5. Cambiando la configuración a UART 5 que reside en los pines 6 y amp del puerto C; 7 descargará correctamente el binario al tablero solo por primera vez, en las pruebas posteriores siempre obtengo "No se puede inicializar el objetivo - 0". Todavía recibo el error después de la primera programación exitosa incluso después de hacer Secuencia de desbloqueo

Intentando desbloquear el puerto C incluso con el puerto A se usa en UART No funciona. El código anterior no imprimirá el carácter 'a' cuando la secuencia de desbloqueo no esté comentada. ¿La placa ve el puerto C como una unidad, así que tengo que desbloquear todo el registro? El esquema confirma que los pines 0-3 son para JTAG, mientras que el resto son para GPIO.

Otra pregunta es el uso de buffers UART FIFO . Corregir si me equivoco, FIFO es un búfer utilizado para recibir / escribir datos entre el puerto serie y la memoria. Pero, ¿de qué no estoy seguro, cuándo lo necesito realmente y cuándo no lo necesito?

Otra pregunta, en general, ¿es posible detectar que el puerto UART está conectado? Por ejemplo, detecte un chip FTDI FT232 cuando esté conectado a los pines apropiados.

Muchas gracias!

    
pregunta 3bdalla

0 respuestas

Lea otras preguntas en las etiquetas