购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.6 MC9S12XS128内部锁相环模块PLL

MC9S12XS128的时钟和复位发生器(Clocks and Reset Generator,CRG)模块,提供了锁相环(PLL)功能,单片机使用PLL功能能够获得更高的总线频率,这对于需要提高单片机运行速度的应用场合非常必要。如在智能车系统制作中,特别是使用摄像头作为路径识别传感器的组别,就需要更高的单片机总线工作频率。为此,本节对PLL应用进行简要介绍。

内部锁相环(IPLL)具有以下基本特征:

● 时钟参考分频器;

● 时钟后分频器;

● 可配置的内部滤波器(无外部引脚);

● 减少抖动和降低辐射的可选频率调制模块;

● 退出或进入锁定条件可产生中断请求;

● 自时钟工作模式。

下面先分别介绍和PLL配置相关的寄存器。对于CRG模块中的其他寄存器,本节不做论述。对于PLL相关寄存器,仅介绍和PLL配置相关的位,其他位也不做详细论述。

2.6.1 CRG时钟合成寄存器(SYNR)

CRG时钟合成寄存器(CRG Synthesizer Register,SYNR)确定IPLL的倍频因子并选择VCO频率范围,如图2.17所示。

图2.17 S12XECRG合成寄存器

读:任何时刻;写:除CLKSEL寄存器中的PLLSEL=1时的任何时刻。

VCOFRQ1,VCOFRQ0:这2位用于确定压控振荡器VCO的增益以获得频率最佳稳定性并锁定。为了IPLL正常工作,必须根据表2-7中的实际VCO时钟频率配置这2位值。

表2-7 VCO时钟频率选择

PLL时钟频率以及由PLL产生的MCU总线时钟频率由下列公式计算:

f VCO =2× f OSC ×(SYNDIV+1)/(REFDIV+1)

f PLL = f VCO /(2×POSTDIV)

f BUS =f PLL /2

式中,SYNDIV的值由SYNR寄存器中的BIT5~BIT0确定,REFDIV值由REFDV寄存器中的BIT5~BIT0确定,POSTDIV值由POSTDIV寄存器中的BIT4~BIT0确定。

2.6.2 CRG时钟参考分频寄存器(REFDV)

CRG时钟参考分频寄存器(CRG Reference Divider Register,REFDV)如图2.18所示。

图2.18 CRG时钟参考分频寄存器

读:任何时刻;写:除 CLKSEL 寄存器中的PLLSEL=1时的任何时刻。

REFFRQ1,REFFRQ0:这2位用于配置PLL内部滤波器以获得频率最佳稳定性并锁定。为了IPLL正常工作,必须根据表2-8中的实际REF时钟频率设置这2位值。

表2-8 参考时钟频率选择

REFDV5~REFDV0:这6位用于确定前述公式中的REFDV值。

2.6.3 CRG时钟后分频寄存器(POSTDIV)

CRG时钟后分频寄存器(CRG Post Divider Register,POSTDIV)确定VCOCLK频率 f VCO 和PLLCLK频率 f PLL 之间的比率,如图2.19所示。

图2.19 CRG后分频寄存器

读:任何时刻;写:除 CLKSEL 寄存器中的PLLSEL=1时的任何时刻。

如果POSTDIV=0x00,则 f PLL = f VCO 。如果POSTDIV≠0,则PLLCLK频率 f PLL 和VCOCLK频率 f VCO 之间关系由下列公式计算:

f PLL = f VCO /(2×POSTDIV)

POSTDIV4~POSTDIV0:这5位用于确定公式中的POSTDIV值。

2.6.4 CRG标志寄存器(CRGFLG)

CRG标志寄存器(CRG Flags Register,CRGFLG)提供CRG模块的状态位和标志位,如图2.20所示。

图2.20 CRG标志寄存器

读:任何时刻;写:参考每位各自的写条件。

注1: 当上电复位发生时PORF置1,系统复位不受影响。

注2: 当低电压复位发生时LVRF置1,系统复位不受影响。

注3: 当非法地址复位发生时ILAF置1,系统复位不受影响,通过上电复位或者低电压复位清除。

RTIF:实时中断标志位。在实时时钟周期最后,置位RTIF。该位通过写1清除,写0无效。如果CRGINT寄存器中的实时中断使能(RTIE=1),则RTIF置位将产生中断请求。

● 0表示未发生RTI超时;

● 1表示已发生RTI超时。

PORF:上电复位标志位。当上电复位发生时,置位PORF。该位通过写1清除,写0无效。

● 0表示上电复位未发生;

● 1表示上电复位已发生。

LVRF:低电压复位标志位。当低电压复位发生时,置位LVRF。该位通过写1清除,写0无效。

● 0表示低电压复位未发生;

● 1表示低电压复位已发生。

LOCKIF:IPLL锁定中断标志位。当LOCK位改变时,置位LOCKIF。该位通过写1清除,写0无效。如果CRGINT寄存器中的锁定中断使能(LOCKIE=1),则LOCKIF置位将产生中断请求。

● 0表示LOCK位未变化;

● 1表示LOCK位已改变。

LOCK:锁定状态位。该位确定IPLL锁定条件的当前状态,在自时钟模式(SCM)下清除,写操作无效。

● 0表示VCOCLK频率和目标频率的误差不在允许范围内;

● 1表示VCOCLK频率和目标频率的误差已在允许范围内。

ILAF:非法地址复位标志位。当非法地址复位发生时,置位ILAF。该位通过写1清除,写0无效。

● 0表示非法地址复位未发生;

● 1表示非法地址复位已发生。

SCMIF:自时钟模式中断标志位。当SCM位改变时,置位SCMIF。该位通过写1清除,写0无效。如果CRGINT寄存器中的自时钟模式中断使能(SCMIE=1),则SCMIF置位将产生中断请求。

● 0表示SCM位未变化;

● 1表示SCM位已改变。

SCM:自时钟模式状态位。该位反映了MCU当前时钟模式,写操作无效。

● 0表示MCU和OSCCLK处于正常工作状态,系统时钟由OSCCLK提供;

● 1表示OSCCLK处于非正常工作状态,MCU在自时钟模式下工作,系统时钟频率为PLLCLK最低频率 f SCM

2.6.5 CRG时钟选择寄存器(CLKSEL)

CRG标志寄存器(CRG Clock Select Register,CLKSEL)控制CRG时钟的选择,如图2.21所示。

图2.21 CRG时钟选择寄存器

读:任何时刻;写:参考每位各自的写条件。

以下仅介绍和PLL相关位,其他位请读者参考MC9S12XS128数据手册。

PLLSEL:PLL选择位。任何时刻可写。当LOCK=0时,该位写1无效,这能够防止选择不稳定的PLLCLK作为系统时钟。当MCU进入自时钟模式、停止模式或者PLLWAI置位且进入等待模式时,则PLLSEL位清除。

● 0表示系统时钟由OSCCLK分频( f BUS = f OSC /2);

● 1表示系统时钟由PLLCLK分频( f BUS = f PLL /2)。

PLLWAI:等待模式下PLL停止控制位。任何时刻可写。如果PLLWAI置位,进入等待模式前,CRG将清除PLLSEL位;在等待模式期间,PLLON位保持置位,但IPLL模块断电。退出等待模式,如果使用PLL时钟,需要软件置位PLLSEL。

● 0表示等待模式下IPLL继续工作;

● 1表示等待模式下IPLL停止工作。

2.6.6 CRG IPLL控制寄存器(PLLCTL)

CRG IPLL控制寄存器(CRG IPLL Control Register,PLLCTL)确定IPLL功能,如图2.22所示。

图2.22 CRG IPLL控制寄存器

读:任何时刻;写:参考每位各自的写条件。

以下仅介绍和PLL相关位,其他位请读者参考MC9S12XS128数据手册。

CME:时钟监控使能位。除SCM=1时的任何时刻可写。

● 0表示禁止时钟监控功能;

● 1表示允许时钟监控功能。时钟变慢或停止将引起时钟监控复位或自时钟模式。

PLLON:锁相环启动位。除PLLSEL=1时的任何时刻可写。PLLON置位启动IPLL电路。自时钟模式下,启动IPLL,读取PLLON位为最近一次写入值。

● 0表示关闭IPLL;

● 1表示启动IPLL。

FM1,FM0:IPLL频率调制使能位。除PLLSEL=1时的任何时刻可写。这2位允许选择VCOCLK的附加频率调制模块以降低VCO噪声。调制频率是 f REF 除以16。表2-9列出频率调制幅值选择。

表2-9 频率调制幅值选择

SCME:自时钟模式使能位。正常模式下可以写一次,特殊模式下任何时刻可写。当工作在自时钟模式下(SCM=1)时,SCME不能被清除。

● 0表示检测到晶振时钟失效,引起时钟监控复位;

● 1表示检测到晶振时钟失效而强制MCU进入自时钟模式。

2.6.7 CRG中断使能寄存器(CRGINT)

CRG中断使能寄存器(CRG Interrupt Enable Register,CRGINT)中仅有3个有效控制位,通过设置相应的控制位能够禁止或响应CRG产生的相应中断申请,如图2.23所示。

图2.23 CRG中断使能寄存器

读:任何时刻;写:任何时刻。

RTIE:实时中断(RTI)使能位。该位使能允许RTIF产生中断请求。

● 0表示禁止RTI中断请求;

● 1表示允许RTIF中断请求。

LOCKIE:锁定中断(LOCKI)使能位。该位使能允许LOCKIF产生中断请求。

● 0表示禁止LOCKI中断请求;

● 1表示允许LOCKIF中断请求。

SCMIE:自时钟模式中断(SCMI)使能位。该位使能允许SCMIF产生中断请求。

● 0表示禁止SCMI中断请求;

● 1表示允许SCMIF中断请求。

2.6.8 CRG IPLL模块应用实例

本节通过一个简单实例,让读者掌握IPLL模块的使用和编程方法。

本实例实现使用IPLL模块,将总线时钟设定为40 MHz,晶振频率为16 MHz。以下给出CRG的IPLL初始化代码,读者如果使用其他频率晶振或者希望获得其他频率的总线时钟,可以对下面程序进行相应修改即可。

程序清单: 5emjKej9kk8xsN9eJcr5/5DMdZM+QIzQYljTbuKJbaLtvvmFVofDahW0bjP1f5cJ

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开