configuración del reloj Cortex M3

2

Acabo de empezar a trabajar con el Stellaris LM3S9B92 (Cortex M3). Tengo algunos problemas para entender la función SysCtlClockSet() . En la página 350 de Driverlib dicen que:

  

El uso de la PLL se elige con SYSCTL_USE_PLL o SYSCTL_USE_OSC.

y después de eso, para usar una fuente externa debería usar:

  

SYSCTL_USE_OSC | SYSCTL_OSC_MAIN. y para el PLL use SYSCTL_USE_PLL | SYSCTL_OSC_MAIN,

Mi pregunta es, ¿cuál es la diferencia entre SYSCTL_USE_OSC y SYSCTL_USE_PLL ? Encontré este ejemplo en la red, ¡y la persona está usando una fuente de reloj externa y el PLL! ¿Qué se considera una fuente de reloj y qué se ignora?

SysCtlClockSet(SYSCTL_SYSDIV_2|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
    
pregunta Engine

1 respuesta

1

No me voy a tomar el tiempo para estudiar un microcontrolador obsoleto, pero especularé sobre la base de mi conocimiento de los procesadores Cortex-M3 de NXP.

El microcontrolador tiene un oscilador de cristal que puede operar a una frecuencia razonable, digamos 12MHz. El microcontrolador también tiene un oscilador interno que no es tan preciso como un oscilador de cristal, pero utiliza una constante de tiempo RC para establecer la frecuencia. El núcleo del procesador puede ejecutarse mucho más rápido que cualquiera de estos osciladores, digamos 72MHz, por lo que el chip proporciona un PLL que se puede usar para sintetizar un reloj de mayor frecuencia.

Al configurar el microcontrolador, puede decidir cuál de los osciladores desea utilizar: el oscilador de cristal o el oscilador RC menos preciso. Supongo que el bit de configuración SYSCTL_OSC_MAIN realiza esa selección.

También puede decidir si operar el procesador directamente desde el oscilador seleccionado o usar el PLL para aumentar la frecuencia. Mi conjetura es que SYSCTL_USE_PLL selecciona el PLL como la fuente del reloj del sistema. Si utiliza el PLL, entonces es posible que se necesiten otros parámetros, como indicar el valor aproximado de la frecuencia del oscilador con SYSCTL_XTAL_16MHZ .

    
respondido por el Joe Hass

Lea otras preguntas en las etiquetas