飞思卡尔锁相环
PLL锁相环程序

飞思卡尔XS128系列(一)PLL锁相环通俗点说,设置PLL锁相环就相当于超频,单片机超频的原因和PC机是一个道理。
分频的主要原因是外设需要的工作频率往往远低于CPU/MEMORY,这也和PC机南北桥的原理类似。
相对来说,PLL锁相环的设置还是比较简单的,因为东西很死,完全可以照搬。
只是大家也不要太贪,设置太高相对来说不够稳定,进行过PC机超频的应该很有体会,一般我们现在用的XS128我觉得设置在80MHz是比较合适的,相比前几届比赛用的DG128,这个频率已经蛮高的了。
还有就是SYNR,REFDV只有在CLKSEL_PLLSEL=0的情况下才能写入,不过这是系统默认状态。
多半大家可能还会有以下几点疑问:1.PLL锁相环怎么设置?答:通过写REFDV(CRG参考分频寄存器)和SYNR(CRG合成器寄存器)进行设置2.代码里while(!CRGFLG_LOCK);这句是干什么的?答:时钟校正同步3.为什么代码中会有多多少少的几句空语句?答:锁相环从设定到最后稳定还是需要一点点时间的,所以需要加几条空指令/*************************************************************************** ***********------------------------------------Code Warrior 5.0Target : MC9S12XS128Crystal: 16.000Mhz============================================本程序主要包括以下功能:设定系统工作在xxMHZ bus clock时钟下;by:庞辉**************************************************************************** *************/#include <hidef.h> /*common defines and macros*/#include <MC9S12XS128.h> /*derivative information*/#pragma LINK_INFO DERIVATIVE "mc9s12xs128"void SetBusCLK_16M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR=0x00 | 0x01; //VCOFRQ[7:6];SYNDIV[5:0]//fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1)//fPLL= fVCO/(2 × POSTDIV)//fBUS= fPLL/2//VCOCLK Frequency Ranges VCOFRQ[7:6]//32MHz <= fVCO <= 48MHz 00//48MHz < fVCO <= 80MHz 01//Reserved 10//80MHz < fVCO <= 120MHz 11REFDV=0x80 | 0x01; //REFFRQ[7:6];REFDIV[5:0]//fREF=fOSC/(REFDIV + 1)//REFCLK Frequency Ranges REFFRQ[7:6]//1MHz <= fREF <= 2MHz 00//2MHz < fREF <= 6MHz 01//6MHz < fREF <= 12MHz 10//fREF > 12MHz 11//pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;POSTDIV=0x00; //4:0, fPLL= fVCO/(2xPOSTDIV)//If POSTDIV = $00 then fPLL is identical to fVCO (divide by one)._asm(nop); //BUS CLOCK=16M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_32M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0x40 | 0x03; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=64MHz; REFDV=0x80 | 0x01;POSTDIV=0x00;_asm(nop); //BUS CLOCK=32M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_40M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x04;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;_asm(nop); //BUS CLOCK=40M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_48M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x05;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=96MHz;_asm(nop); //BUS CLOCK=48M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_64M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x07;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=128MHz; _asm(nop); //BUS CLOCK=64M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_80M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x09;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=160MHz; _asm(nop); //BUS CLOCK=80M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_88M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x0a;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=176MHz; _asm(nop); //BUS CLOCK=88M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_96M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x0b;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=192MHz; _asm(nop); //BUS CLOCK=96M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_104M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x0c;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=208MHz; _asm(nop); //BUS CLOCK=104M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system;}void SetBusCLK_120M(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLLSYNR =0xc0 | 0x0d;REFDV=0x80 | 0x01;POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=240MHz; _asm(nop); //BUS CLOCK=120M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system;}void main(void){EnableInterrupts;for(;;){_asm(nop);}}。
飞思卡尔锁相环

备战飞思卡尔智能车大赛.开始模块总结.锁相环设置.公式: PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1),fbus=PLLCLK/2void INIT_PLL(void){CLKSEL &= 0x7f; //选用外部时钟.准备设置锁相环PLLCTL &= 0x8F; //禁止锁相环SYNR = 0xc9; //设置SYNRREFDV = 0x81; //设置REFDVPLLCTL |=0x70; //锁相环使能asm NOP; asm NOP; //两个机器周期缓冲时间while(!(CRGFLG&0x08)); //等待锁相环锁定CLKSEL |= 0x80; //设置锁相环为时钟源}飞思卡尔XS128的PLL锁相环详细设置说明——关于如何提高总线工作频率PLL锁相环就相当于超频单片机超频的原因和PC机是个一道理。
分频的主要原因是外设需要的工作频率往往远低于CPU/MEMORY这也和PC机南北桥的原理类似。
总线频率设置过程1、禁止总中断2、寄存器CLKSEL(时钟选择寄存器)的第七位置0即CLKSEL_PLLSEL=0。
选择时钟源为外部晶振OSCCLK(外接晶振频率)在PLL(锁相环)程序执行前内部总线频率为OSCCLK/23. PLLCTL_PLLON=1 打开PLL4.设置SYNR时钟合成寄存器、REFDV时钟分频寄存器、POSTDIV三个寄存器的参数5、_asm(nop) _asm(nop);加入两条空指令使锁相环稳定6、while(!(CRGFLG_LOCK==1));//时钟校正同步7、CLKSEL_PLLSEL=1; 下面详细说一下频率的计算一、时钟合成寄存器SYNR寄存器结构VCOFRQ[1:0]控制压控振动器VCO的增益默认值为00VCO的频率与VCOFRQ[1:0]对应表什么是锁相环呢?MCU的支撑电路一般需要外部时钟来给MCU提供时钟信号,而外部时钟的频率可能偏低,为了使系统更加快速稳定运行,需要提升系统所需要的时钟频率。
锁相环工作原理

锁相环工作原理锁相环路是一种反馈电路,锁相环的英文全称是Phase-Locked Loop,简称PLL。
其作用是使得电路上的时钟和某一外部时钟的相位同步。
因锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。
锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。
在数据采集系统中,锁相环是一种非常有用的同步技术,因为通过锁相环,可以使得不同的数据采集板卡共享同一个采样时钟。
因此,所有板卡上各自的本地80MHz和20MHz时基的相位都是同步的,从而采样时钟也是同步的。
因为每块板卡的采样时钟都是同步的,所以都能严格地在同一时刻进行数据采集。
锁相环路是一个相位反馈自动控制系统。
它由以下三个基本部件组成:鉴相器(PD)、环路滤波器(LPF)和压控振荡器(VCO)。
锁相环的工作原理:1. 压控振荡器的输出经过采集并分频;2. 和基准信号同时输入鉴相器;3. 鉴相器通过比较上述两个信号的频率差,然后输出一个直流脉冲电压;4. 控制VCO,使它的频率改变;5. 这样经过一个很短的时间,VCO 的输出就会稳定于某一期望值。
锁相环可用来实现输出和输入两个信号之间的相位同步。
当没有基准(参考)输入信号时,环路滤波器的输出为零(或为某一固定值)。
这时,压控振荡器按其固有频率fv进行自由振荡。
当有频率为fR的参考信号输入时,uR 和uv同时加到鉴相器进行鉴相。
如果fR和fv相差不大,鉴相器对uR和uv进行鉴相的结果,输出一个与uR和uv的相位差成正比的误差电压ud,再经过环路滤波器滤去ud中的高频成分,输出一个控制电压uc,uc将使压控振荡器的频率fv(和相位)发生变化,朝着参考输入信号的频率靠拢,最后使fv= fR,环路锁定。
环路一旦进入锁定状态后,压控振荡器的输出信号与环路的输入信号(参考信号)之间只有一个固定的稳态相位差,而没有频差存在。
锁相环pll原理与应用

$number {01}
目 录
• 锁相环PLL的基本原理 • 锁相环PLL的种类与特性 • 锁相环PLL的应用 • 锁相环PLL的发展趋势与挑战 • 锁相环PLL的设计与实现
01
锁相环PLL的基本原理
PLL的基本结构
鉴相器(PD)
用于比较输入信号和反馈信号的相位 差。
压控振荡器(VCO)
相位同步
锁相环PLL用于电力系统的相位同步,确保不同电源之间的相位一 致,提高电力系统的稳定性。
频率跟踪
锁相环PLL用于电力系统的频率跟踪,实时监测电网频率变化,确 保电力系统的正常运行。
故障定位
通过分析电网信号的相位和频率变化,结合锁相环PLL实现电力故 障的快速定位和排查。
其他领域的应用
电子测量
PLL的发展趋势
高速化
随着通信技术的发展, 对信号的传输速率要求 越来越高,锁相环PLL 的频率合成速度和跟踪
速度也在不断加快。
数字化
随着数字信号处理技术 的进步,越来越多的锁 相环PLL开始采用数字 控制方式,提高了系统 的稳定性和灵活性。
集成化
为了减小电路体积和降 低成本,锁相环PLL的 集成化程度越来越高, 越来越多的功能被集成
软件PLL具有灵活性高、可重 构性好等优点,但同时也存在 计算量大、实时性差等缺点。
各种PLL的优缺点比较
1 2
3
模拟PLL
优点是响应速度快、跟踪性能好;缺点是元件参数漂移、温 度稳定性差。
数字PLL
优点是精度高、稳定性好、易于集成;缺点是响应速度慢、 跟踪性能较差。
软件PLL
优点是灵活性高、可重构性好;缺点是计算量大、实时性差 。
锁相环工作原理

锁相环工作原理锁相环是一种常见的电子设备,用于调整和稳定信号的相位。
它在许多领域中都有广泛的应用,包括通信系统、雷达、无线电、光学和音频设备等。
下面将详细介绍锁相环的工作原理。
一、引言锁相环是一种反馈控制系统,它通过比较输入信号和参考信号的相位差,并根据差异来调整输出信号的相位,从而使输出信号与参考信号保持同步。
锁相环通常由相位比较器、低通滤波器、电压控制振荡器(VCO)和分频器等组成。
二、工作原理1. 相位比较器相位比较器是锁相环的核心部件之一。
它将输入信号和参考信号进行相位比较,并输出相位差。
常见的相位比较器有边沿比较器和恒幅比较器。
边沿比较器通过检测输入信号和参考信号的边沿来计算相位差,而恒幅比较器则通过比较输入信号和参考信号的幅度来计算相位差。
2. 低通滤波器相位比较器输出的相位差信号通常包含噪声和高频成份,需要经过低通滤波器进行滤波处理。
低通滤波器的作用是去除高频噪声,使得输出信号更加平滑。
3. 电压控制振荡器(VCO)VCO是锁相环中的一种振荡器,其输出频率可以通过调节输入电压来控制。
VCO的输出频率与输入电压成正比。
在锁相环中,VCO的输出频率被用作反馈信号,通过调节输入电压来实现相位的调整。
4. 分频器分频器用于将VCO的输出信号分频,以提供参考信号给相位比较器。
分频器的作用是将高频信号转换为低频信号,使得相位比较器能够更精确地进行相位比较。
三、工作流程锁相环的工作流程如下:1. 输入信号和参考信号经过相位比较器进行相位比较,得到相位差信号。
2. 相位差信号经过低通滤波器进行滤波处理,去除高频噪声。
3. 滤波后的信号作为输入电压,调节VCO的输出频率。
4. VCO的输出信号经过分频器分频后作为参考信号,再次经过相位比较器进行相位比较。
5. 反复循环上述步骤,直到输入信号和参考信号的相位差趋于稳定,锁定在一个特定的相位差值上。
6. 输出信号与参考信号保持同步,实现相位的稳定和调整。
飞思卡尔MC9S12XS128功能模块驱动

用了一年多飞思卡尔MC9S12XS128这款处理器,现在总结下各个功能模块的驱动.//锁相环时钟的初始化总线频率为40MHz(总线时钟为锁相环时钟的一半)//晶振为11.0592MHzvoid PLL_init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) { //锁相环时钟= 2*11.0592*(39+1)/(10+1)=80MHz 总线时钟为40MHzREFDV=0x0A;SYNR=0x67; //0110_0111 低6位的值为19,高两位的值为推荐值while(CRGFLG_LOCK != 1);CLKSEL_PLLSEL = 1; //选定锁相环时钟//FCLKDIV=0x0F; //Flash Clock Divide Factor 16M/16=1M}//周期中断定时器的初始化-// //周期中断通道1用于脉冲累加器的定时采样,定时周期为: 10ms= (199+1)*(1999+1)/(40M) (没有使用)//周期中断通道0用于控制激光管的轮流发射,定时周期为: 2000us= (399+1)*(199+1)/(40M)//2011/4/4 15:24 定时时间改为1msvoid PIT_init(void){PITCFLMT_PITE = 0; // 禁止使用PIT模块 PITCFLMT :PIT 控制强制加载微计数器寄存器。
PITCE_PCE0 = 1; // 使能定时器通道0//PITCE_PCE1 = 1; //使能定时器通道1PITMUX = 0; //通道0,和通道1均选择8位微计数器0//修改时间只需要改下面四行PITMTLD0 = 199; //向8位微计数器中加载的值PITLD0 = 199; //向16位计数器中加载的值//PITMTLD1 = 39; //向8位微计数器中加载的值 8位,最大值不要超过255//PITLD1 = 1999; //向16位计数器中加载的值PITINTE |= 0x01; //使能定时器通道0的中断PITCFLMT_PITE = 1;//使能PIT模块}//脉冲累加器的初始化, PT7口外接光电编码器//最新修改: 2011/3/25 16:53void PT7_PulAcc_Init(void){DDRT &= 0x77;//设置PT7,PT3口为输入(硬件上PT7,PT3通过跳线联到了一块)PERT |= 0x80; //使能通道7的上拉电阻PPST &= 0x7f; //电阻设为上拉电阻TCTL4 &= 0x3f; //禁止PT3的输入捕捉功能PACTL = 0x50; //启动脉冲累加计数器,上升沿触发,禁止触发中断和溢出中断,主定时器禁止}//通道1用于控制舵机1 PWM 高电平有效,//通道3用于控制电机1 PWM 低电平有效,这与前两代车高电平有效有区别!!!!!//通道7用于给上排激光管提供PWM信号 PWM高电平有效!!!!!//通道6用于给下排激光管提供PWM信号 PWM高电平有效!!!!!// 2011-03-17 7:56 增加了A端口的使用新增通道6//2011-6-9 23:03 //增加了通道4,5的联合使用,用于控制下排方向舵机 void PWM_init(void){PWME = 0x00;//PWM禁止PWMPRCLK = 0x03; // ClockA=40M/8=5M, Clock B = 40M/1=40M PWMSCLB = 10; // Clock SB= 40/2*10= 2MHz(供电机)PWMSCLA = 5; // SA = Clock A/2*5 = 5M/10 = 500K = SA 用于控制舵机PWMPOL = 0xe2; //1110_0010通道7,通道6与通道1、通道5先输出高电平然后输出低电平,POLx=1先输出高电平后输出低电平; PPOLx=0先输出低电平)PWMCAE = 0x00; // 左对齐输出(CAEx=0为左对齐,反之为中心对齐)//PWMCLK = 0010_1010 (0 1 4 5位控制SA_1;或A_0; 2 3 6 7位控制SB_1 或B_0)//为PWM通道1选择时钟 SA(500KHz),//为PWM通道5选择时钟 SA(500KHz),//为通道3选择时钟 SB(10MHz)//为通道7选择时钟B(40MHz)//为通道6选择时钟B(40MHz)PWMCLK = 0x2A; //0010_1010PWMCTL = 0x70; //0111_0000 CON45=1,把通道4,5联合使用。
锁相环的基本原理锁相环基本原理及其应用

锁相环的基本原理锁相环基本原理及其应用锁相环的基本原理锁相环基本原理及其应用锁相环及其应用所谓锁相环路,实际是指自动相位控制电路(APC),它是利用两个电信号的相位误差,通过环路自身调整作用,实现频率准确跟踪的系统,称该系统为锁相环路,简称环路,通常用PLL表示。
锁相环路是由鉴相器(简称PD)、环路滤波器(简称LPF或LF)和压控振荡器(简称VCO)三个部件组成闭合系统。
这是一个基本环路,其各种形式均由它变化而来PLL概念设环路输入信号v= Viomimsin(ωit+φi)环路输出信号v= Vosin(ωot+φo)——其中ωo=ωr+△ωo通过相位反馈控制,最终使相位保持同步,实现了受控频率准确跟踪基准信号频率的自动控制系统称为锁相环路。
PLL构成由鉴相器(PD)环路滤波器(LPF)压控振荡器(VCO)组成的环路。
PLL原理从捕捉过程→锁定A.捕捉过程(是失锁的)a. b.φi┈φi均是随时间变化的,经相位比较产生误差相位φe=φi-φo,也是变化的。
φe(t)由鉴相器产生误差电压v(t)=f(φde)完成相位误差—电压的变换作用。
v(t)为交流电压。
dc.v(t)经环路滤波,滤除高频分量和干扰噪声得到纯净控制电压,由VCO产生d控制角频差△ω0,使ω0随ωi变化。
B.锁定(即相位稳定)a. b.一旦锁定φe(t)=φe∞(很小常数)v(t)= V(直流电压)ddω0≡ωi输出频率恒等于输入频率(无角频差,同时控制角频差为最大△ω0max, 即ω0=ωr+△ω0max。
ωr为VCO固有振荡角频率。
)锁相基本组成和基本方程(时域)各基本组成部件鉴相器(PD)数学模式v(t)=AsinφdDe(t)相位模式环路滤波器(LPF) 数学模式v(t)=A(P) v(t)cFd相位模式压控振荡器(VCO)数学模式相位模式环路模型相位模式:指锁相环(PLL)输入相位和输出相位的反馈调节关系。
相位模型:把鉴相器,环路滤波器和压控振荡器三个部件的相位模型依次级联起来就构成锁相相位模型。
锁相环指标 -回复

锁相环指标-回复什么是锁相环指标?锁相环(Phase-Locked Loop,简称PLL)是一种用于时钟生成和频率合成的电路。
锁相环指标是对锁相环电路性能进行评估和描述的一系列参数。
这些指标可以用来评估PLL的稳定性、带宽、相位噪声等重要性能。
1. 锁相环的基本原理和结构锁相环由相位比较器、低通滤波器、电压控制振荡器(Voltage-Controlled Oscillator,简称VCO)和分频器组成。
其基本原理是通过不断调整VCO的频率和相位,使其与参考信号保持同步。
相位比较器将参考信号和VCO输出的信号进行相位比较,并产生一个误差信号。
这个误差信号经过低通滤波器后,被送至VCO进行频率和相位调整。
2. 锁相环指标的分类锁相环指标通常可以分为稳定性指标、带宽指标、相位噪声指标等几个方面。
稳定性指标主要包括:锁定时间、追踪范围、捕获范围等。
锁定时间是指锁相环从失锁状态转移到锁定状态所需的时间,是评估锁相环速度的重要指标。
追踪范围是指锁相环能追踪的输入频率范围,超出追踪范围的输入信号会导致失锁。
捕获范围是指锁相环能捕获的输入频率范围,超出捕获范围的输入信号也会导致失锁。
带宽指标主要包括:环路带宽、相位裕度等。
环路带宽是指锁相环的频率响应范围,描述了PLL对输入信号的跟随能力。
相位裕度是指锁相环频率响应的相位裕量,决定了锁定后的相位稳定度。
相位噪声指标主要包括:相位噪声密度、杂散频率等。
相位噪声密度是指在单位频率范围内,锁相环输出信号的相位噪声功率。
杂散频率是指锁相环输出信号中除了基频外的其它频率分量。
3. 如何评估锁相环指标评估锁相环指标通常需要进行实验测试或进行模拟仿真。
其中,常用的测试方法包括锁定时间测试、频率响应测试、相位噪声测试等。
在锁定时间测试中,输入一个频率变化较大的信号,观察锁相环从失锁到锁定所需的时间。
锁相环的响应快速且稳定的特性表示较好的锁定时间。
频率响应测试通常通过输入不同频率的正弦波信号,并测量锁相环输出的幅值和相位,以绘制幅频响应和相频响应曲线。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
备战飞思卡尔智能车大赛.开始模块总结.锁相环设置.公式: PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1),fbus=PLLCLK/2void INIT_PLL(void){CLKSEL &= 0x7f; //选用外部时钟.准备设置锁相环PLLCTL &= 0x8F; //禁止锁相环SYNR = 0xc9; //设置SYNRREFDV = 0x81; //设置REFDVPLLCTL |=0x70; //锁相环使能asm NOP; asm NOP; //两个机器周期缓冲时间while(!(CRGFLG&0x08)); //等待锁相环锁定CLKSEL |= 0x80; //设置锁相环为时钟源}飞思卡尔XS128的PLL锁相环详细设置说明——关于如何提高总线工作频率PLL锁相环就相当于超频 单片机超频的原因和PC机是个一道理。
分频的主要原因是外设需要的工作频率往往远低于CPU/MEMORY 这也和PC机南北桥的原理类似。
总线频率设置过程1、禁止总中断2、寄存器CLKSEL(时钟选择寄存器)的第七位置0 即CLKSEL_PLLSEL=0。
选择时钟源为外部晶振OSCCLK(外接晶振频率) 在PLL(锁相环)程序执行前 内部总线频率为OSCCLK/23. PLLCTL_PLLON=1 打开PLL4.设置SYNR 时钟合成寄存器 、REFDV 时钟分频寄存器 、POSTDIV三个寄存器的参数5、_asm(nop) _asm(nop);加入两条空指令 使锁相环稳定6、while(!(CRGFLG_LOCK==1));//时钟校正同步7、CLKSEL_PLLSEL=1; 下面详细说一下频率的计算一、时钟合成寄存器SYNR寄存器结构 VCOFRQ[1:0]控制压控振动器VCO的增益 默认值为00 VCO的频率与VCOFRQ[1:0]对应表什么是锁相环呢?MCU的支撑电路一般需要外部时钟来给MCU提供时钟信号,而外部时钟的频率可能偏低,为了使系统更加快速稳定运行,需要提升系统所需要的时钟频率。
这就得用到锁相环了。
例如MCU用的外部晶振是16M的无源晶振,则可以通过锁相环PLL把系统时钟倍频到24M,从而给系统提供更高的时钟信号,提高程序的运行速度。
51单片机,AVR单片机内部没有锁相环电路,其系统时钟直接由外部晶振提供。
而XS128内部集成了锁相环电路,其系统时钟既可由外部晶振直接提供,也可以通过锁相环倍频后提供,当然,还有由XS128内部的时钟电路来提供(当其它来源提供的系统时钟不稳定时,内部时钟电路就起作用了,也就是自时钟模式)。
锁相环作为一个提供系统时钟的模块,是一个基本的模块,几乎每次编程序都得用到。
下面记一下怎样配置锁相环来设定想要的系统时钟。
锁相环PLL、自时钟模式和前面说的实时中断RTI、看门狗COP都属于系统时钟与复位CRG 中的模块,固前面用到的寄存器,这里有些会再用到。
在程序中配置锁相环的步骤如下:第一、禁止总中断;第二、寄存器CLKSEL的第七位置0,即CLKSEL_PLLSEL=0。
选择时钟源为外部晶振OSCCLK,在PLL程序执行前,内部总线频率为OSCCLK/2。
CLKSEL_PLLSEL=0时,系统时钟由外部晶振直接提供,系统内部总线频率=OSCCLK/2(OSCCLK 为外部晶振频率)。
CLKSEL_PLLSEL=1时,系统时钟由锁相环提供,此时系统内部总线频率=PLLCLK/2 (PLLCLK为锁相环倍频后的频率)。
第三、禁止锁相环PLL,即PLLCTL_PLLON=0。
当PLLCTL_PLLON=0时,关闭PLL电路。
当PLLCTL_PLLON=1时,打开PLL电路。
第四、根据想要的时钟频率设置SYNR和REFDV两个寄存器。
SYNR和REFDV两个寄存器专用于锁相环时钟PLLCLK的频率计算,计算公式是:PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)其中,PLLCLK为PLL模块输出的时钟频率;OSCCLK为晶振频率;SYNR、REFDV分别为寄存器SYNR、REFDV中的值。
这两个寄存器只有在PLLSEL=0时才能够写入(这里就是第二步的设置原因所在了)。
第五、打开PLL,即PLLCTL_PLLON=1。
第六、CRGFLG_LOCK位,确定PLL是否稳定。
当锁相环PLL电路输出的频率达到目标频率的足够小的误差范围内时,LOCK位置1,此时说明PLLCLK已经稳定,可以作为系统的时钟了。
该位在正常情况下为只读位。
第七、PLLCLK稳定后,允许锁相环时钟源PLLCLK为系统提供时钟,即CLKSEL_PLLSEL=1。
到这里,锁相环的设置就完毕了。
如果想更灵活地配置系统时钟,就还得用到下面的寄存器了,下面逐一说说:1、CRGFLG_LOCKIF 锁相环的中断标志位。
当系统时钟因为稳定或不稳定而导致LOCK位(上面已提到)变化时,该位置1。
此时,如果CRGINT_LOCKIE=1,则产生中断。
CRGINT_LOCKIE=1时,则允许产生锁相环锁定中断。
CRGINT_LOCKIE=0时,则不允许。
2、CLKSEL_PLLWAI是等待模式PLL停止位。
当CLKSEL_PLLWAI=1时,系统进入等待模式时,锁相环PLL停止工作。
当CLKSEL_PLLWAI=0时,系统进入等待模式时,锁相环PLL仍然工作。
下面顺便说一下与自时钟模式相关的几个寄存器:CRGFLG_SCMIF 自时钟模式中断标志位。
当SCM位变化时,该位置1。
此时,如果CRGINT_SCMIE=1,则产生中断。
CRGFLG_SCM 自时钟模式状态位。
当晶振频率不稳定时,该位置1,系统会进入自时钟模式,系统的时钟将由自时钟模式下的时钟提供。
CRGINT_SCMIE 自时钟模式中断的使能位。
当CRGINT_SCMIE=1时,允许产生自时钟模式中断。
当CRGINT_SCMIE=0时,不能产生自时钟模式中断。
PLLCTL_SCME 自时钟模式使能位。
在自时钟模式下,该位不能被清0。
PLLCTL_SCME=1时,晶振时钟失灵系统将强制进入自时钟模式。
当PLLCTL_SCME=0时,晶振失灵将导致时钟监控器复位。
下面附一条锁相环的初始化程序; void MCUInit() {DISABLE_INTERRUPTS; //(1)禁止总中断CLKSEL &= 0x7f; //(2)CLKSEL的第7位置0,选择系统时钟源为OSCCLK PLLCTL &= 0xbf; // (3)禁止PLL , PLLCTL.6(pllon)设为0;先关闭PLL SYNR = 0x01; //(4)根据需要的时钟频率设置SYNR和REFDV寄存器REFDV = 0x00; PLLCTL |= (1<<6); //(5)打开PLL , PLLCTL.6(pllon)设为1;开PLL while (( CRGFLG&0x08) == 0x00); //(6)通过判断LOCK位,//确定PLL是否稳定CLKSEL |= (1<<7); //(7)时钟频率稳定后,允许锁相环时钟源作为系统时钟源;//本句执行后:BusClock=PLLCLK/2 }什么是锁相环呢?MCU的支撑电路一般需要外部时钟来给MCU提供时钟信号,而外部时钟的频率可能偏低,为了使系统更加快速稳定运行,需要提升系统所需要的时钟频率。
这就得用到锁相环了。
例如MCU用的外部晶振是16M的无源晶振,则可以通过锁相环PLL把系统时钟倍频到24M,从而给系统提供更高的时钟信号,提高程序的运行速度。
51单片机,AVR单片机内部没有锁相环电路,其系统时钟直接由外部晶振提供。
而XS128内部集成了锁相环电路,其系统时钟既可由外部晶振直接提供,也可以通过锁相环倍频后提供,当然,还有由XS128内部的时钟电路来提供(当其它来源提供的系统时钟不稳定时,内部时钟电路就起作用了,也就是自时钟模式)。
锁相环作为一个提供系统时钟的模块,是一个基本的模块,几乎每次编程序都得用到。
下面记一下怎样配置锁相环来设定想要的系统时钟。
锁相环PLL、自时钟模式和前面说的实时中断RTI、看门狗COP都属于系统时钟与复位CRG 中的模块,固前面用到的寄存器,这里有些会再用到。
在程序中配置锁相环的步骤如下:第一、禁止总中断;第二、寄存器CLKSEL的第七位置0,即CLKSEL_PLLSEL=0。
选择时钟源为外部晶振OSCCLK,在PLL程序执行前,内部总线频率为OSCCLK/2。
CLKSEL_PLLSEL=0时,系统时钟由外部晶振直接提供,系统内部总线频率=OSCCLK/2(OSCCLK 为外部晶振频率)。
CLKSEL_PLLSEL=1时,系统时钟由锁相环提供,此时系统内部总线频率=PLLCLK/2 (PLLCLK为锁相环倍频后的频率)。
第三、禁止锁相环PLL,即PLLCTL_PLLON=0。
当PLLCTL_PLLON=0时,关闭PLL电路。
当PLLCTL_PLLON=1时,打开PLL电路。
第四、根据想要的时钟频率设置SYNR和REFDV两个寄存器。
SYNR和REFDV两个寄存器专用于锁相环时钟PLLCLK的频率计算,计算公式是:PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)其中,PLLCLK为PLL模块输出的时钟频率;OSCCLK为晶振频率;SYNR、REFDV分别为寄存器SYNR、REFDV中的值。
这两个寄存器只有在PLLSEL=0时才能够写入(这里就是第二步的设置原因所在了)。
第五、打开PLL,即PLLCTL_PLLON=1。
第六、CRGFLG_LOCK位,确定PLL是否稳定。
当锁相环PLL电路输出的频率达到目标频率的足够小的误差范围内时,LOCK位置1,此时说明PLLCLK已经稳定,可以作为系统的时钟了。
该位在正常情况下为只读位。
第七、PLLCLK稳定后,允许锁相环时钟源PLLCLK为系统提供时钟,即CLKSEL_PLLSEL=1。
到这里,锁相环的设置就完毕了。
如果想更灵活地配置系统时钟,就还得用到下面的寄存器了,下面逐一说说:1、CRGFLG_LOCKIF 锁相环的中断标志位。
当系统时钟因为稳定或不稳定而导致LOCK位(上面已提到)变化时,该位置1。
此时,如果CRGINT_LOCKIE=1,则产生中断。
CRGINT_LOCKIE=1时,则允许产生锁相环锁定中断。
CRGINT_LOCKIE=0时,则不允许。
2、CLKSEL_PLLWAI是等待模式PLL停止位。
当CLKSEL_PLLWAI=1时,系统进入等待模式时,锁相环PLL停止工作。
当CLKSEL_PLLWAI=0时,系统进入等待模式时,锁相环PLL仍然工作。