K60锁相环时钟设置.docx

上传人:b****3 文档编号:678840 上传时间:2022-10-12 格式:DOCX 页数:31 大小:17.24KB
下载 相关 举报
K60锁相环时钟设置.docx_第1页
第1页 / 共31页
K60锁相环时钟设置.docx_第2页
第2页 / 共31页
K60锁相环时钟设置.docx_第3页
第3页 / 共31页
K60锁相环时钟设置.docx_第4页
第4页 / 共31页
K60锁相环时钟设置.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

K60锁相环时钟设置.docx

《K60锁相环时钟设置.docx》由会员分享,可在线阅读,更多相关《K60锁相环时钟设置.docx(31页珍藏版)》请在冰豆网上搜索。

K60锁相环时钟设置.docx

K60锁相环时钟设置

/*

*hw_pll.c

*

*Createdon:

2012-4-17

*Author:

lenovo

*/

总线频率设置:

64

#include"common.h"

#include"hw_pll.h"

//锁相环频率为50/12*54=225M测试函数

voidpllinit225M(void)

{

uint32_ttemp_reg;

//使能IO端口时钟

SIM_SCGC5|=(SIM_SCGC5_PORTA_MASK

|SIM_SCGC5_PORTB_MASK

|SIM_SCGC5_PORTC_MASK

|SIM_SCGC5_PORTD_MASK

|SIM_SCGC5_PORTE_MASK);

//这里处在默认的FEI模式

//首先移动到FBE模式

MCG_C2=0;

//MCG_C2=MCG_C2_RANGE

(2)|MCG_C2_HGO_MASK|MCG_C2_EREFS_MASK;

//初始化晶振后释放锁定状态的振荡器和GPIO

SIM_SCGC4|=SIM_SCGC4_LLWU_MASK;

LLWU_CS|=LLWU_CS_ACKISO_MASK;

//选择外部晶振,参考分频器,清IREFS来启动外部晶振

//011IfRANGE=0,DivideFactoris8;forallotherRANGEvalues,DivideFactoris256.

MCG_C1=MCG_C1_CLKS

(2)|MCG_C1_FRDIV(3);

//等待晶振稳定

//while(!

(MCG_S&MCG_S_OSCINIT_MASK)){}//等待锁相环初始化结束

while(MCG_S&MCG_S_IREFST_MASK){}//等待时钟切换到外部参考时钟

while(((MCG_S&MCG_S_CLKST_MASK)>>MCG_S_CLKST_SHIFT)!

=0x2){}

//进入FBE模式,

//0x18==25分频=2M,

//0x08==15分频=3.333M

//0x09==16分频=3.125M,

//0x10==17分频=2.94M

//0x11==18分频=2.7778M

//0x12==19分频=2.63M,

//0x13==20分频=2.5M

MCG_C5=MCG_C5_PRDIV(0x0b);

//确保MCG_C6处于复位状态,禁止LOLIE、PLL、和时钟控制器,清PLLVCO分频器

MCG_C6=0x0;

//保存FMC_PFAPR当前的值

temp_reg=FMC_PFAPR;

//通过M&PFD置位M0PFD来禁止预取功能

FMC_PFAPR|=FMC_PFAPR_M7PFD_MASK|FMC_PFAPR_M6PFD_MASK|FMC_PFAPR_M5PFD_MASK

|FMC_PFAPR_M4PFD_MASK|FMC_PFAPR_M3PFD_MASK|FMC_PFAPR_M2PFD_MASK

|FMC_PFAPR_M1PFD_MASK|FMC_PFAPR_M0PFD_MASK;

///设置系统分频器

//MCG=PLL,core=MCG,bus=MCG/3,FlexBus=MCG/3,Flashclock=MCG/9

SIM_CLKDIV1=SIM_CLKDIV1_OUTDIV1(0)|SIM_CLKDIV1_OUTDIV2

(2)

|SIM_CLKDIV1_OUTDIV3

(2)|SIM_CLKDIV1_OUTDIV4(8);

//从新存FMC_PFAPR的原始值

FMC_PFAPR=temp_reg;

//设置VCO分频器,使能PLL为100MHz,LOLIE=0,PLLS=1,CME=0,VDIV=26

MCG_C6=MCG_C6_PLLS_MASK|MCG_C6_VDIV(30);//VDIV=31(x54)//VDIV=26(x50)

while(!

(MCG_S&MCG_S_PLLST_MASK)){};//waitforPLLstatusbittoset

while(!

(MCG_S&MCG_S_LOCK_MASK)){};//WaitforLOCKbittoset

//进入PBE模式

//通过清零CLKS位来进入PEE模式

//CLKS=0,FRDIV=3,IREFS=0,IRCLKEN=0,IREFSTEN=0

MCG_C1&=~MCG_C1_CLKS_MASK;

//等待时钟状态位更新

while(((MCG_S&MCG_S_CLKST_MASK)>>MCG_S_CLKST_SHIFT)!

=0x3){};

//SIM_CLKDIV2|=SIM_CLKDIV2_USBDIV

(1);

//设置跟踪时钟为内核时钟

SIM_SOPT2|=SIM_SOPT2_TRACECLKSEL_MASK;

//在PTA6引脚上使能TRACE_CLKOU功能

PORTA_PCR6=(PORT_PCR_MUX(0x7));

//使能FlexBus模块时钟

SIM_SCGC7|=SIM_SCGC7_FLEXBUS_MASK;

//在PTA6引脚上使能FB_CLKOUT功能

PORTC_PCR3=(PORT_PCR_MUX(0x5));

}

//锁相环频率为50/13*55=211.538462M测试函数

voidpllinit211M(void)

{

uint32_ttemp_reg;

//使能IO端口时钟

SIM_SCGC5|=(SIM_SCGC5_PORTA_MASK

|SIM_SCGC5_PORTB_MASK

|SIM_SCGC5_PORTC_MASK

|SIM_SCGC5_PORTD_MASK

|SIM_SCGC5_PORTE_MASK);

//这里处在默认的FEI模式

//首先移动到FBE模式

MCG_C2=0;

//MCG_C2=MCG_C2_RANGE

(2)|MCG_C2_HGO_MASK|MCG_C2_EREFS_MASK;

//初始化晶振后释放锁定状态的振荡器和GPIO

SIM_SCGC4|=SIM_SCGC4_LLWU_MASK;

LLWU_CS|=LLWU_CS_ACKISO_MASK;

//选择外部晶振,参考分频器,清IREFS来启动外部晶振

//011IfRANGE=0,DivideFactoris8;forallotherRANGEvalues,DivideFactoris256.

MCG_C1=MCG_C1_CLKS

(2)|MCG_C1_FRDIV(3);

//等待晶振稳定

//while(!

(MCG_S&MCG_S_OSCINIT_MASK)){}//等待锁相环初始化结束

while(MCG_S&MCG_S_IREFST_MASK){}//等待时钟切换到外部参考时钟

while(((MCG_S&MCG_S_CLKST_MASK)>>MCG_S_CLKST_SHIFT)!

=0x2){}

//进入FBE模式,

//0x18==25分频=2M,

//0x08==15分频=3.333M

//0x09==16分频=3.125M,

//0x10==17分频=2.94M

//0x11==18分频=2.7778M

//0x12==19分频=2.63M,

//0x13==20分频=2.5M

MCG_C5=MCG_C5_PRDIV(0x0C);

//确保MCG_C6处于复位状态,禁止LOLIE、PLL、和时钟控制器,清PLLVCO分频器

MCG_C6=0x0;

//保存FMC_PFAPR当前的值

temp_reg=FMC_PFAPR;

//通过M&PFD置位M0PFD来禁止预取功能

FMC_PFAPR|=FMC_PFAPR_M7PFD_MASK|FMC_PFAPR_M6PFD_MASK|FMC_PFAPR_M5PFD_MASK

|FMC_PFAPR_M4PFD_MASK|FMC_PFAPR_M3PFD_MASK|FMC_PFAPR_M2PFD_MASK

|FMC_PFAPR_M1PFD_MASK|FMC_PFAPR_M0PFD_MASK;

///设置系统分频器

//MCG=PLL,core=MCG,bus=MCG/3,FlexBus=MCG/3,Flashclock=MCG/8

SIM_CLKDIV1=SIM_CLKDIV1_OUTDIV1(0)|SIM_CLKDIV1_OUTDIV2

(2)

|SIM_CLKDIV1_OUTDIV3

(2)|SIM_CLKDIV1_OUTDIV4(7);

//从新存FMC_PFAPR的原始值

FMC_PFAPR=temp_reg;

//设置VCO分频器,使能PLL为100MHz,LOLIE=0,PLLS=1,CME=0,VDIV=26

MCG_C6=MCG_C6_PLLS_MASK|MCG_C6_VDIV(30);//VDIV=31(x54)//VDIV=26(x50)

while(!

(MCG_S&MCG_S_PLLST_MASK)){};//waitforPLLstatusbittoset

while(!

(MCG_S&MCG_S_LOCK_MASK)){};//WaitforLOCKbittoset

//进入PBE模式

//通过清零CLKS位来进入PEE模式

//CLKS=0,FRDIV=3,IREFS=0,IRCLKEN=0,IREFSTEN=0

MCG_C1&=~MCG_C1_CLKS_MASK;

//等待时钟状态位更新

while(((MCG_S&MCG_S_CLKST_MASK)>>MCG_S_CLKST_SHIFT)!

=0x3){};

//SIM_CLKDIV2|=SIM_CLKDIV2_USBDIV

(1);

//设置跟踪时钟为内核时钟

SIM_SOPT2|=SIM_SOPT2_TRACECLKSEL_MASK;

//在PTA6引脚上使能TRACE_CLKOU功能

PORTA_PCR6=(PORT_PCR_MUX(0x7));

//使能FlexBus模块时钟

SIM_SCGC7|=SIM_SCGC7_FLEXBUS_MASK;

//在PTA6引脚上使能FB_CLKOUT功能

PORTC_PCR3=(PORT_PCR_MUX(0x5));

}

//锁相环频率为50/13*54=207.7M测试函数

voidpllinit207M(void)

{

uint32_ttemp_reg;

//使能IO端口时钟

SIM_SCGC5|=(SI

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1