1 i.MX6ULL时钟系统
iMX6ULL的系统主频为528MHz,有些型号可以跑到696MHz,但是默认情况下iMX6ULL 的主频为396MHz。我们想要让iMX6ULL运行时候达到最大性能,就需要将主频上调至最大528MHz,或者更大,其它的外设时钟也要设置到NXP官方推荐的值。
更多关于芯片的时钟可以查阅 《IMX6ULL参考手册.pdf》的第10章“Chapter 10 Clock and Power Management”和第18章“Chapter 18 Clock Controller Module (CCM)”,这两章有详细的讲解。
系统时钟
我们打开核心板原理图,搜索“RTC_XTALI”即可看到如图 1.1内容:
这里我们可以看到有两个晶振。32.768KHz的晶振是RTC(实时时钟)的时钟源。24MHz晶振是CPU内核及其他外设的时钟源。
PPL(Phase Locked Loop)时钟源
iMX6ULL系列外设所需要的时钟源,都是由24MHz晶振倍频产生的,一共有7组,如图 1.2所示:
PPL1(ARM_PLL):这个PPL供内核使用,可编程倍频器,最高可达1.3GHz。注意,此频率高于芯片支持的最大频率1.0 GHz。
PPL2(System_PLL或528_PLL):固定22倍频,产生528MHz。这个PPL还分出4路PFD,即PLL2_PFD0~PLL2_PFD3,
528_PLL和PLL2_PFD0~PLL2_PFD3
为各种总线提供时钟。他们不提供精确的或恒定的频率,可以实现动态调频。通常的,528_PLL和PLL2_PFD0~PLL2_PFD3作为系统内部总线,内部逻辑处理单元,DDR接口,NAND/NOR接口模块等的时钟源。
PPL3(USB1_PLL):用于USBPHY(OTG PHY),固定20倍频,同样分出4路PFD,即PLL3_PFD0~PLL3_PFD3,产生了480MHz的VCO频率和24MHz振荡器。主PPL和4路PFD也可作为其他接口时钟输入。
PPL4(Audio PLL):用于音频外设,提供低抖动和高精度音频时钟,频率范围为650MHz~1300MHz,频率分辨率优于1Hz。可以选择1/2/48/16分频。
PPL5(Video PLL):用于标准视频显示外设,提供低抖动和高精度音频时钟,频率范围为650MHz~1300MHz,频率分辨率优于1Hz。该时钟主要用作显示和视频接口的时钟。可以选择1/2/48/16分频。
PPL6(ENET_PLL):固定为20+5/6倍频,产生500MHz,在此基础上产生25/50/100/125MHz网络时钟。
PPL7(USB2_PLL):用于USB2PHY(OTG PHY),固定20倍频,产生了480MHz的VCO频率和24MHz振荡器。
时钟树
如此多的时钟分支都要一一对应不同的外设。我们要参考《IMX6ULL 参考手册.pdf》里的18.3小结“CCM Clock Tree”,来学习如何选择PPL时钟。
时钟树整体分为三个部分:CLOCK SWITCHER、CLOCK ROOT GENERATOR和SYSTEM CLOCKS。其中左边的CLOCK_SWITCHER就是我们上一小节讲解的那7路PLL和8路PFD,右边的SYSTEM CLOCKS就是芯片外设,中间的CLOCK ROOT GENERATOR部分的作用就是选择合适的时钟接入外设接口,负