一、什么是"最小系统"?
单片机芯片本身只是一块黑色的集成电路。要让它真正跑起来,至少还需要下面几样东西。把它们凑齐、接对,就是最小系统:
🔌
电源与去耦稳定的 3.3 V(或 5 V),加上靠近芯片的去耦电容
🧭
启动配置BOOT 引脚的上下拉,决定从哪里启动程序
🔗
下载接口SWD 或 JTAG,用来烧录和调试程序
💡
指示灯一颗 LED 加限流电阻,用来确认程序在运行
类比:单片机芯片像一台精密的发动机。它要转起来,需要燃料(电源)、点火的节拍器(时钟)、启动开关(复位)、选择启动方式的档位(BOOT),还要有仪表盘(指示灯)和维修接口(下载口)。少了任何一样,发动机都无法正常工作。
本课的目标:学完之后,你应该能看懂一张单片机最小系统原理图,并且知道每个元件为什么存在、取值大概是多少。这是后面所有单片机项目的地基。
二、为什么单片机需要时钟?
第6课讲过,数字电路靠时钟这个"节拍器"统一步调:每一个节拍(周期),内部的触发器就更新一次。单片机执行一条指令,往往需要若干个时钟周期。
指令执行时间 = 所需周期数 / 时钟频率
例:时钟 8 MHz(周期 125 ns),一条指令需要 2 个周期,则执行时间为 250 ns;时钟越快,单位时间能执行的指令越多
2.1 时钟从哪里来?
单片机的时钟主要有三种来源:
| 来源 | 特点 | 精度(参考) | 典型用途 |
| 外部晶振(HSE) | 石英晶体,频率稳定 | ±10 ~ ±50 ppm | 串口通信、精确定时、USB |
| 内部 RC 振荡器(HSI) | 芯片内部自带,不用外接元件 | 约 ±1%(随温度、电压变化) | 对时间不敏感的场合,省元件 |
| 锁相环 PLL | 把较低的基准频率倍频到需要的主频 | 继承基准的精度 | 把 8 MHz 晶振倍频到 72 MHz 等 |
常见配置:很多单片机是"外部 8 MHz 晶振 → PLL 倍频 → 系统主频 72 MHz 或 168 MHz"。晶振决定精度,PLL 决定速度。GD32F4 系列也是类似的结构,具体倍频系数要看参考手册的时钟树。
三、石英晶振:压电的"音叉"
石英晶体(Crystal)是一小片经过切割的石英晶片,两面镀上金属电极。它有一个奇妙的性质:压电效应。
- 给晶片加电压,它会发生机械形变(伸缩)。
- 去掉电压,它靠自身弹性回弹,又会产生电荷。
- 当外加的电信号频率等于晶片的固有频率时,它会产生强烈的共振,形变最大,等效阻抗最小。
类比:石英晶体像一把音叉。你用一个固定的音调去敲它,只有音调和音叉的固有频率完全一致时,它才会嗡嗡地大声响起来。晶振就是靠这个"只对一个频率共振"的特性,为单片机提供极其稳定的节拍。
3.1 石英为什么稳定?
石英晶体的固有频率由晶片的尺寸和切割方向决定,并且对温度、时间变化很不敏感。这使它的频率非常稳,比普通的 RC 振荡器稳定得多。这就是为什么需要精确时间的电路(串口、USB、时钟、射频)几乎都用晶振。
3.2 晶振的电路符号与两个引脚
无源晶振有两个引脚,电路中通常要和单片机内部的振荡电路(反相放大器)一起组成一个振荡回路:
晶振与负载电容 无源晶振典型连接示意
晶振两端各接一颗负载电容 C1、C2,它们与单片机内部的电路配合,让振荡在晶振的固有频率上稳定地维持下去。
四、无源晶振与有源振荡器
时钟器件有两大类,外形和接法完全不同,新手最容易接错。
| 对比项 | 无源晶振(2 脚) | 有源振荡器(4 脚,有源晶振) |
| 内部结构 | 只有石英晶片和电极,不自己起振 | 晶振 + 振荡电路 + 可能的分频,自己输出方波 |
| 引脚 | 2 脚(两端接单片机和负载电容) | 4 脚:电源(VCC)、地(GND)、输出(OUT)、使能(EN 或 NC) |
| 需要外接的元件 | 两颗负载电容,且要匹配单片机的振荡电路 | 只需要一颗电源去耦电容,输出接到单片机的时钟输入脚 |
| 成本与设计难度 | 便宜,但布线和参数要求高,容易起振失败 | 稍贵,但设计简单、不易出问题 |
| 典型应用 | 大量的单片机开发板、低成本设计 | 对可靠性要求高、布线复杂或要求时钟可直接输出的场合 |
常见事故:把有源振荡器当成无源晶振接(两脚焊上去、外加负载电容),时钟输出不正常甚至烧坏振荡器。反过来,把无源晶振接到有源振荡器的位置,也不会工作。接之前必须看清器件型号和引脚定义。
选择口诀:单片机的 OSC 引脚要配负载电容,就用无源晶振;如果手册推荐"外部时钟输入"或者板子空间小、要求稳,就用有源振荡器。
五、晶振的关键参数
| 参数 | 含义 | 怎么选 / 注意什么 |
| 标称频率 |
晶振的固有频率,如 8 MHz、12 MHz、25 MHz |
必须与单片机手册推荐的 HSE 范围一致,并能通过 PLL 得到需要的主频 |
| 频率精度(ppm) |
实际频率与标称值的最大偏差,1 ppm = 百万分之一 |
常见 ±10、±20、±50 ppm。精度越高,串口、USB 等越可靠,但价格也越高 |
| 负载电容 CL |
晶振设计时假定它"看到"的外部电容,单位 pF |
选晶振时要和电路的负载电容匹配,常见 12 pF、18 pF、20 pF 等。匹配不当,频率会偏 |
| 等效串联电阻 ESR |
晶振在谐振时的等效电阻,决定起振难易 |
ESR 越小越容易起振;ESR 太大,可能不起振或起振很慢 |
| 驱动电平 DL |
晶振能承受的最大功耗(μW 或 mW) |
驱动过大,晶片会过应力,频率漂移甚至损坏。通常靠增大或减小负载电容、串联电阻来调节 |
把参数串起来看:频率决定"音调",精度决定"音准",负载电容决定"调音时的工况",ESR 决定"能不能敲响",驱动电平决定"敲得会不会过猛"。买晶振时这五个都要看。
六、负载电容:怎么算?
负载电容 CL 是晶振的一个"设计条件"。电路中实际接的两颗电容 C1、C2,要通过下面的经验公式来确定:
C1 = C2 ≈ 2 × (CL − Cs)
CL 是晶振规格书给出的负载电容,Cs 是电路中引脚和走线的杂散电容(经验值约 2 ~ 5 pF)。两颗电容取相同值,使振荡对称
6.1 算一算
例:某 8 MHz 晶振规格书写 CL = 20 pF,PCB 杂散电容约 4 pF,则 C1 = C2 = 2 × (20 − 4) = 32 pF。取最接近的标准值 33 pF(或 30 pF、33 pF 视规格书而定)。
6.2 动手拨一拨:负载电容计算器
注意:负载电容不是越大越好。电容太大,晶振可能起振变慢甚至不起振;电容太小,频率会偏高,并可能过驱动。最终以单片机厂家推荐值和实际测量(用示波器或频率计看时钟输出)为准。
七、布线:晶振是最"娇气"的器件
晶振的振荡非常微弱,很容易受到周围噪声的干扰。布线不当,轻则频率抖动,重则不起振。
- 尽量短:晶振和单片机之间的走线越短越好,负载电容要紧靠晶振放置。
- 远离噪声源:不要靠近开关电源的电感、DC-DC 的开关节点、继电器、电机。
- 地线包围:在晶振周围画一圈地线(或铺地),把它"包起来",减少外界干扰。注意地线要完整、不要被切断。
- 不穿越其它信号线:晶振下方不要走其它数字或模拟信号线,尤其不要让高速信号从晶振下面穿过。
- 两根线对称:OSC_IN 和 OSC_OUT 两根线尽量等长、对称,减少寄生差异。
- 不要用过长的线接晶振:长线会引入额外的电感和电容,改变负载条件。
类比:晶振像一根细弦,它的声音很微弱。你要在安静的房间里(短线、地包围)弹它,而不是在嘈杂的大街(开关噪声旁边)。把弦拉得太长、弹的地方被别的东西挡住,声音都会变。
调试技巧:如果晶振不起振,先用示波器看 OSC_OUT 或 OSC_IN 两端,有没有正弦或方波。没有,就检查负载电容、晶振型号、布线和单片机的时钟配置。有,但频率不对,就检查负载电容和 PLL 设置。
八、时钟误差会影响什么?
8.1 串口波特率
串口通信靠"数着时间"来区分每一位数据。如果发送方和接收方的时钟都有误差,每一位的时间就会慢慢偏移,数据就读错了。两边误差加起来,超过一定范围,通信就会出错。
波特率误差 ≈ 发送方时钟误差 + 接收方时钟误差
经验上,双方合计误差最好控制在 ±2% 以内(8N1 格式)。误差越大,越容易在一串数据中间"错位"
8.2 不同时钟源的误差对比
| 时钟源 | 典型误差 | 对串口的影响 |
| 外部晶振 8 MHz,±20 ppm | 0.002% | 几乎可以忽略,串口非常可靠 |
| 内部 RC 振荡器,±1% | 1% | 单独使用时可以通信,但两端都用它就需要注意 |
| 内部 RC 振荡器,温度变化大 | 可能超过 ±2% | 高温或低温时通信可能出错,不建议用于串口 |
8.3 动手算一算
最大频率偏差-
时钟误差百分比-
两端合计(双方同源)-
类比:两个人用各自的节拍器打拍子,一个快一点、一个慢一点。开始时还能合上,时间一长就越来越错开。串口就是这样:误差越大,一串数据越容易在后面错开。
十、本节小结
- 最小系统由电源去耦、时钟、复位、启动配置、下载接口和指示灯组成。
- 单片机的时钟来自外部晶振、内部 RC 振荡器,并可通过 PLL 倍频到主频。
- 石英晶体利用压电效应,只在固有频率上强烈共振,因此非常稳定。
- 无源晶振需要配负载电容与单片机内部电路起振;有源振荡器自带振荡电路,直接输出时钟。两者不能混用。
- 负载电容经验公式:C1 = C2 ≈ 2 × (CL − Cs),取最接近的标准值,并以实测为准。
- 晶振布线要短、远离噪声源、地线包围,不穿越其它信号线。
- 时钟误差会导致串口等通信出错,双方合计误差要控制在约 ±2% 以内。
下一页:第8课(下):复位、启动、下载接口与电源去耦,组装最小系统