原理图审查:电源网络检查、时钟树分析、复位电路验证
拿到一块新板子的原理图,我一般会先泡杯茶,然后从头到尾扫三遍。第一遍看架构,第二遍抠细节,第三遍嘛——专门盯着电源、时钟和复位这三个命门。这三个地方出问题,板子十有八九是废的。今天咱们就聊聊这三块怎么审。
一、电源网络检查:别让供电成为短板
电源网络审查,说白了就是看芯片能不能吃饱饭。我见过太多板子,功能设计得花里胡哨,结果一上电就复位、跑着跑着就死机,最后查出来都是电源惹的祸。
1.1 电源轨道的完整性
先数清楚板子上有多少种电压。MCU核心电压、IO电压、模拟电压、PLL电压……每种电压都要有独立的电源轨道。我习惯在原理图上用不同颜色标注不同电压域,一眼就能看出有没有遗漏。
关键检查点:
- 每个电源引脚是否都连接到了正确的电源网络
- 同一电压域的所有器件是否共享同一个电源网络
- 不同电压域之间是否有电平转换电路
举个例子,STM32F4系列有VDD、VDDA、VREF+等多个电源引脚。VDD是1.8V-3.6V,VDDA必须和VDD相同或略高,VREF+则决定了ADC的参考电压。我在项目中遇到过有人把VREF+接到了3.3V,但VDD只给了1.8V,结果ADC读数全飘——嗯,这种低级错误其实挺常见的。
1.2 去耦电容的布局
去耦电容不是随便放几个就完事的。每个电源引脚旁边都要有至少一个0.1μF的陶瓷电容,而且必须紧挨着引脚放置。我见过有人把电容放在PCB的另一面,中间还隔了两层过孔——这基本等于没放。
我的经验:
- 每个电源引脚配一个0.1μF电容,距离不超过2mm
- 每2-3个引脚再配一个10μF钽电容
- 板级入口处放一个100μF电解电容
- 模拟电源和数字电源要分开走线
你想想看,电容的作用是提供瞬态电流。如果走线太长,寄生电感会把高频分量吃掉,芯片该要电流的时候电容给不出来,那不就白搭了?
1.3 电源上电时序
很多MCU对电源上电顺序有严格要求。比如某些FPGA要求核心电压先上,IO电压后上;有些MCU则反过来。我习惯在原理图里标注每个电源轨道的上电时序要求,然后用专门的电源管理芯片或者RC延时电路来实现。
注意:
我曾经在一个项目里忽略了上电时序,结果每次上电都有20%的概率芯片锁死。查了三天才发现是VDD比VDDA先到了,导致内部LDO工作异常。从那以后,我每个电源轨道的时序都会用示波器抓一遍。
二、时钟树分析:心脏跳动的节奏
时钟就是MCU的心脏。时钟不对,整个系统都是乱的。我审时钟树的时候,会重点关注三个东西:时钟源、时钟路径、时钟质量。
2.1 时钟源的选择
MCU通常有多个时钟源:外部晶振、内部RC振荡器、PLL倍频等。外部晶振精度高但成本高,内部RC省成本但精度差。我一般这样选:
| 应用场景 | 推荐时钟源 | 理由 |
|---|---|---|
| 普通IO控制、LED闪烁 | 内部RC(8MHz) | 够用,省两个引脚 |
| UART通信、I2C | 外部晶振(8-16MHz) | 波特率精度要求高 |
| USB、以太网 | 外部晶振(25MHz) | 需要精确的48MHz时钟 |
| 音频、视频 | 外部晶振+外部PLL | 低抖动要求 |
说白了,能用内部RC就用内部RC,省事。但涉及到通信协议,千万别省那个晶振钱。我有个同事为了省两毛钱,用内部RC做UART,结果115200波特率下每10个字节就错一个——这板子最后只能降速到9600用。
2.2 时钟路径的完整性
时钟信号从晶振到MCU引脚,中间不能有任何分支。我见过有人把晶振输出同时接到两个芯片的时钟输入——这会导致信号反射,时钟波形变差。正确的做法是:每个时钟源只驱动一个负载,如果需要多个时钟,用时钟缓冲器。
时钟路径检查清单:
- 晶振到MCU的走线尽量短(<10mm)
- 晶振周围不要走高速信号
- 晶振负载电容要匹配(通常12-22pF)
- 时钟缓冲器要靠近负载放置
2.3 PLL配置的合理性
PLL倍频不是随便设的。每个MCU的PLL都有输入频率范围、倍频系数范围、输出频率上限。我习惯在原理图旁边写清楚PLL的配置参数:
/* 以STM32F407为例 */
/* 外部晶振:8MHz */
/* PLL配置:M=8, N=336, P=2, Q=7 */
/* 系统时钟 = 8 / 8 * 336 / 2 = 168MHz */
/* USB时钟 = 8 / 8 * 336 / 7 = 48MHz */
为什么要写这个?因为有时候硬件工程师改了个晶振频率,忘了通知软件,结果软件按老参数配置PLL,出来的时钟完全不对。我在原理图上标注清楚,软硬件工程师各看各的,不容易出错。
三、复位电路验证:让系统有个干净的起点
复位电路看着简单,其实坑不少。我审复位电路的时候,主要看三点:复位电平、复位时间、复位源。
3.1 复位电平的匹配
MCU的复位引脚通常是低电平有效。但不同MCU的复位阈值电压不一样。有些是0.3V以下才算低电平,有些是0.8V。我习惯查数据手册里的VIH和VIL参数,确保复位信号能正确识别。
我曾经踩过的坑:
有一次我用3.3V的复位芯片去复位一个1.8V的MCU。复位芯片输出高电平是3.3V,但MCU的复位引脚耐压只有2.0V。结果一上电,复位引脚就烧了。嗯,从那以后我每个复位电路都会检查电平匹配。
3.2 复位时间的保证
复位信号必须保持足够长的时间,让MCU内部所有电路都完成初始化。通常要求至少几个毫秒。我一般用RC延时电路或者专门的复位芯片来实现。
RC复位电路的计算公式很简单:
t = R * C * ln(Vdd / Vth)
其中:
t = 复位时间
R = 上拉电阻(通常10kΩ)
C = 电容(通常0.1μF)
Vdd = 电源电压
Vth = 复位阈值电压
举个例子,Vdd=3.3V,Vth=0.8V,R=10kΩ,C=0.1μF:
t = 10k * 0.1μ * ln(3.3/0.8) = 1ms * 1.42 = 1.42ms
这个时间够不够?看数据手册。大部分MCU要求至少1ms,所以这个参数是OK的。但如果你用的是大电容或者慢速上电的电源,可能需要重新算。
3.3 复位源的多样性
好的复位电路应该支持多种复位源:上电复位、手动复位、看门狗复位、欠压复位等。我习惯在原理图上画一个复位树,把所有的复位源都列出来:
- 上电复位:RC电路或复位芯片
- 手动复位:按键+去抖电路
- 看门狗复位:外部看门狗芯片输出
- 欠压复位:电源监控芯片输出
你想想看,如果只有上电复位,系统死机了怎么办?只能断电重启。但如果加了看门狗复位,系统死机后能自动恢复。这就是设计冗余的价值。
我的建议:
对于量产产品,至少要有上电复位和看门狗复位两种。如果产品用在工业环境,再加一个欠压复位。成本增加不多,但可靠性提升一大截。
总结
电源、时钟、复位,这三个网络审查好了,原理图就成功了一半。我每次审图都会在这三个地方花最多时间,因为我知道——硬件调试的噩梦,十有八九都是从这三个地方开始的。
下一章咱们聊聊PCB布局审查,到时候我会分享一些走线技巧和地平面设计的经验。记得带上你的原理图,咱们一起过一遍。