pll的设置是这样的:
因为可以选择extal作为时钟源,通过设置CLKSEL寄存器中的ECLKS位,当其为1时指定通过pll处理的时钟作
为内部时钟,否则就直接用extal作为内部时钟,即extal不做相应处理就使用.
假设,ECLKS=1,那么extal时钟源被处理过程的参数就要通过PLLCON寄存器来设置,它们的关系是
NF 1
Fout=Fin * ------- * -------
NR NO
在默认情况下PLLCON=0x0000_2F01,又因为extal输入默认为15MHz,即Fin=15MHz,根据PLLCON中相应位的
设置情况,可以计算出Fout=480MHz.
但这个值还不是直接用到内部时钟的,而要经过一个被称为PLL output clock select的逻辑,通过CLKSEL
中的位[3:1]来指定,
在Fout=480MHz的情况下,有下列对应关系:
CLK[3:1] System clock
0 0 0 58.594KHz
0 0 1 24MHz
0 1 0 48MHz
0 1 1 60MHz
1 0 0 80MHz
1 0 1 Reserved
1 1 0 Reserved
1 1 1 Reserved
可以得到一个对应关系:
当CLK=1时,System clock = Fout/20
当CLK=2时,System clock = Fout/10
......
所以,如果想让System clock=40MHz的话,只需将Fout=240MHz,CLK[3:1]=100.
反推回去,就可以得到PLLCON里面的这位的设置.
当然得注意其他寄存器位的设置。