但实际出于各种原因,晶振并没有内置到IC芯片中。这究竟是为什么呢?
原因 1 早些年,芯片的生产制作工艺也许还不能够将晶振做进芯片内部,但是现在可以了。这个问题主要还是实用性和成本决定的。
原因 2 芯片和晶振的材料是不同的,芯片 (集成电路) 的材料是硅,而晶体则是石英 (二氧化硅),没法做在一起,但是可以封装在一起,目前已经可以实现了,但是成本就比较高了。
原因 3 晶振一旦封装进芯片内部,频率也固定死了,想再更换频率的话,基本也是不可能的了,而放在外面, 就可以自由的更换晶振来给芯片提供不同的频率。
有人说,芯片内部有 PLL,管它晶振频率是多少,用 PLL 倍频/分频不就可以了,那么这有回到成本的问题上来了,100M 的晶振集成到芯片里, 但我用不了那么高的频率,我只想用 10M 的频率,那我为何要去买你集成了 100M 晶振的芯片呢,又贵又浪费。
我们通常所说的 "片内时钟", 是不是实际上片内根本没有晶振, 是有RC 振荡电路。 以上STM32的时钟框图。 可以看出STM32系统时钟的供给可以有3种方式:
- HSI,高速内部时钟信号STM32单片机内带的时钟 (8M频率), 精度较差。
- HSE,高速外部时钟信号,精度高。来源:HSE外部晶体/陶瓷谐振器(晶振)HSE用户外部时钟
- PLL,低速外部晶体32.768kHz主要提供一个精确的时钟源 一般作为RTC时钟使用。
如果使用内部RC振荡器而不使用外部晶振,请按照如下方法处理:1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。2)对于少于100脚的产品,有2种接法:
- OSC_IN和OSC_OUT分别通过10K电阻接地。此方法可提高EMC性能。
- 分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出'0'。此方法可以减小功耗并(相对上面i)节省2个外部电阻。