【单片机】【710】振荡器和系统时钟
710提供7个系统时钟选择
- FRC振荡器(快速RC,内部标称值为7.37MHz)
- 带PLL的FRC振荡器
- 主(XT、HS、EC)振荡器
- 带PLL的主振荡器
- 辅助(LP)振荡器
- LPRC振荡器
- 带后分频器的FRC振荡器
关于晶振频率啊,指令周期啥的请参照以前的随笔1937之定时器的那篇
而710的主振荡器能选以下三种作为其时钟源
- XT(晶振):3-10MHz,就是单片机上的那个,一般上面的是8MHz
- HS(高速晶振):10-40MHz,估计自己用的那个上面没有,和上面的XT在一个位置
- EC(外部时钟):外部时钟信号直接加到OSC1(63脚)。
还有一个辅助(LP)振荡器,为低功耗而设计的。接在SOSCI和SOSCO引脚(73和74脚)标称值为32.768KHz。
710的工作频率Fcy = Fosc/2(因为是16位的,8位的是/4);
接下来是为了获得更高速的工作频率Fcy使用了PLL(锁相环),提供给PLL的VCO(压控振荡器)输入必须在0.8-8MHz范围内。虽然自己用的单片机上是8MHz的,可以不用管。但是即使你用16MHz也没问题,在进入VCO之前有一个预分频N1(PLLPRE<4:0>的CLKDIV<4:0>来选择)
这里还有一个倍频因子M,须设定值使产生的VCO输出频率在100MHz到200MHz范围内。然后再经过后分频N2(值为2、4、8),使Fosc在12.5-80MHz范围内,即可产生6.25-40MIPS的指令频率。至于为什么必须要后分频,大概是因为锁相环虽能提到高频状态,但是却不稳定吧
好了,这里有一个重要公式
Fosc = Fin*(M/(N1*N2)) //此处的Fosc只是系统时钟哦,只是为了获得更高的工作频率而选择了PLL模式,只需要8MHz的话就不用设置这么多了。没办法,要有更多的功能就要有更多的功夫。
Fin就是我们选择的晶振的频率
M由PLLDIV<8:0>控制,例PLLDIV = 0x1E;那么M = 32
N1由PLLPRE<4:0>控制,例PLLPRE = 0;那么N1 = 2
N2由PLLPOST<1:0>控制,例PLLPOST = 0;那么N2 = 2
N2取值:
PLLPOST<1:0>
00 = 输出/2
01 = 输出/4(默认)
10 = 保留
11 = 输出/8
N1取值
PLLPRE<4:0>
00000 = 输入/2(默认)
00001 = 输入/3
.
.
.
11111 = 输入/33
M取值
PLLDIV<8:0>
000000000 = 2
000000001 = 3
000000010 = 4
.
.
000110000 = 50(默认)
.
.
111111111 = 513
感觉。。。M可以取很大欸。锁相环这么厉害啊