1,时钟系统
任何嵌入式系统要正常运行都必须需要一个稳定的时钟系统。下面简单介绍一下xmega的时钟系统及初始化过程。
Xmega时钟系统时钟源包括内部时钟源和外部时钟源。
内部时钟源有:
32MHz内部RC振荡器;
2MHZ内部RC振荡器;
32768kHz内部RC振荡器;
32Khz内部ULP低功耗振荡器;
外部时钟源:
0.4~16MHZ晶体振荡器;引脚XTAL1和XTAL2;
32.768kHZ晶体振荡器;引脚为TOSC1和TOSC2;
还可以从外部直接接入时钟。
通过上述时钟源通过锁相环(PLL)可以倍频到32MHz。
时钟分系统时钟、CPU时钟、外设时钟、外设分频时钟,同步时钟。
系统时钟选择与分频:所有时钟源及PLL都可以作为系统时钟CLK(sys),选择时钟源后,进入分频器进行分频。分频后作为各种外设时钟频率。
下面说一下PLL的倍频配置:
F(pll)=F(in)*PLL_FAC
下面4个时钟源可以作为锁相环的输入时钟:
MHz internal oscillator ,
32 MHz internal oscillator divided by 4
0.4 - 16 MHz Crystal Oscillator
External clock
要使用PLL,必须遵循下面几个步骤:
1,使能输入时钟源;
2,选择输入时钟源和设置倍频因子;
3,等待时钟源稳定;
4,使能PLL;
相关操作参见相关寄存器操作。具体的寄存器请到官网下载数据手册和用户手册查阅。下面我在Atmel Studio 6.2的基础上举例初始化时钟,初始化使用PLL到32MHz。参照上一章节的介绍在项目中添加时钟系统的驱动模块。
在系统时钟模块中的配置文件conf_clock.h中定义宏定义:
初始化后可以通过sysclk_get_main_hz这个函数读取系统时钟,该函数返回的就是系统时钟频率,看是否与初始化是否成功。
全部0条评论
快来发表一下你的评论吧 !