打印
[复制链接]
392|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pmp|  楼主 | 2024-10-20 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   晶振是数字电路工作的基础,依靠晶振的震荡产生的波,数字电路依次进行着计数和跳变,很多数字接口都依赖着晶振,串口、SPI、IIC、USB、SAI、FSMC、IIS、MIPI、HDMI等等。基本的定时器更是依赖晶振来提供准确的时基,所以PWM、编码器等等定时器衍生的外设也依靠晶振的工作。

        很多时候我们配置串口、SPI、IIC的通讯速度,都需要设置相关的寄存器,通过寄存器对晶振脉冲的计数分频来得到我们想要的速度,例如晶振是8M,而SPI我们只需要1M,那么就可以计数到7的时候,下一次直接清空计数,而每一次的溢出又可以输出一个跳变沿,这样晶振的频率就被放缓了8倍,所以各种通信外设其基本构造都是定时器,都包含计数功能,只不过更为复杂,可以动态切换分频计数的值,自动填装IO或者来自总线的Fifo的数据,自动触发中断等等等等,甚至用DMA来全自动完成这一切过程,DMA也是个极其复杂的包含定时器结构的外设,不用多说,像USB2.0全速必须给定48M时钟、调节SAI和IIS适应audio采样率等等也依赖着计数、分频等结构。究其根本,一切数字电路按照逻辑运行,其本质都在进行着计数,CPU也是如此。
        比如CPU都有一个PC寄存器,即Program count,指示着CPU运行到了哪一条指令,所以一通电的时候,PC都为0,即从第一条指令开始运行,而你学习的RTOS切换任务的时候也会记下来和恢复PC寄存器,不然就不知道上一个任务上次跑到哪了。

        既然,数字电路的基础是晶振,都由晶振而来,那么外设都不可能跑得比晶振快,确实,理论上是这样的,但是实际上CPU跑得都比晶振快,这是因为在外设和晶振之间还有一层间隔,那就是时钟系统,说是系统并不为过,因为它确确实实极其复杂,其中,能使外设跑得比晶振快的东西叫PLL(phase-locked loop:锁相环),也就是倍频器,当然了,除了倍频、分频,PLL还有其他很多作用,那么为什么晶振不直接跑这么快呢?
        首先呢,晶振和CPU一样,肯定越大越厚实越耐用,但是为了减小CPU体积,虽然晶振已经能做的比较小了,但还是不够小,所以还是得外置,所以再通过电路板连接晶振和CPU,着其中的干扰成分就比较大了,所以能内置的就不要扯线出来。其次呢,高频电路的功耗比较大,整个CPU跟着功耗就大了,而很多外设不需要跑那么快,所以那么快的晶振就显得浪费了,并且为了用这么快的晶振,所有外设都要加很多计数分频器,就把CPU做复杂了,浪费电路资源和圆晶面积。

        所以就有了时钟系统(由一个晶振分散到各种外设的树状结构,也就是时钟树),只需要一个不算太快的晶振提供时钟基准,通过PLL来得到更高的频率,按照外设的需求来分配不同的时钟速度,只需要让内核和个别外设跑最高速度,同时还可以动态调整来得到不同的配置来达到性能和低功耗模式的切换,当然了,如果你要求不高,也可以用CPU内部的时钟,只是种种原因做不到外置晶振的性能(精度)。多数单片机还有时钟开关,可以独立控制外设的运行和频率,记住时钟的开关不是所谓的开关,它闭合的是时钟信号。
        今天拆了一个大型8M的有源晶振,来看看它的构造吧。

晶振正面晶振背面内部结构        其中里面的IC是SM5022A3AH,是一颗晶振专用芯片,通电,接通晶振就可以输出脉冲信号了,有源晶振的源就来自这个芯片,省掉了谐振部分的电路。石英晶片通过弹簧托起的薄膜片固定,可以减少震动的损伤,防止摔破停振。
        SM5022引脚图如下。

        如果这里图片不能放大可以去动态看,重新发了高清图片。最后再补充下,即便是模拟芯片,它也是靠数字驱动的,比如ti的很多ADC采集芯片,都依赖晶振提供各种数字接口的驱动和模拟信号的采集,最后留一个问题,为什么ADC常见驱动晶振是4.9152M,51常见驱动晶振是11.0592M,音频DAC常见驱动晶振是22.1184M等等。

使用特权

评论回复
沙发
捉虫天师| | 2024-11-21 21:33 | 只看该作者
不知道用有源竞晶振的场景是什么

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

pmp

182

主题

7497

帖子

7

粉丝