USART baudrate en STM32L152

0

Estoy tratando de averiguar cómo configurar el USART de la placa de descubrimiento mencionada para una transmisión de 14400,8, N, 1. Mi problema es que no sé qué poner en el registro USARTx \ $ \ rightarrow \ $ BRR. Sé que tiene algo que ver con la siguiente fórmula (según el manual): $$ Tx / Rx \; Baud = \ frac {f_ {CK}} {8 \ times (2-OVER8) \ times USARTDIV} $$ Y el registro BRR tiene el siguiente formato: Loqueséesqueparaunacomunicaciónde9600,8,N,1elvalorutilizadoesUSART1\$\rightarrow\$BRR=0x00000D05(¿sesuponequees9600?).Entiendolaspartes8,N,1queestánconfiguradasenlosregistrosCR1yCR2.

Séque\$f_{CK}=32MHz\$(nosésisepuedecambiardealgunamanera).Elvalor\$USARTDIV\$pareceserelquesedebeescribirenelregistroBBR,comoenesteejemplo:

\$OVER8\$estáconfiguradoenCR1.Algunastablascomoestasaparecenenelmanualquesesuponequeayudanacalcularlatasadebaudios: Elárboldelrelojutilizadoeselsiguiente:

    
pregunta Martín

1 respuesta

2

f CK es la frecuencia de reloj APB, simplemente no puedo encontrar donde el manual realmente dice eso. Mientras APB1 y APB2 sean iguales, 32MHz, no tiene que preocuparse por cuál. Si fueran diferentes, entonces debería tener en cuenta que USART1 está en APB2, los otros están en APB1. Las frecuencias APB se pueden cambiar utilizando RCC->CR y RCC->CFGR , pero estos cambios son globales y afectan a todos los periféricos en ese bus.

En el muestreo predeterminado de 16 bits, BRR es simplemente la frecuencia ABP dividida por la velocidad en baudios deseada.

Cuando OVER8 = 0, BRR es un número de punto fijo con 4 bits (0-3) que contiene la parte fraccionaria, es decir, 1/16 unidades, y la parte entera se desplaza a la izquierda 4 bits. Esta es solo una manera complicada de decir que BRR=USARTDIV*16 . Considere la fórmula original, con OVER8 = 0 se convierte en Baud = f CK / (8 * 2 * USARTDIV), por lo tanto, USARTDIV * 16 = BRR = f CK / Baud.

Vamos a verificarlo, 32000000/9600 = 3333, que es 0xD05 en hexadecimal, bien. Ahora, para 14400 baudios necesitarías 32000000/14400 = 2222 en BRR .

Se vuelve más complicado cuando se usa el sobremuestreo de 8 bits (OVER8 = 1), con un "agujero" en BRR en el bit 3, pero solo sería necesario cuando se utilizan velocidades de transmisión más altas.

    
respondido por el berendi

Lea otras preguntas en las etiquetas