历史上的今天
今天是:2025年01月20日(星期一)
2021年01月20日 | 快速学Arm(16)--PLL(锁相环2)
2021-01-20 来源:eefocus
通过前一篇介绍,我们知道在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或者具体的接口电路,理解了这个道理就理解了编程时应该如何考虑选择分频器和设置分频参数,这对底层开发理解非常有好处.
史海拾趣
|
我的EK-LM3S811-ND Rev2 无法download 和debug 按照LM3S811 TI Evaluation kit光盘资料中的LM3S811EVALUATION KIT README FIRST安装驱动,安装后和资料里显示是驱动名称不一样. 资料讲的是LM3S811 Virtual COM Port(com6).”而我安装后显示\"stellaris ICDI Debug port(COM15)\",\"\"stellaris IC ...… 查看全部问答> |
|
请教一下大家,我想在沈阳开一个制作电路板的小店,主要是针对零散小批量的客户,利用雕刻机做,不知道有没有市场,需求量怎么样?有了解的朋友能不能给点建议。先谢谢大家了!… 查看全部问答> |
|
求助!!!在下面的程序中,在对EPWM中断的设置中,为什么还要对flash进行操作呢? interrupt void epwm1_timer_isr(void) { // Put the Flash to sleep FlashRegs.FPWR.bit.PWR = FLASH_SLEEP; EPwm1 ...… 查看全部问答> |




