这次我们来了解一下ARM时钟体系结构,
以前我们经常说2440等等这些芯片是SOC,即system on chip
在这些芯片上,不只有CPU,还有各种外设
我们打开2440的芯片手册,查看结构图
我们可以看到里面有CPU,还有各种高速和低速外设。
同时,2440引入了3个时钟,CPU工作于FCLK,AHB工作于HCLK,APB工作于PCLK
我们来查看一下芯片手册:
可以看出,2440的CPU工作于400MHz的,AHB最大工作频率为136MHz,APB最大工作频率为68MHz。
现在我们想知道如何得到这三种时钟(FCLK,HCLK,PCLK)?
我们查看一下原理图,我们可以看到他的时钟源是12M的晶振
问:这12M的晶振如何得到400MHz的频率?
答:通过PLL(锁相环)
从上图可以看出,时钟源有两个,一个是晶振OSC(图左上角),可以通过EXTCLK引脚输入的时钟,然后通过OM [3 :2]选择器,
查看芯片手册知:OM [3 :2] 如果是00的话,这里有两个PLL,都使用晶振(Crystal)作为时钟源.2440有两个PLL,一个是生成时钟给CPU使用,另外一个是生成时钟给USB使用。现在我们打开原理图查看这两个引脚是不是都为0?
由上图可知,两个引脚都被接地了。即知这两个PLL都使用晶振作为时钟源
我们再看一下时钟框架图:
由上图知,
1 ,晶振12MHz通过OM进入到MPLL,使用P [5:0],M [7:0],S [1:0]来控制输出的频率,
2 ,晶振12MHz通过OM进入到UPLL,使用P [5:0],M [7:0],S [1:0]来控制输出的频率,
我们来了解一下,MPLL是主要的锁相环,UPLL即为USBPLL,经过MPLL得到一个时钟,这个时钟会作为FCLK提供给CPU,再经过HDIVN得到HCLK,然后提供给AHB总线,经过PDIVN得到PCLK,然后提供给APB总线。同时,晶振的时钟通过UPLL提供时钟给USB,
问:怎么编程控制MPLL,HDIVN,PDIVN
答:我们查看一下芯片手册:
1,我们一上电,则复位会拉低一段时间,等待电源稳定才输出高电平,2440里面有专用的复位芯片可以帮助我们完成这项工作。
2,
3,当n重设拉高后,PLL会将OM [3:2]这两个引脚的值锁存进来,同时CPU开始运行,这个时候,我们就可以来设置PLL了,
4,设置PLL。设置的时候FCLK停止起振,锁定时间就等于新的时钟了
5,等待PLL工作,此时FCLK等于PLL输出的时钟,CPU运行
大概过程就是这样,现在我们想知道如何设置寄存器?
打开芯片手册,来查看相应寄存器
芯片手册还提供了一个参考表供我们使用和参考: