MCU的时钟

CPU为什么需要时钟

脉冲,类似于人类的心跳。对于一个方形脉冲,脉冲幅值从0上升到最大值的过程叫做上升沿;反之,叫做下降沿。一个脉冲称为CPU的一个时钟信号,或者时钟脉冲。一个脉冲周期就叫CPU时钟周期。

从对时钟的需求角度分类,CPU分为需要时钟:同步CPU (synchronous CPU),和不使用时钟工作的异步CPU (asynchronous CPU)。由于异步CPU设计复杂成本高昂,目前广泛应用的都是同步CPU。

时钟是为了同步CPU中各种门电路的动作。

举一个例子,先有如下逻辑电路:

当A=B=1时,Q=0。当输入信号发生变化时,逻辑元件不会立即对输入变化做出反应,会有一个传播时延(propagationdelay)。当B变化为0时,由于B也作为XOR的直接输入,所以XOR异或门会立即感知一个输入变为0的状态变化,XOR输出变为了1。但是由于传播时延的作用,AND与门的输出会过一小段时间才变为0,XOR的输出会在变为1后隔一小段时间重新变为0。表现为下图就是这样:

上面这种现象叫作空翻(racecondition),即指输出中出现了一个不希望有的脉冲信号。一个简单的办法就是在输出端放置一个边沿触发器:

边沿触发器的作用就是只有当CLK端输入从0变到1时,数据端D的输入才会影响边沿触发器的输出。这样,所有的传播时延都会被边沿触发器所隐藏掉,这时Q端的输出将变得稳定。比如:

其中蓝色的部分代表没有边沿触发器时的Q端输出状态。可以看出,当有了边沿触发器后,Q端的输出变得稳定,基本消除了传播时延。

从上面的例子可以看出CPU为什么要时钟:目前绝大多数的微处理器都是被同步时序电路所驱动,而时序电路由各种逻辑门组成。正如上面说的那样,逻辑门需要一小段时间对输入的变化做出反应(propagation delay)。所以需要时钟周期来容纳传播时延,并且时钟周期应当大到需要容纳所有逻辑门的传播时延。

STM32的时钟源

MCU是一个集成芯片,由非常复杂的数字电路和其它电路组成, 需要稳定的时钟脉冲信号才能保证正常工作。时钟如同人体内部的心脏一样,心脏跳动一下,推动血液流动一下。时钟产生一次脉冲,就推动处理器执行一下指令。 一个脉冲周期就叫CPU时钟周期,一个时钟周期内时钟信号震荡一次。

芯片运行的时钟频率越高,芯片处理的速度越快,但同时功耗也越高。为了功耗和性能兼顾,微处理器一般有多个时钟源,同时还将时钟分频为多个大小,适配不同需求的外设。
STM32F103x8 时钟树 可以看到一共有四个时钟源:
①HSI(High Speed Internal clock signal):
HSI是内部的高速时钟信号,频率8MHz。因为是内部提供,可以降低成本,缺点是精度较差。
②HSE(High Speed External clock signal):
HSE是外部的高速时钟信号,需要外部电路晶振,输入频率范围要求为4-16MHz。因为需要外部电路提供,成本会增加,但精度较好。
③LSE(Low Speed External clock signal):
LSE是外部的低速时钟信号,需要外部电路晶振,输入频率范围要求为32.768KHz。 一般用于RTC实时时钟。
④LSI(Low Speed Internal clock signal):
LSI是内部的低速RC振荡器,频率40KHz。一般用于看门狗、 RTC实时时钟等。

对于上述的STM32F103的系统时钟SYSCLK最高为72MHz,从图中左侧的选择器SW可看到来源有三个,分别是:
①内部高速时钟HSI、②锁相环时钟PLLCLK和③外部高速时钟HSE,而锁相环时钟PLLCLK由内部高速时钟HSI和外部高速时钟HSE,经过分频和PLL锁相环倍频而来。

内部高速时钟HSI可直接经过选择器SW给系统时钟SYSCLK,此时系统时钟SYSCLK为8MHz; 内部高速时钟HSI先2分频,再经过选择器PLLSRC进入锁相环PLLMUL,最大倍频为16倍,得到64MHz的锁相环时钟PLLCLK给系统时钟SYSCLK;
当外部高速时钟HSE(假设外接晶振为8MHz时)直接给选择器SW,则系统时钟SYSCLK为8MHz;

当外部高速时钟HSE(假设外接晶振为8MHz时)直接经过选择器PLLXTPRE给PLLSRC,再经过PLLMUL 9倍频,得到72MHz的PLLCLK给系统时钟SYSCLK。

对于STM32F103系列的MCU, 都需要一个高速时钟和一个低速时钟,而这两个时钟可以选择使用内部时钟源节约成本,也可以选择外部时钟源输入提高精度。 如果使用内部时钟源,则无需设计外部电路,反之,则需要时钟电路。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TC3xx MCU时钟配置是指在TC3xx MCU(微控制器单元)中设置和调整时钟频率和相关参数的过程。 TC3xx MCU使用多个时钟源来控制其内部的各个模块和外设的运行频率。通过配置时钟,可以达到控制和优化MCU的功耗、性能和稳定性的目的。 首先,需要选择适当的时钟源。TC3xx MCU通常提供多种时钟源,包括外部晶振、内部RC振荡器和PLL(锁相环)等。外部晶振通常提供较高的时钟精度,但较高的成本;而内部振荡器则更经济实惠但时钟精度可能较低。PLL可以通过倍频或分频来调整时钟频率,提供更灵活的配置选项。 然后,需要设置时钟分频器和分频系数。通过调整分频器和分频系数,可以将时钟源的频率分频为MCU内部各个模块和外设需要的频率。这样可以避免频率过高导致模块性能不足或频率过低导致延迟问题。 另外,还需要配置时钟树。时钟树是指将各个模块和外设的时钟源连接起来,形成一个完整的时钟系统。通过合理配置时钟树,可以确保各个模块和外设能够按照需要同步和运行,避免时钟冲突和不稳定性。 最后,需要进行时钟验证和优化。通过验证时钟配置是否满足系统需求,并进行必要的优化调整,可以提高系统的可靠性和性能。常见的优化策略包括减少功耗、减小时钟延迟、提高时钟精度等。 总而言之,TC3xx MCU时钟配置是一个复杂而重要的过程,需要根据具体应用需求进行合理设置和调整,以确保MCU系统的稳定运行和最佳性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值