登录/注册

基于MCU器件如何实现时钟电路的设计?

单片机的应用分为单机应用与多机应用。在一个应用系统中,只使用一片单片机称为单机应用。

更多

基于MCU(微控制器单元)实现时钟电路的设计,是嵌入式系统可靠运行的关键。其主要目标是向MCU提供稳定、精确的时钟信号,驱动内核、外设和总线工作。以下是设计方法和要点:

一、 核心时钟源类型与选择

MCU通常支持多种时钟源:

  1. 内部时钟源:

    • 类型:
      • 内部RC振荡器: MCU片内集成的电阻-电容振荡器。
      • 内部高速振荡器: 某些现代MCU(如STM32)集成了更精确的高速内部RC振荡器。
    • 优点: 无需外部元件,成本低,启动快,功耗相对较低。
    • 缺点: 精度较低(±1%到±10%甚至更高),受温度、电压变化影响大(频率漂移)。
    • 适用场景: 对时钟精度要求不高的应用(LED闪烁、简单控制、时间基准要求不严),作为备用时钟源或看门狗时钟。
  2. 外部时钟源:

    • 类型:
      • 外部晶体振荡器:
        • 无源晶体: 需要MCU内部的反相放大器和外部负载电容组成皮尔斯振荡电路。
        • 有源晶振: 自带振荡电路的完整模块(晶体+IC),直接输出方波或正弦波时钟信号。
      • 陶瓷谐振器: 类似晶体,但使用陶瓷材料,精度介于RC和晶体之间。
      • 外部时钟输入: 来自其他芯片(如专用时钟发生器、CPLD/FPGA)或系统级的时钟信号。
    • 优点:
      • 精度高: 晶体精度通常在±10ppm到±50ppm(百万分之一),有源晶振可达±0.5ppm甚至更高,稳定性好。
      • 稳定性好: 受环境因素(温度、电压)影响相对小。
    • 缺点: 需要外部元件或器件,占用PCB面积,成本增加,启动时间比RC振荡器慢。
    • 适用场景: 需要高精度时钟的应用(UART通信、USB、实时时钟RTC、高速ADC/DAC、精确计时、网络通信)。

二、 典型设计:外部晶体/陶瓷谐振器电路(最常见)

对于无源晶体或陶瓷谐振器(MCU侧称为LOW SPEED CRISTAL / HIGH SPEED CRISTAL):

  1. 基本电路:

    • 在MCU的OSC_INOSC_OUT引脚之间连接晶体/谐振器(XTAL)。
    • OSC_IN引脚到地之间连接一个负载电容 C1
    • OSC_OUT引脚到地之间连接一个负载电容 C2
    • 关键: C1C2的取值至关重要!
    • 公式: C_load ≈ (C1 * C2) / (C1 + C2) + C_stray。其中:
      • C_load (CL) 是晶体规格书中指定的负载电容(典型值如 8pF, 12pF, 18pF, 20pF)。
      • C_stray (Cs) 是PCB走线、引脚和杂散电容的总和(通常估计为 2-10pF,保守取 5pF)。
    • 选择C1C2 通常选择相同数值的电容,使 C1 = C2 ≈ 2 * (C_load - C_stray)。例如,对于 CL=18pF 的晶体,Cs≈5pF,则 C1 ≈ C2 ≈ 2 * (18pF - 5pF) = 26pF。选择最接近的标准值 27pF 或 22pF。
    • 电阻 (可选但推荐):
      • 串联电阻 Rs 串联在OSC_OUT和晶体之间,用于限制驱动电平,避免过驱导致晶振老化或稳定性问题,典型值 0-100Ω(高频或低ESR晶体可能需要)。
      • 并联电阻 Rf (高阻值): 部分MCU内部已有足够大的反馈电阻,外部通常不需要。若手册要求或无内置,可并联一个如1-10MΩ电阻,增强起振。
  2. PCB布局要点:

    • 短且对称: 晶体、负载电容 C1/C2Rs 应尽可能靠近MCU的OSC_INOSC_OUT引脚。
    • 地平面: 确保晶体下方的地层完整。
    • 避免干扰: 远离噪声源(如电源、电机驱动、射频元件)、热源。
    • 避免跨越分割: 时钟信号走线不要跨越电源或接地平面的分割间隙。
    • 隔离: 用GND走线环绕时钟电路,屏蔽噪声。
    • 避免过孔: 尽量减少过孔,必要时保证通孔完整。
    • 单点接地: C1C2的接地点尽量在同一位置或通过短而宽的走线连接到MCU的VSS引脚或附近的PGND。

三、 典型设计:外部有源晶振

  1. 基本电路:

    • 有源晶振的输出端连接到MCU的EXT_CLK_INOSC_INCLK_IN或特定名称的专用时钟输入引脚(具体名称查看MCU手册)。
    • 通常不需要OSC_OUT引脚: 将此引脚悬空或配置为普通IO(如手册允许)。
    • 电源: 有源晶振的VCC引脚连接到干净的电源(建议用铁氧体磁珠与MCU的VCC隔离),GND连接到干净的地。
    • 使能: 如果晶振有OE(输出使能)引脚,通常拉高或拉低使其有效(根据晶振规格),若无需控制可固定电平。
    • 无源端接 (可选): 对于长走线或高频信号,可在晶振输出端到MCU输入端之间串联一个约几十欧的小电阻(如22Ω-100Ω)以匹配阻抗并减少过冲/振铃。
    • 去耦电容: 在晶振的VCC引脚附近放置一个0.1μF的陶瓷去耦电容。
  2. PCB布局要点:

    • 晶振靠近MCU,连接线尽量短直。
    • 保证晶振电源的完整性和低噪声。
    • 遵循高频信号布线原则(避免90°直角,使用45°或圆弧)。
    • 良好的地平面至关重要。

四、 内部时钟源的使用

  1. 配置:
    • 通过MCU内部的时钟配置寄存器选择启动内部高速/低速RC振荡器(HSI/LSI)。
    • 可通过配置寄存器调整频率(部分MCU支持)。
  2. 优点: 无需外部元件,节省成本和空间,启动最快。
  3. 缺点: 精度低(尤其受温漂和电源波动影响)。
  4. 适用: 对精度要求不高的低端应用、初始化代码运行直到外部晶振稳定、作为看门狗时钟源、睡眠模式下保持超低功耗运行。

五、 PLL锁相环

六、 时钟树与多时钟源

七、 RTC实时时钟电路设计

八、 关键设计总结与注意事项

  1. 精度要求: 根据应用选择最合适、最具成本效益的时钟源。
  2. 查阅手册: 必须仔细阅读MCU芯片数据手册和参考手册中的“时钟”或“系统配置”章节,了解具体要求:
    • 支持的时钟源类型和频率范围。
    • 晶体/陶瓷谐振器的驱动电平、模式。
    • 负载电容值要求和建议范围。
    • 启动时间规格。
    • 是否需要外部电阻以及推荐值。
    • PLL配置约束。
    • 时钟树结构图。
    • RTC电路的特定要求。
  3. 负载电容计算: 对于无源晶体,精确选择C1C2是稳定工作的关键。
  4. PCB布局: 高频/精密模拟电路的布局规则(短、直、对称、隔离、地平面)对时钟电路尤其重要。
  5. 电源完整性: 为时钟电路(尤其是有源晶振、VPPA/VCCA/RTC供电)提供清洁、稳定的电源。加强去耦/旁路电容。
  6. 启动顺序: 在系统初始化代码中,通常首先使用内部时钟源让MCU跑起来,然后启动外部晶振,等待其稳定,再切换到外部晶振或启动PLL并切换过去。复位后默认可能是内部时钟。
  7. 监控(可选但推荐):
    • 时钟安全系统(CSS): 部分MCU提供此功能。如果外部时钟失效(如晶体断裂),CSS能检测到并自动切换到内部RC时钟源,同时产生中断告警。
    • 看门狗(WDT): 需要精确定时的看门狗应使用独立时钟源(如内部低速RC LSI),即使主时钟失效也能复位系统。
  8. 验证:
    • 使用示波器(高带宽、低电容探头)测量时钟波形(频率、幅度、稳定度)。
    • 验证在不同温度、电压条件下的稳定性。
    • 测试起振特性。

结论:

MCU时钟电路的设计核心在于根据应用需求选择性价比最优的时钟源类型(内部RC/外部晶体/外部有源晶振),严格按照MCU手册的要求进行元器件选型和参数计算(特别是负载电容),并在PCB布局布线环节遵循高频模拟信号的布局规则以保障信号完整性和稳定性。 深入理解并合理配置MCU内部的时钟树和PLL是充分利用MCU性能和优化功耗的关键。对于RTC等高精度需求,专用外部32.768kHz晶体及其布局设计至关重要。设计完成后务必进行严格的测试验证。

如果系统中使用多片功放芯片TAS5622A,如何实现时钟同步?

如果系统中使用多片功放芯片,如何实现时钟同步(例如TAS5622A)? ST的芯片(如TDA7498)可以支持: Master芯片提供时钟给Slave芯片,从而

2024-10-21 08:06:54

控制系统之间如何实现时钟同步?

控制系统之间如何实现时钟同步? 控制系统之间的时钟同步是确保不同系统之间的时钟保持一致的过程。它在许多实时应用中非常重要,如分布式系统、通信网络

2024-01-16 14:37:23

【CVM01系列】| MCU硬件设计指南:时钟电路

【CVM01系列】| MCU硬件设计指南:时钟电路

2023-09-18 10:56:22

使用单片机实现时钟日历芯片PCF8583应用的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现时钟日历芯片PCF8583应用的C语言程序免费下载。

资料下载 佚名 2021-03-26 11:40:00

使用单片机实现时钟测温和驱动电机的仿真文件免费下载

本文档的主要内容详细介绍的是使用单片机实现时钟测温和驱动电机的仿真文件免费下载。

资料下载 佚名 2021-03-23 15:13:36

使用DSP实现时钟学习资料和源代码免费下载

本文档的主要内容详细介绍的是使用DSP实现时钟学习资料和源代码免费下载

资料下载 佚名 2020-09-29 16:35:32

使用单片机和DS1302实现时钟LCD1602显示的程序和仿真资料免费下载

本文档的主要内容详细介绍的是使用单片机和DS1302实现时钟LCD1602显示的程序和仿真资料免费下载。

资料下载 佚名 2020-06-30 17:35:37

使用单片机的中断及定时器实现时钟功能的程序和资料免费下载

本文档的主要内容详细介绍的是使用单片机的中断及定时器实现时钟功能的程序和资料免费下载。

资料下载 佚名 2019-07-16 17:39:00

如何使用PTP实现时钟同步?

我正在尝试使用 PTP 实现时钟同步,请帮忙。

2023-03-31 09:00:46

Linux是如何去实现时钟中断的

时钟中断是如何产生的?Linux是如何去实现时钟中断的?其过程是怎样的?

2021-11-01 07:05:22

利用定时器中断实现时钟功能

功能要求:1.利用定时器中断实现时钟功能,格式:时-分-秒。2.实现时钟显示和闹钟设置两个功能的切换。3.闹钟设置,且限定字符格式(如时针不得超过24等)。4.

2021-07-21 08:37:54

如何实现时钟晶振的高稳定性运用?

如何实现时钟晶振的高稳定性运用?

2021-06-08 06:52:24

如何采用Altera的CPLD器件实现时间统一系统的B码源设计?

如何采用Altera的CPLD器件实现时间统一系统的B码源设计?

2021-05-07 06:21:24

分享一种实现时钟频率同步的设计方案

本文研究了一种可对频率进行动态调整的时钟,通过对时钟频率的动态修正,实现主从时钟

2021-04-08 06:23:43

基于D触发器实现时钟电路同步设计

时钟使能电路是同步设计的重要基本电路,在很多设计中,虽然内部不同模块的处理速度不同,但是由于这些

2020-08-06 10:35:00

7天热门专题 换一换
相关标签