` 本帖最后由 weidongshan 于 2018-5-15 09:48 编辑
ARM裸机1期加强版视频课程配套WiKi第10课_掌握ARM芯片时钟体系。 文字不能完全替代视频,所以如果你看了这些文章不太懂,建议购买视频进一步学习。 购买地址:http://t.elecfans.com/topic/20.html?elecfans_trackid=xybanner 第001节_S3C2440时钟体系结构
S3C2440是System On Chip(SOC),在芯片上不仅仅有CPU还有一堆外设。至于有哪些外设,可以查看S3C2440芯片手册的第一章PRODUCT OVERVIEW里面有个BLOCK DIAGRAM图:
可以把该图分为上中下三块,上面的是与CPU密切相关的,工作于FCLK;中间的一些对性能要求较高的设备,比如LCD显示、相机等,在AHB BUS,H即为High,高速之意,工作于HCLK;下面的是一些对性能要求不那么高的低速设备,在APB BUS,P即为Peripheral之意,工作在PCLK。
在芯片手册的特性里介绍了S3C2440的工作频率,FCLK最高400MHz,HCLK最高136MHz,PCLK最高68MHz。
那么如何得到以上的三种时钟?
硬件电路上有个12M的晶振,作为时钟源产生12MHz的频率,经过SOC的PLL(锁相环)倍频产生FCLK、HCLK、PCLK。
再具体阅读第7章的时钟,在Clock Generator Block Diagram展示了时钟的产生。
在该图的左上角,晶振和一个外部时钟接在一个选择器上,这个选择器通过OM[3:2]的值决定选择哪个时钟源。然后生成的MPLL(Main PLL)和UPLL(USB PLL),MPLL直接提供给FCLK,FCLK通过HDIVN分频给HCLK,HCLK通过PDIVN分频给PCLK,再传给下面的各个设备:
第002节_编程提高运行时钟
怎么编程控制MPLL、HDIV、PDIV,使FCLK=400MHz,HCLK=100MHz,PLCK=50MHz?
需要设置MPLLCON的FCLK = 400MHz,设置CLKDIVN的HCLK = FCLK/4,PCLK = FCLK/8。
1. 首先来看CLKDIVN寄存器:
从上图可知,想设置HCLK = FCLK/4需要将HDIVN[2:1]设置为10,同时将CAMDIVN[9]设置为0。
查看CAMDIVN[9]的初始值默认就是0,因此只需要设置HDIVN[2:1]为10。
|