第十四讲:主频和时钟配置
分析一个芯片的时钟,肯定先知道它的时钟来源,一般来源于外部晶振,内部晶振很少使用
时钟来源分析
RTC的时钟并不是其他外设的晶振来源
24MHz 晶振是 I.MX6U 内核和其它外设的时钟源,也是我们重点要分析的
24MHZ晶振是源头,用于不同外设的所需频率不一样,因此24MHZ会经过不同的路径,像STM32的时钟树一样,分频、倍频处理从而得到不同的频率
7 组 PLL
I.MX6U 的外设有很多,不同的外设时钟源不同, NXP 将这些外设的时钟源进行了分组,一共有 7 组,这 7 组时钟源都是从 24MHz 晶振 PLL 而来的,因此也叫做 7 组 PLL。
因此我们根据不同的外设选择不同的PLL即可,并且进行相应的配置
时钟树
每一个芯片的手册中都存在着时钟树,初学时的STM32也存在,时钟树的作用就是配置相应外设不同的时钟频率,因此如果想知道和配置时钟相关知识的话,时钟树的解析步骤是必不可少的,但是注意的是:不能仅仅只看时钟树,还需要看时钟的其他知识,都在手册中有,当你拿了一块芯片使用的时候,你需要把时钟部分基本全部看完,否则你配置时钟的时候,会出现很多问题
下图为时钟树的理解,主干是外部晶振,树干是外设
6ULL时钟树分析
分析方法:选择我们需要配置的外设,然后从后面向前面推即可,目的---源
外设时钟分析
需要初始化的时钟PLLX
分析时钟树可得,大量的外设是挂在PLL1、PLL2及PFD、PLL3及PFD上,因此我们初始化时钟的时候,需要初始化这些时钟,而需要配置的时钟为多少,可以根据时钟树配置,PPL1-996M
PLL2-528,但其实官方的手册中存在推荐的默认范围,自己选择即可其实,频率越大,性能越强,功耗也越大
我们初学的时候,我们自己并没有初始化,是因为启动代码帮我们初始化了
内核时钟设置
PLL1的可设范围为650MHZ-1.3GHZ
上面的/2表示分频,也可以配置为其他分频系数,后面的/2是没有用的。
因此如果我们想配置528MHZ,那么有两种方式,PLL1 = 528 * 2; 2分频
PLL1 = 528MHZ,1分频
寄存器CACRR--可以知道分频系数的选择,它上面标/2,不要以为只能设置为2分频
注意点
更改内核时钟频率,相当于人体换心脏,那我是不是应该在换心脏的时候,有一个备用的机械心脏在运行,不然在换的时候,命就没有了,因此我们需要在更改内核时钟频率的时候,基于芯片一个备用的内核时钟
时钟配置总结
关于一个芯片的时钟配置,手册部分的阅读必不可少,只要你详细看手册的话,就可以成功配置时钟,配置时钟的方式就是配置寄存器的值,因此这里就涉及到了另外一种能力---芯片手册阅读能力。
第15讲:Cortex-A中断
初学STM32的时候,使用的是M3系列的芯片,而对于不同内核的芯片,其中断也会有所不同。
其A系列的中断会更加复杂
Cortex-M 内核有个中断系统的管理机构—NVIC,Cortex-A 内核的中断管理机构叫做 GIC,全称是 general interrupt controller
STM32中断向量表
中断向量偏移
Cortex-A7中断系统简介
可以发现A7只有8个中断向量,而我们常见的中断是归IRQ中断管理,有点像HAL库的回调函数一样,15个EXTI中断都被一个回调函数管理
学STM32的时候,中断向量表ST公司帮我们写好了,但是IMX6ULL的这个A7的中断向量表没有帮我们写好,因此我们需要自己写中断向量表
总结
后面听不懂了,总结太难了