Cálculo del divisor del PLL para reducir el error en la UART con cristal de 14,7456 Mhz:
Las ecuaciones para ello usan los siguientes parámetros:
FOSC - Frecuencia del Cristal
FCCO - Frecuencia del CCO del PLL
cclk - La frecuencia a la que trabaja el micro (frecuencia de salida).
M - Valor multiplicador en MSEL dentro dell registro PLLCFG.
P - Valor divisor en PSEL dentro del registro PLLCFG.
Cálculo:
Calculamos la frecuencia del micro para 115200 baudios en la UART:
Tenemos un divisor x16 y otro por x32 con lo cual nos da una salida de 58,9824 Mhz.
Usando un cristal de 14,7456 Mhz tenemos que su relación es 4. por lo tanto M=4.
Segun la fórmula de la hoja de datos P = (FCCO /(2xcclk)) =
Tomamos P=2 y nos queda FCCO = 235,93 Mhz lo cual esta dentro de los 156 a 320 Mhz especificados por el fabricante.
De tablas nos queda que el valor para el registro PLLCFG es 0x23.
Ejemplo:
/* PLL configuration */ .equ PLLCON_OFFSET, 0x0 .equ PLLCFG_OFFSET, 0x4 .equ PLLSTAT_OFFSET, 0x8 .equ PLLFEED_OFFSET, 0xC .equ PLLCON_PLLE, (1 << 0) .equ PLLCON_PLLC, (1 << 1) .equ PLLSTAT_PLOCK, (1 << 10) .equ PLLFEED1, 0xAA .equ PLLFEED2, 0x55 .equ PLLCFG_VALUE, 0x23 // PLL con Cristal de 14,7456 Mhz
Anteriormente usabamos un cristal de 12Mhz que llevaba un PLLCFG = 0x24 con un M=5 y un P = 2.
Ejemplo cambio makefile para grabar con '''lpc21isp''' a 115200 baudios:
GRABADOR = /home/mariotrangoni/lpc21isp/lpc21isp grabar: $(GRABADOR) -wipe -hex ex5.hex /dev/ttyS0 115200 14745
Uno pone 'make grabar en consola y graba directamente el dispositivo.
lpc2000.uart.baudrate.calculator.xls: lpc2000.uart.baudrate.calculator.xls Cálculo error Baudrate LPC2000: