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可以取很大欸。锁相环这么厉害啊

  • 相关阅读:
    Spring框架(二)
    Spring概况(一)
    唉 规整规整 进阶目录
    网络编程 -- RPC实现原理 -- 目录
    基础大杂烩 -- 目录
    艺多不压身 -- 目录
    延伸 -- 分类 -- 目录
    Eclipse 快捷键
    全局
    深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎
  • 原文地址:https://www.cnblogs.com/iteou/p/6127558.html
Copyright © 2011-2022 走看看