S5PV210 sys_clock编程流程 系统时钟功能模块操作

一.需掌握知识:
     应该理解系统时钟中一些概念,知道如何设置系统时钟。

二.程序效果:

今天编写sys_time程序,预期的实验结果是,在S5PV210开发板上实现将系统主频设置为1GHZ,检测用led闪烁的快慢表示。


三. 常用概念

1.   S5PV210一共有3个时钟域,MSYS,DSYS,PSYS。时钟域代表的是一个区域的频率。一个区域的频率数据之间有对应关系。

2.   确定3个时钟域频率有3个因素(通过查看芯片手册系统时钟图可知):

1)时钟源:每一块开发板都有外接晶振,本开发板外接的是24MHZ的晶振。

2)PLL锁相环:S5PV210有四个倍频器,(A,M,E,V)PLL,APLL决定MSYS的频率,(M,E)PLL决定DSYS和PSYS的频率,VPLL决定外设的时钟域。

3)DIV分频器(除法器):分频作用。

4)MUX选择器:决定频率选择通道。


四.编程思路(主要是看芯片手册中sys_clock图):

1.查看芯片手册S5PV210Clock Generation Circuit,确定我们需要提升的系统主频是通过那些时钟源,MUX,PLL连接到达的。

2. 查看芯片手册sys  clock章节寄存器,对应上面的连接,查看需要配置那些寄存器。

APLL_LOCK,APLL_CON0,CLK_SRC0,CLK_DIV0,

3.查看每个寄存器的功能,设置参数,将时钟源24MHZ提升到1GHZ。


五.相关寄存器

CLK_SRC0 :对应芯片手册中sys_clock图中的MUX选择器

APLL_LOCK,MPLL_LOCK:用于调整系统时钟,时钟的转化之间。

APLL_CON0 ,MPLL_CON ::对应芯片手册中sys_clock图中的A,M,E,V)PLL倍频器。

CLK_DIV0::对应芯片手册中sys_clock图中的DIV分频器,也称除法器。


六.主程序和相关函数

int xmain()
{
close_buzzer();

// init_sysclock();
led_flash(10000);

while(1);
return 0;
}

void init_sysclock()
{
//关闭APLL输出
*CLK_SRC0 = (0<<0)|(0<<4)|(0<<8)|(0<<12)|(0<<16)|(0<<20)|(0<<24);


//设置升平时间
*APLL_LOCK = 0xFFFF;
*MPLL_LOCK = 0XFFFF;

//设置(P,M,S)APLL输出频率1GHZ(3,125,1)
*APLL_CON0 = (1<<31)|(125<<16)|(3<<8)|(1<<0);
*MPLL_CON = (1<<31)|(667<<16)|(12<<8)|(1<<0);


//设置DIV
*CLK_DIV0 = (0<<0)|(4<<8)|(1<<12)|(3<<16)|(1<<20)|(4<<24)|(1<<28);

//打开APLL输出
*CLK_SRC0 = (1<<0)|(1<<4)|(1<<8)|(1<<12)|(0<<16)|(0<<20)|(0<<24);
}

 

你可能感兴趣的:(嵌入式裸机开发)