Secuencia de inicio para lpc1343

0

Estoy explorando mi primer dispositivo de brazo, el lpc1343, estoy usando VIM y ARM GCC , he logrado encender un LED pero, para parpadear, Necesitaré arrancar el reloj y pll, en este momento no puedo encontrar la secuencia correcta para esto en el manual del usuario. ¿Dónde puedo encontrar la secuencia de inicio básica para clock y PLL para lpc1343?

Hasta ahora se me ocurrió la siguiente secuencia que no funciona:

void InitSys (void) {
    InitCpu();
    InitPorts();
}
void InitCpu (void) {
    PDRUNCFG |= 0x00000020;      // SYSOSC_PD = 1 -> System oscillator Powered Down
    SYSOSCCTRL = 0x00000000;     // Oscillator is not bypassed, 1 - 20 MHz frequency range
    PDRUNCFG &= ~0x00000020;     // SYSOSC_PD = 0 -> System oscillator is Powered
    InitPLL();
    SYSAHBCLKDIV |= 0x00000001;   // System Clock Divide by 1
    MAINCLKUEN &= ~0x00000001;    // No change
    MAINCLKSEL = 0x00000003;      // Main clock source select register -> System PLL clock out
    MAINCLKUEN |= 0x00000001;     // Update clock source
}
void InitPLL (void) {
    PDRUNCFG |= 0x00000080;         // Set SYSPLL_PD
    SYSPLLCLKUEN &= ~0x00000001;  // No change
    SYSPLLCLKSEL = 0x00000001;      // System oscillator
    SYSPLLCLKUEN |= 0x00000001;     // Update clock source
    SYSPLLCTRL = 0x00000025;        // FCLKOUT = 72 MHz /// M div = 6 / P div = 2
    PDRUNCFG &= ~0x00000080;        // Set SYSPLL_PD
    while(!(SYSPLLSTAT & 0x000000001)){}  //If 1 -> PLL locked
}
    
pregunta Electropepper

1 respuesta

2

No necesita hacer nada para iniciar el reloj, y no es necesario iniciar el PLL para que parpadee un LED. Por defecto, el procesador se activa a 12 MHz, usando el reloj RC interno directamente. Siempre que sea un reloj lo suficientemente rápido para sus propósitos, no necesita hacer nada más.

El fabricante (NXP) no es del todo vago acerca de cómo iniciar el reloj y el PLL. Hay un código C para hacer esto en el archivo system_LPC13xx.c que viene con sus ejemplos (al menos con los ejemplos de LPCxpresso). El reloj está configurado en la función SystemInit() .

Actualización: si está utilizando el paquete lpcopen , busque clock_13xx.c

    
respondido por el Joe Hass

Lea otras preguntas en las etiquetas