zoukankan      html  css  js  c++  java
  • 【单片机】【710】振荡器和系统时钟

    710提供7个系统时钟选择

    • FRC振荡器(快速RC,内部标称值为7.37MHz)
    • 带PLL的FRC振荡器
    • 主(XT、HS、EC)振荡器
    • 带PLL的主振荡器
    • 辅助(LP)振荡器
    • LPRC振荡器
    • 带后分频器的FRC振荡器

    关于晶振频率啊,指令周期啥的请参照以前的随笔1937之定时器的那篇

    而710的主振荡器能选以下三种作为其时钟源

    1. XT(晶振):3-10MHz,就是单片机上的那个,一般上面的是8MHz
    2. HS(高速晶振):10-40MHz,估计自己用的那个上面没有,和上面的XT在一个位置
    3. 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可以取很大欸。锁相环这么厉害啊

  • 相关阅读:
    FZU 2098 刻苦的小芳(卡特兰数,动态规划)
    卡特兰数总结
    FZU 1064 教授的测试(卡特兰数,递归)
    HDU 4745 Two Rabbits(区间DP,最长非连续回文子串)
    Java 第十一届 蓝桥杯 省模拟赛 正整数的摆动序列
    Java 第十一届 蓝桥杯 省模拟赛 反倍数
    Java 第十一届 蓝桥杯 省模拟赛 反倍数
    Java 第十一届 蓝桥杯 省模拟赛 反倍数
    Java 第十一届 蓝桥杯 省模拟赛 凯撒密码加密
    Java 第十一届 蓝桥杯 省模拟赛 凯撒密码加密
  • 原文地址:https://www.cnblogs.com/iteou/p/6127558.html
Copyright © 2011-2022 走看看