您的位置:首页 > 运维架构 > Linux

tiny6410裸机实验第3章--------------系统时钟(原理图分析)

2014-02-23 23:47 239 查看
【说明】

             我们的ARM11最高可以跑500到600MHZ,但是其实并不是一启动开发板就这个速度的,相反,我们如果启动开发板后没有进行时钟设置,CPU是不会跑这么快的。这一节,我们就来简单分析6410的时钟体系,下一节写代码区设置时钟,使得CPU跑到500MHZ以上!

 

【原理图分析】

                我们先来一张全局图,有个大概的了解,然后分块分析

              1】全局图

             


           

 

            2】时钟源的选择(全局图的左上角)

                


                   1)OM[0] = 0 ,这个是硬件设置的,我的板子TINY6410晶振频率是12M

                   2)FOUT的计算手册中提供了公式,上边是参考手册的,而FIN显然就是外部晶振12M啦,MDIV,PDIV,SDIV是设置寄存器来控制的,等下会说

                   3)CLK_SRC[0] 如果是0就让FINAPLL通过, 如果是1就让FOUT 通过,显然我们想让FOUT(不然我们设置它干什么)

             

             3】主时钟分频(在上边那张图的右边)

                  


                       1)第一个多路选择器我们选择0,也就是不要分频,直接输出,这个用MISC_CON[19] 位控制

                       2)DIVIDER 可以继续分频,根据ARMCLK的公式就可以得最终输出给CPU的时钟了

                   

 

                    4】MPLL

                       


                        这个和上边一样的,,就不需要多解释了。

                   

                     5】DOUTMPLL(中间部分)

                         


                          1)DOUTAPL的设置中,MPLL_RATIO 是要设置后面的寄存器的

                          2)MISC_CON[19] 控制SYNC667

                     

 

                      6】HCLK与PCLK

                              这2个最终的输出频率是给外设用的

                             


                              1)同样的,HCLKX2_RATIO ,HCLK_RATIO, PCLK_RATIO都要设置寄存器,公式手册上都有,不过还是看着图比较直观

 

 

 

【相关寄存器】

                     1】PLL_LOCKTIME

                          


                             1)我们设置好寄存器之后,PLL不是瞬间就到达我们期望的532MHZ,而在他上升的过程中,我们要让CPU停止工作一段时间,等到PLL稳定后才继续工作,下图很好的解释了这个过程

                            


                           

 

                      2】OTHERS寄存器

                               



                               



                                1)专门挑这几位是因为,当CPU始终和内存时钟不一致的时候,需要设置为异步模式

                                2)设置异步模式首先要清第6,7位,然后循环查看8到11位知道这3位为0,这样就成功设置为异步模式了

                    

                    

                         3】CLK_DIV

                      


                         1)这三个寄存器就是设置上边原理图中标注的各种RATIO, 具体的大家查查手册吧。

                         

 

                          4】APLL_CON, MPLL_CON

                          


                           1)里面的那几位是不是很眼熟啊!没错,就是前面公式里边的,现在好了,公式也知道了,原理也知道了,很好理解了,不过还有一个寄存器需要介绍

                        

                           5】CLK_SRC

                             


                              


                              1)我们先设置分频系数,设置APLL和MPLL的输出频率,最后再来设置时钟源,切换到FOUT

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 嵌入式