?? 5509a_usb_apll_to_dpll.asm
字號:
;Switch To The 5509A APLL
;Author: Monideep Mukherjee
;Description: This Program Switches The 5509A System Clock From
;The APLL To The DPLL. Since The Default Power on PLL is The
;The DPLL, This Program First Switches To The APLL, Then Switches
;Back To The DPLL. It Was Tested Using a 12MHz Input Clock Crystal.
.text ; Create Code Section (Default is .text)
;Register Definitions
USB_APLL_CLKMD .set 0x1F00 ;USB APLL CLKMode Register
USB_DPLL_CLKMD .set 0x1E00 ;USB DPLL CLKMode Register
USB_PLL_SEL .set 0x1E80 ;USB PLL Selection Register
.def _c_int00 ; Define Label To Start of The Code
_c_int00
;Processor mode initialization
BCLR C54CM ; Set Processor To '55x Native Mode Instead
; of '54x Compatibility Mode (Reset Value)
BCLR CLKOFF ; Enable The CLKOUT Pin
SWITCH_TO_APLL
;First Turn On and Configure The APLL
;1.) Turn ON VCO APLL
MOV 0x0004, Port(#USB_APLL_CLKMD)
;2.) Wait For VCO ON To Latch Internally
RPT #25
NOP
;3.) Turn OFF VCO APLL
MOV 0x0000, PORT(#USB_APLL_CLKMD)
;4.) PLDIV = 0
AND 0xF7FF, Port(#USB_APLL_CLKMD)
;5.) PLLNDIV = 0
AND 0xFFFD, Port(#USB_APLL_CLKMD)
;6.) Set PLMUL To x 4
OR 0x3000, Port(#USB_APLL_CLKMD)
;7.) Wait For PLDIV, PLLNDIV, PLMUL To Latch Internally
RPT #25
NOP
;Leave This Commented Out Unless You Want To Divide
;By 2 or 4 Depending on K
;8.) Set PLDIV = 1
;OR 0x0800, Port(#USB_APLL_CLKMD)
;9.) Set PLLNDIV = 1
OR 0x0002, Port(#USB_APLL_CLKMD)
;10.) Wait For The PLL To Lock. Lock Time is 30 us. With
;12 MHz Input Clock, Cycle Count is 360.
RPT #360
NOP
;Once Configured, Tell The 5509A To Switch From DPLL or Bypass To APLL
;11.) Switch To APLL From Default DPLL On The 5509A USB PLL Selection Register
MOV 0x0001, Port(#USB_PLL_SEL)
;The USB is Now Switched To The APLL
SWITCH_TO_APLL_END
SWITCH_BACK_TO_DPLL
;1.) Enable The DPLL and Set x4 Mode With 12 MHz
;Input Clock
OR 0x0210, Port(#USB_DPLL_CLKMD)
;2.) Switch To DPLL From The APLL On The 5509A USB PLL
;Selection Register
MOV 0x0000, Port(#USB_PLL_SEL)
;The USB is Now Switched To The DPLL.
;3.) PLLNDIV = 0, Puts The APLL in Div Mode
AND 0xFFFD, Port(#USB_APLL_CLKMD)
;4.) Wait 12 CLKIN + 4PLL Cycles
RPT #16
NOP
;5.) Turn ON VCO APLL
MOV 0x0004, Port(#USB_APLL_CLKMD)
;The APLL is Now Shut Off
SWITCH_BACK_TO_DPLL_END
;Wait In an Infinite Loop
End
NOP
B End
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -