晶振电容如何选择?

在设计电路时,涉及到MCU或者CPU以及其他一些时钟电路时,都会有晶振的存在,这些电路都有一个特性,它们都是依赖时钟信号运行的。晶振就是电路心脏,心脏若不能跳动,电路就无法工作。

当我们设计晶振电路时,会下意识的接上两个电容,之前都是参考电路直接设计,并没有了解这么做的原因,今天就稍微花点时间,简单了解下。原来加的这两个电容是为了构成皮尔斯振荡器,震荡电路有很多种,在单片机设计中,最常用的震荡电路模型就是皮尔斯震荡器。

晶振有一个重要的参数就是负载电容值,还有一个重要的测试指标叫震荡裕量,震荡裕量至少要大于等于1,震荡电路才能正常工作。

一.晶振电容的计算

1.1 晶振的拓扑图(皮尔斯震荡电路)

典型的皮尔斯震荡电路通常由C-MOS反相器(在MCU内部)、反馈电阻(多数也在MCU里)、阻尼电阻、外部负载电容和晶体振荡器组成。

1.2 晶振的计算

晶振X1、外部负载电容CX1、CX2构成震荡电路。由于晶振在谐振时呈感性,因此可以看作是电容三点式震荡电路,电路中的X1、CX1、CX2为串联关系,晶振的负载电容计算方式为:

CL = ((CX1*CX2)/(CX1+CX2)) + CS。

式中:

CL:晶振的负载电容;

CS:晶振引脚到MCU之间的引线杂散电容,取值一般为2~5pF。

一般在选择晶振两端的电容时,CX1和CX2相等,因此公式可以简化为:

CL = ((CX1*CX1)/(CX1+CX1)) + CS;

CL = (CX1 / 2) + CS。

从而可以得到CX1为:

CX1 = 2(CL - CS)。

在实际应用中,精确得到CS值比较困难,我们可以通过测量晶振的频率来判断外部电容选的是否合适。当发现晶振的频率偏高时,可以增大电容,反之减小电容。

二.晶振的测试

2.1 测试方法

当我们选择好外部电容后,为了判断晶振拓扑是否稳定,可以进行裕量测试,裕量测试常用的方法是负阻测试,测试方法是在晶振支路上串联一个电阻,负阻测试拓扑图如下:

如图所示,测量负阻时,在晶振支路串联一个电阻,阻值的大小取晶振等效电阻(晶振数据手册可以查到)的3~5倍(医疗或者汽车级的应用可以取5~10倍测试),当接入这个电阻后,晶振仍可以正常起振,说明这个晶振拓扑是稳定的。

注意:该串联电阻只在测试时加入,在正式批量生产时,不允许该电阻存在,不要将阻尼电阻和负阻搞混。

2.2 增加裕量的方式

  • 减小外部电容:减小外部电容会增加C-MOS反相器输出端的阻抗,从而增加振荡电路的负阻并增加震荡裕量。在减小外部电容后,需要及时检查晶振的震荡频率是否偏离了需要的值。

  • 减小阻尼电阻:在减小阻尼电阻后,需要检查晶振的激励源是否超过了晶振的额定功率,避免因功率过大导致晶振损坏。

  • 选择内阻小的晶振:在选择晶振时,查看晶振的内阻值,内阻越小,裕量越大。

### 如何为晶振电路选择适当的负载电容 #### 负载电容的作用与定义 负载电容是晶振在实际工作中所需的电容值,用于确保晶振能够在其指定的工作条件下正常运行。对于无源晶振而言,负载电容指的是跨接于晶振两端的总的有效外部电容[^2]。 #### 计算方法 为了使晶振能够在其最佳状态下工作,需按照制造商提供的规格书中的指导来设定匹配电容(C1 和 C2),这些电容器会连接到晶振的两个端子上并与之并联形成总的负载电容(CL)[^1]。具体来说: - **公式推导** 总体负载电容可以通过下面给出的关系式来进行估算: \[ CL=\frac{(C_1\times C_2)}{(C_1+C_2)} \] 这里 \(CL\) 表示由两外加电容共同构成的实际负载电容量;\(C_1\) 及 \(C_2\) 则分别代表这两个附加在外围线路里的独立元件所具有的固定数值大小。 - **考虑PCB寄生效应** 实际应用中还需考虑到印刷电路板(PCB)上的走线和其他组件可能带来的额外寄生电容影响,在计算过程中应适当预留一定的裕量以补偿这部分不确定因素的影响。 #### 设计建议 当设计包含有晶体谐振器的应用时,应当仔细查阅器件的数据手册,并严格按照推荐参数配置外围网络,从而保障系统的稳定性及可靠性。如果遇到特殊应用场景,则可以咨询供应商获取更详细的定制化技术支持服务。 ```python def calculate_load_capacitance(c1, c2): """ Calculate the load capacitance based on two external capacitors. Args: c1 (float): Value of first capacitor in pF c2 (float): Value of second capacitor in pF Returns: float: Calculated load capacitance value in pF """ cl = (c1 * c2) / (c1 + c2) return round(cl, 2) # Example usage with typical values for demonstration purposes only print(f"The calculated load capacitance is {calculate_load_capacitance(20, 27)}pF") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值