#acl BecariosGrupo:read,write All:read = 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. == Cálculo error Baudrate LPC2000: == * [[attachment:lpc2000.uart.baudrate.calculator.xls | lpc2000.uart.baudrate.calculator.xls]]: lpc2000.uart.baudrate.calculator.xls