为什么人们不会只使用微控制器中的最大可用时钟[关闭]

问题描述 投票:0回答:3

这个话题很简单,我承认我在谷歌上找不到太多东西。

最近我开始在STM32上编码,对于一个来自PC相关应用程序的人来说,设置所有时钟都是新的。

我想知道为什么开发人员想要丢弃/避免最大时钟以及在什么条件下?假设微控制器可以工作在168Mhz,我为什么要选择84Mhz?

它主要与功耗有关吗?还有其他原因吗?

为什么STM32团队(以及我猜的微芯片)为在STM32CubeMX上设置一个非常好的用户界面来选择不同的组合而烦恼?如果我可以实现更高的工作频率,为什么我应该直接使用外部振荡器而不是PLL路径?

microcontroller clock stm32
3个回答
5
投票

它主要与功耗有关吗?

是的,主要是。频率越低意味着消耗越低。

人们也可以通过快速完成工作来节省电力,然后让CPU进入睡眠状态,从而提高平均消耗,但电源可能不喜欢可变负载,精确的计时会相当困难。

还有其他原因吗?

是。某些外围设备在特定频率以上不起作用。例如:STM32F429内核可以180 MHz运行,但是没有办法为USB生成48 MHz。为了使用USB,核心必须以168 MHz运行。

如果我可以实现更高的工作频率,为什么我应该直接使用外部振荡器而不是PLL路径?

外部振荡器具有比内部振荡器高得多的精度,并且从待机状态唤醒时PLL可能需要很长时间才能稳定。这取决于应用要求。


5
投票

权力可能是主要原因。但是可能存在使用特定时钟速度的各种其他原因,例如:

EMC辐射。

避免干扰敏感模拟电子设备的谐波。

作为设计的一部分,驱动定时器/时钟/ ADC等需要以非常特定的频率运行(例如,我在120MHz的处理器上工作,但为了获得我们必须运行的精确所需的ADC采样在像119.4MHz这样的东西。

如果您打算在电路板上的其他位置使用时钟,则可能需要使用外部振荡器。您也可能想要使用非常精确的晶体,或者可能不想等待PLL锁定。

有很多原因。但是,如果您正在做一些直接的事情并且不关心功耗或噪声,那么使用PLL以最大速度运行可能是我认为最好的起点。


4
投票

权力是显而易见的,并且在其他答案中已被触及,但不是直接触及。性能。更快的时钟并不意味着更快的代码。除了在闪光灯前面有一个真正的高速缓存之外,ST在闪光灯前还有这个神奇的快照(并禁用它在我考试过的cortex-m4上出现的手臂高速缓存)。但一般来说闪存是你的瓶颈,如果你看到许多其他供应商的部件,有时是ST,你必须在增加系统时钟时不断添加等待状态。所以说在16Mhz没有等待状态,在32,一,48两等等,取决于系统,你在闪光灯的速度限制附近跳舞,使得处理器在等待指令进入时坐在额外的时钟周围即使是在其他人身上也很容易看到,这会直接影响你的表现,你想要在从零到一等待状态的频率上正确,以最大化你可以提供的cpu。

一些设计闪存已经处于cpu /系统时钟的一半速度,其中sram通常跟踪并且可以覆盖整个范围,因此在零等待状态下采用相同的代码并从闪存运行然后从ram运行,在某些数量的MCU上相同的机器代码在闪存上运行速度与在sram上运行一半。有些它是一对一的,然后当你添加一个等待状态时,闪存是半速与ram,依此类推。

外围设备具有与上述相同的问题。您可能必须在外设时钟上使用预分频器,因此现在读取24mhz的gpio引脚可能需要一个80mhz的时钟,可能需要三到四个时钟。

PLL是模拟和抖动的,它们不一定“丢失”任何时钟周期,但是抖动更糟,因为振荡器本身具有抖动和精度以及温度影响的规范。因此内部RC是质量最差的时钟,直接从振荡器旁路PLL是最好的,然后乘以PLL会增加抖动,但会让你走得更快。

回归力量。电视遥控器中的电池可能持续一年左右(红外线,蓝牙电池可能持续数天或数周),它们运行的​​时钟频率最低,可以勉强完成工作并尽可能地保持关闭状态低功率状态。如果他们在醒着时跳到120Mhz并且电池现在持续数周或半年,而不是一年,除了全速运行真的很酷之外没有任何实际好处。这没有多大意义。我们现在非常依赖基于电池的产品,如果手机上的蓝牙模块中的微控制器以其完全额定的pll速度运行,而手机中的wifi模块中的微控制器,以及驱动显示器的那个等等,都会运行在最高速度下,您的手机可能无法在一次充满电的情况下持续一天。跑得更快没有获得任何东西,但失去了一些东西。

对于插入墙壁的爱好和东西,燃烧你想要的任何功率,但是mcu市场中显着的百分比是关于价格和功率,筛选到更高速度的芯片成本更高,速度更低的部件,在某些情况下只是芯片在更高的屏幕上失败,而且成本更低。更小的代码使用更少的闪存你可以购买更小/更便宜的部分,你的时钟可以运行得更慢,因为它需要更少的指令来做同样的事情而不是一个可能草率的程序和/或编程语言中的错误选择,更大的部分,更低的产量增加成本。然后降低时钟尽可能低,以保持紧密编写的代码几乎不能满足时间使用最少的功率理想(以及关闭或不打开你没有使用的外围设备和预先打开的那些甚至更慢)。

对于成本和功耗,您需要最小的二进制时钟,您可以使用最小的二进制文件,这也是紧凑而高效的,因此您几乎不能进行计时。这是你理想的目标。但是,如果您计划进行现场升级,那么您需要为较慢/较大的代码留出一些余量,以便成为升级的一部分,而不会对功耗产生显着影响。

© www.soinside.com 2019 - 2024. All rights reserved.