通过前一篇介绍,我们知道在Arm的电路在启动或者掉电的时候,是没有使用PLL,因为在掉电的时候PLL是没法工作的.既然知道这一点,在掉电的时候应该断开PLL,而是用晶振直接给电路提供必要的晶振,例如RTC等.
PLL主要有下面这四个寄存器来控制和读取状态:
0xE01FC080 PLLCON
0xE01FC084 PLLCFG
0xE01FC088 PLLSTAT
0xE01FC08C PLLFEED
其中:
PLLCON寄存器:包涵使能连接PLL的位,也就是控制PLL是否进行连接.这个连接需要在向PLLFEED发送正确的信息(馈送序列)的时候才生效,否则及时将使能位置位,PLL也不会连接到电路中.PLLCON必须在PLL开始连接之前就设置好,否则会造成系统不可预知的错误.
PLLCFG寄存器:这个寄存器是用来设置倍频系数M和分频系数N的.这两个值决定了倍频和分频的频率.
PLLSTAT寄存器:从里面可以读出PLLCON,PLLCFG的值,但必须是在PLLFEED的馈送序列被发送,PLLCON,PLLCFG生效以后才可以读到正确的值.
PLLFEED寄存器:向此寄存器以连续的VPB总线周期写入0xAA,0x55,即馈送序列.在正确的序列被写入PLLFEED之后,PLLCON,PLLCFG才生效,PLL电路才能正确的连接到电路中.
现在让我们来看一下每个参数的定义:
1.Fin:选择的时钟源的频率(也就是选择的晶振的频率)
2.Fcco:PLL最终输出给系统的频率SYSCLK,也称为CCO.
3.N:分频系数
4.M:倍频系数
5.Fref:内部参考时钟,=Fin/N.
那么他们之间有这样的关系:
Fcco=(2*M*Fin)/N
.Fin的频率范围在32K~50M
.Fcco的频率范围在275M~550M
从上面的公式中,我们就可以得出希望的PLLCFG寄存器中的M,N两个数值.
Fcclk实际上也是经过Fcco的分频得到的,也就是CPU的频率.同理USB的频率也与Fcco存在着分频关系.
大家可以参考前一篇中的图来理解这些关系,知道了这些关系就知道了寄存器应该怎样来设置,这对理解编程很有好处.
时钟源从晶振直接到达CCO或者经过了PLL到达CCO之后,还要经过其他的分频器才能到达CPU或者具体的接口电路,理解了这个道理就理解了编程时应该如何考虑选择分频器和设置分频参数,这对底层开发理解非常有好处.
上一篇:快数学Arm(17)--uC/OS-II任务管理块TCB
下一篇:快速学Arm(17)--uC/CS-II中的任务状态及转换关系
推荐阅读最新更新时间:2024-11-17 09:47
设计资源 培训 开发板 精华推荐
- NCV78M15BDTG 15V可调输出稳压器的典型应用
- LT1217 的典型应用 - 低功率 10MHz 电流反馈放大器
- 【征集令】ESP8266开源游戏机
- 【涂鸦智能】温湿度传感器
- 用于 MCU 系统负载感应的 NCP301LSN45T1 4.5V 电压检测器的典型应用
- 使用 NXP Semiconductors 的 MK21DN512VMC5 的参考设计
- LTC1960CG 演示板,通用双电池充电器/选择器板
- 使用 Infineon Technologies AG 的 IRU3038 的参考设计
- OP284ESZ-REEL7 2.5V 基准的典型应用在单 3V 电源上运行
- 典型应用,用于 TS4994 的 DFN10 版本,具有可选待机功能的 1W 差分输入/输出音频功率放大器