SAM3U系列时钟发生器由以下部件组成:•1个低功耗的频率为32768Hz的慢时钟振荡器,可以被旁路。
•1个低功耗RC振荡器时钟。
•1个频率为3-20MHz的晶体振荡器(使用USB时必须为12MHz),可以被旁路。
•1个出厂已编程的快速RC振荡器,有3种输出频率可供选择:4、8或12MHz,默认情况下为4Mhz。
•1个480MHz UTMI PLL,为高速USB设备控制器提供时钟。
•1个频率为96-192MHz的可编程PLL(输入频率为8-16MHz),可向处理器和外设提供MCK时钟。
它能够提供如下时钟:•SCLK,慢时钟,也即系统内唯一的常设时钟。
•MAINCLK,主时钟振荡器(Main Clock Oscillator)选择单元的输出时钟:晶体振振荡器或4/8/12MHz快速RC振荡器。
•PLLACK,分频器和PLL(PLLA)的输出时钟,其中PLL(PLLA)的频率可编程为96-192MHz。
•UPLLCK,480MHz UTMIPLL(UPLL)的输出时钟。
时钟发生器用户接口内嵌在功耗管理控制器中,27.13节“功耗管理控制器(PMC)用户接口”中描述了时钟发生器的用户接口。
不过,时钟发生器寄存器命名的前缀为CKGR_。
46126.22626--1.框图Slow Clock SLCKMain Clock MAINCKPLLA Clock PLLACKUPLL Clock UPLLCKSAM3U 系列62SAM3U系列由低速晶体振荡器或低速RC振荡器产生。
慢时钟源可通过设置供电控制器的控制寄存器(SUPC_CR)的XTALSEL位来选择。
默认情况下,选择RC振荡器。
26.6.33.1RC振荡器默认情况下,慢时钟RC振荡器是被选中和允许的,用户必须考虑RC振荡器可能产生的漂移。
更多细节可以参考本数据手册“DC特性”小节中。
通过设置供电控制器的控制寄存器(SUPC_CR)中XTALSEL位可禁止慢时钟RC振荡器。
26.6.33.2晶振时钟发生器集成了一个频率为32,768Hz的低功耗振荡器。
XIN和XOUT引脚必须连接到一个频率为32,768Hz的晶振上。
如图26-2所示,此时还必须连接两个外部电容。
更多细节可参考本产品数据手册“DC特性”小节。
注意:用户不是必须得使用慢时钟晶振,可以使用RC振荡器来代替慢时钟晶振。
在这种情况下,可以不连接XIN和XOUT引脚。
26--2.典型慢时钟晶振连接图26慢时钟晶振,这样就不用连接晶振。
在这种情况下,用户必须向XIN引脚提供外部时钟信号。
在本产品手册电气特性章节中描述了XIN引脚在这些条件下的输入特性。
程序员必须确保将供电控制器模式寄存器(SUPC_MR)中的OSCBYPASS位和供电控制器控制寄存器(SUPC_CR)中的XTALSEL位置1。
46326.426-3所示为主时钟(Main Clock )方框图。
2626--3.主时钟(Main Clock )方框图Slow Clock主时钟有两个时钟源:•4/8/12MHz 快速RC 振荡器,它可启动迅速,因此用于启动阶段。
•3-20MHz 晶体振荡器,它可被旁路。
26.6.44.1MHz 快速RC 振荡器复位后,4/8/12MHz 快速RC 振荡器被允许,默认选择4MHz 作为其输出频率,并作为MAINCK (主时钟)的时钟源。
MAINCK 是启动系统的默认时钟。
快速RC 振荡器的8/12MHz 输出频率在设备出厂时就进行了校正。
注意,对4MHz 输出频率则没有进行校正。
请参考本产品数据手册“DC 特性”小节。
可通过软件设置时钟发生器和主振荡器寄存器(CKGR_MOR )的MOSCRCEN 位来允许和禁止4/8/12MHz 快速RC 振荡器。
用户可以通过CKGR_MOR 寄存器的MOSCRCF 位来选择快速RC 振荡器的输出频率为4MHz 、8MHz 还是12MHz 。
当改变频率选择时,功耗管理控制器状态寄存器系列64SAM3U系列PMC_SR)中的MOSCRCS位自动清零,且在振荡器稳定前MAINCK时钟一直处于停止状态。
当振荡器稳定后,MAINCK时钟将重新启动,MOSCRCS位置1。
当通过对CKGR_MOR寄存器的MOSCRCEN位清零来禁止主时钟(Main Clock)时,功耗管理控制器状态寄存器(PMC_SR)的MOSCRCS位自动被清零,以指示主时钟(Main Clock)被关闭。
如果功耗管理控制器中断允许寄存器(PMC_IER)中MOSCRCS位被置位,将允许触发相应的中断。
26.6.44.2MHz晶体振荡器复位后,3-20MHz晶振被禁止,并且其未被选为MAINCK的时钟源。
用户可以选择3-20MHz晶体振荡器为MAINCK的时钟源,因为它可提供了更为精确的频率。
可以通过软件对主振荡器寄存器(CKGR_MOR)中的MOSCXTEN位置位或清零,来允许或禁止主振荡器以减少功耗。
当通过清零CKGR_MOR寄存器中的MOSCXTEN位禁止主振荡器时,PMC_SR寄存器中的MOSCXTS位自动清零,以指示主时钟(Main Clock)已关闭。
当允许主振荡器时,用户必须根据振荡器的启动时间用合适的值对主振荡器计数器进行初始化。
启动时间取决于连接到振荡器的晶振的频率。
当通过设置CKGR_MOR寄存器中的MOSCXTEN位和MOSCXTCNT位允许主振荡器时,功耗管理控制器状态寄存器(PMC_SR)中的MOSCXTS位被清零,计数器以慢时钟的八分之一频率从MOSCXTCNT开始向下计数,因为MOSCXTCNT值以8位编码,所以最大启动时间大约为62ms。
当计数值到达0时,MOSCXTS位将被置位,以指示主时钟(Main Clock)有效。
如果PMC_IMR寄存器中的MOSCXTS位处于置位状态,则还可以触发一个到处理器的中断。
26.6.44.3用户可以选择4/8/12MHz快速RC振荡器或3-20MHz晶体振荡器做为主时钟的时钟源。
4/8/12MHz快速RC振荡器的优点是可以快速启动,这是在启动系统时选择它做为默认时钟源以及进入待机模式时选择它为时钟源的原因。
3-20MHz晶体振荡器的优点是非常精确。
通过设置主振荡器寄存器(CKGR_MOR)中的MOSCSEL位来实现时钟源的选择。
主时钟源可以无干扰地切换,所以切换时没有必要关闭SLCK、PLLACK和PLLBCK,通过功耗管理控制器状态寄存器(PMC_SR)中的MOSCSELS位就可得知切换何时完成。
如果置位PMC_IMR寄存器中的MOSCSELS位,则还可以触发一个到处理器的中断。
26.6.44.4频率计数器这个设备是一个主时钟频率计数器,它提供主时钟的频率。
465这个设备是一个主时钟频率计数器,它提供主时钟的频率。
在如下情况下,主时钟频率计数器将复位,并在慢时钟的下一个上升沿后开始按主时钟的速度递增。
•选择4/8/12MHz快速RC振荡器时钟为主时钟的时钟源,且振荡器已稳定(也就是,MOSCRCS位置位时);•选择3-20MHz晶体振荡器为主时钟的时钟源,且振荡器已稳定(也就是,MOSCXTS位置位时);•当主时钟振荡器选择发生改变时。
然后,在慢时钟的第16个下降沿时,时钟发生器主时钟频率寄存器(CKGR_MCFR)中的MAINFRDY位被置位,计数器停止计数。
可以通过读取CKGR_MCFR寄存器的MAINF域得到计数器的值,该值反映了16个慢时钟周期内主时钟周期的个数。
这样,4/8/12MHz快速RC振荡器或3-20MHz晶体振荡器的频率就可以被确定了。
系列66SAM3U 系列PLLA 方框图PLLA 内嵌了一个输入分频器以增加其产生的时钟信号的精度。
然而,当用户对分频器进行编程时必须考虑到PLLA 的最小输入频率要求。
图26-4所示为分频器和PLLA 的方框图。
图2626--4.分频器和PLLA 方框图PLLACK26.5.1的编程分频器的值设置在1和255之间,步进为1。
当分频域(DIV )被设置为0时,相应分频器的输出和锁相环的输出都是连续的0电平信号。
复位时,每个DIV 域都设置为0,所以相应的PLL 输入时钟也被设置为0。
PLLA 允许对分频器的输出信号进行倍频。
PLLA 时钟信号频率取决于各自的时钟源信号频率、DIVA 及MULA 参数。
应用于时钟信号频率的因子为(MULA +1)/DIVA 。
当MULA 被设为0时,PLLA 被禁止,以节省其功耗。
向MUL 域写入一个大于0的值可重新允许PLLA 。
每当允许PLLA 或修改其参数时,PMC_SR 寄存器中的LOCKA 位都会被自动清零。
写入到CKGR_PLLAR 寄存器PLLACOUNT 域中的值将被加载到PLLA 计数器。
之后,PLLA 计数器将按慢时钟开始递减直到其值为0。
此时,PMC_SR 寄存器中的LOCK 位被置位,并可以触发一个到处理器的中断。
为完成PLLA 过渡,用户必须将所需时间的慢时钟周期个数加载到PLLACOUNT 域中。
通过设置PMC_MCKR 寄存器中的PLLADIV2位域,可将PLLA 时钟2分频。
26.6锁相环的编程UTMI PLL 的时钟源为主时钟MAINCK 。
当4/8/12MHz 快速RC 振荡器被选为MAINCK 的时钟源时,其频率必须选为12MHz ,因为UTMI PLL 倍频器内置了一个40倍的倍频器,以获得480MHz 的USB 高速时钟。
使用USB 时需要使用12MHz 的晶体振荡器。
467图2626--5.UTMI PLL 方框图UPLLCK每当通过设置CKGR_UCKR 寄存器的UPLLEN 位允许UTMI PLL 时,PMC_SR 寄存器的LOCKU 位都将自动清零。
写入CKGR_UCKR 寄存器PLLCOUNT 域的值将被加载到UTMI PLL 计数器;然后UTMI PLL 计数器将按慢时钟的频率八分之一开始递减,直到其值为0。
此时,PMC_SR 寄存器的LOCKU 位将被置位,且触发一个到处理器的中断。
为完成UTMI PLL 过渡,用户必须将所需时间的慢时钟周期个数加载到PLLCOUNT 域中。
系列68。