Cálculo del divisor del PLL para reducir el error en la UART con cristal de 14,7456 Mhz:

Tabla de Contenidos

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:

Cálculo:

Ejemplo:

Ejemplo cambio makefile para grabar con '''lpc21isp''' a 115200 baudios:

Cálculo error Baudrate LPC2000:

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/lpc21ispgrabar: $(GRABADOR) -wipe -hex ex5.hex /dev/ttyS0 115200 14745

Uno pone 'make grabar en consola y graba directamente el dispositivo. Cálculo error Baudrate LPC2000:lpc2000.uart.baudrate.calculator.xls: lpc2000.uart.baudrate.calculator.xls