Calcular el registro de UART Baud Rate para dispositivos PIC

-3

¿Cómo calculo los valores del registro de configuración de UART para un dispositivo PIC 24F, en función de la velocidad de transmisión deseada?

Actualmente, el módulo UART tiene 2 valores que afectan la velocidad de transmisión, BRG (registro de 16 bits) y BRGH (indicador de 1 bit). ¿Cómo calculo estos en tiempo de ejecución en el PIC en lugar de tener que hacerlo cada vez manualmente usando Calc?

He intentado escribir el código basado en el enlace a la hoja de datos proporcionada. Por favor revísalo.

// clock speed is 20 Mhz
#define FCY = 20000000

// baudRate - desired baud rate specified in bits per second
void CalcUARTBaudRate(unsigned int baudRate){ 

    // the max baud rate with BRGH=0 is FCY/16
    if (baudRate > (FCY / 16)){

         // calc BRG with high baud rate (BRGH = 1)
         U1MODEbits.BRGH = 1;
         BRG = ((FCY / baudRate) / 4) - 1;
    }else{

         // calc BRG with low baud rate (BRGH = 0)
         U1MODEbits.BRGH = 0;
         BRG = ((FCY / baudRate) / 16) - 1;
    }

}
    
pregunta Robinicks

1 respuesta

4

De DS39708 , "dsPIC33 / PIC24 Family Reference Manual, UART", sección 3.0, "UART BAUD RATE GENERATOR":

    
respondido por el Ignacio Vazquez-Abrams

Lea otras preguntas en las etiquetas