¿La configuración en el archivo startup.s se genera utilizando KEIL IDE y pone el Fcpu a 60 MHz directamente?

1

Estoy usando LPC2148 para fines de aprendizaje y estaba intentando meterme un poco con el archivo startup.s y entenderlo. En la opción Destino de Keil para el proyecto, se asume que la frecuencia XTAL es 12Mhz. Tengo esta sección de código

; Phase Locked Loop (PLL) definitions
PLL_BASE        EQU     0xE01FC080      ; PLL Base Address
PLLCON_OFS      EQU     0x00            ; PLL Control Offset
PLLCFG_OFS      EQU     0x04            ; PLL Configuration Offset
PLLSTAT_OFS     EQU     0x08            ; PLL Status Offset
PLLFEED_OFS     EQU     0x0C            ; PLL Feed Offset
PLLCON_PLLE     EQU     (1<<0)          ; PLL Enable
PLLCON_PLLC     EQU     (1<<1)          ; PLL Connect
PLLCFG_MSEL     EQU     (0x1F<<0)       ; PLL Multiplier
PLLCFG_PSEL     EQU     (0x03<<5)       ; PLL Divider
PLLSTAT_PLOCK   EQU     (1<<10)         ; PLL Lock Status
;// <e> PLL Setup
;//   <o1.0..4>   MSEL: PLL Multiplier Selection
;//               <1-32><#-1>
;//               <i> M Value
;//   <o1.5..6>   PSEL: PLL Divider Selection
;//               <0=> 1   <1=> 2   <2=> 4   <3=> 8
;//               <i> P Value
;// </e>
PLL_SETUP       EQU     1
PLLCFG_Val      EQU     0x00000024

Esa es la definición de los Registros para la generación de la frecuencia de la CPU a partir del oscilador de baja frecuencia

; Setup PLL
            IF      PLL_SETUP <> 0
            LDR     R0, =PLL_BASE
            MOV     R1, #0xAA
            MOV     R2, #0x55

;  Configure and Enable PLL
            MOV     R3, #PLLCFG_Val
            STR     R3, [R0, #PLLCFG_OFS] 
            MOV     R3, #PLLCON_PLLE
            STR     R3, [R0, #PLLCON_OFS]
            STR     R1, [R0, #PLLFEED_OFS]
            STR     R2, [R0, #PLLFEED_OFS]


;  Wait until PLL Locked
PLL_Loop        LDR     R3, [R0, #PLLSTAT_OFS]
            ANDS    R3, R3, #PLLSTAT_PLOCK
            BEQ     PLL_Loop

;  Switch to PLL Clock
            MOV     R3, #(PLLCON_PLLE:OR:PLLCON_PLLC)
            STR     R3, [R0, #PLLCON_OFS]
            STR     R1, [R0, #PLLFEED_OFS]
            STR     R2, [R0, #PLLFEED_OFS]
            ENDIF   ; PLL_SETUP

Esta sección del archivo startup.s parece estar configurando directamente el reloj a 60Mhz. ¿Es correcto lo que entendí del archivo startup.s?

LPC2148 Manual del usuario

¿Por qué este archivo startup.s toma directamente la frecuencia de la CPU a 60 Mhz? Si necesito cambiar la frecuencia de la CPU, ¿debo hacerlo en el archivo Startup.s o en la sección principal de mi programa?

NOTA: acabo de pasar de los microcontroladores AVR a ARM y estoy más familiarizado con #define F_CPU (Frequency of the XTAL) por lo tanto, la pregunta.

    
pregunta MaNyYaCk

1 respuesta

2

¿Todavía tienes este problema?

Esto se puede configurar tanto en el archivo startup.s como en la sección del código principal.

Depende de usted decidir cuál usar.

En el archivo startup.s,

  1. vaya al Asistente de configuración
  2. Haga clic en Configuración PLL
  3. Establezca el multiplicador de PLL en 0x03

En la sección principal de su programa, puede obtener el código para configurar el reloj a 60Mhz a partir de los documentos LPC2119.

    
respondido por el Rrz0

Lea otras preguntas en las etiquetas