[C8051F320]C8051F320的内部时钟工…

    问题描述:时钟是MCU的心脏。C8051F320是带有内置时钟的,这个功能非常强大,可以不用外接晶振电路就可以驱动MCU工作。C8051F320的许多功能都是与时钟相关的,像有时序要求的通信:串口,SPI等,以及定时器等。我在电路设计时就考虑用内部时钟的,因此没有设计外部时钟电路,下面也会重点记录内部时钟的使用。
    C8051F320的时钟:可编程内部时钟+外部晶振驱动电路+4倍时钟乘法器(名字有点别扭,暂且这么叫了)。C8051F320的时钟分为系统时钟SYSCLK和USB时钟USBCLK。
    可编程内部时钟:这是系统复位后的默认时钟,通过OSCICL寄存器编程。
[C8051F320]C8051F320的内部时钟工作机制学习
    f_BASE是复位后的内部时钟,C8051F320是12MHz,deta_T是时钟周期。系统时钟可以由内部时钟1分频/2分频/4分频/8分频,具体的分频设置在OSCICN寄存器的IFCN位,系统复位后默认使用的是8分频。
    OSCICL复位值会使内部时钟频率为12MHz(12MHz适用于USB通信),而系统时钟复位后默认是对内部时钟进行8分频,即1.5MHz。可以通过软件修改内部时钟值,但修改后就不适合用于USB通信了。
    内部时钟有挂起模式,当往OSCICN的SUSPEND位写1后内部时钟就挂起了。
    外部时钟驱动电路:可以是外部晶振,陶瓷谐振器,电容或RC网络。CMOS时钟也可以提供时钟输入。使用外部时钟时需要配置对应的端口引脚的功能。
    4倍时钟乘法器:由名字可知,能将12MHz的时钟乘以4倍变成48MHz,这个时钟是用于全速USB通信的。当然对这个乘以4倍的时钟分频后也可以为系统提供时钟的。4倍时钟乘法器的配置要通过CLKMUL寄存器。如果用外部时钟作为4倍时钟乘法器的源,则要保证外部时钟足够稳定。
    系统时钟和USB时钟的选择:配置CLKSEL寄存器的CKLSL[1:0]位决定了使用哪个时钟源作为系统时钟。配置CLKSEL寄存器的USBCLK[2:0]位决定了使用哪个时钟源作为USB时钟(USB0工作于全速模式时需要48MHz时钟,工作于低速模式时需要6MHz时钟)。

你可能感兴趣的:(Arch-51)