在工业控制现场,最让人头疼的不是设计不出来,而是做出来的板子工作不正常。实验室里跑得好好的,到了现场就出问题。
这些年我排查过N多的控制板故障,总结下来,问题几乎都集中在六个方面:**供电、复位、时钟、程序、**I/O 口、外部干扰 。
一、供电
排查优先级:最高。因为供电不正常,后面所有检查都是白费。
1.1 电压对不对?
拿到一块"有问题"的板子,第一件事永远是拿万用表量电压。不只是量电源入口,更要量芯片电源引脚上的电压------因为从电源入口到芯片引脚之间,可能经过保险丝、二极管、电感、磁珠、LDO,任何一个环节出问题,芯片端的电压都可能不对。
电压偏差多少算不正常?
- 3.3V系统:低于3.1V或高于3.5V都要查
- 5V系统:低于4.8V或高于5.2V都要查
- 超过芯片绝对最大额定值:直接换芯片
1.2 VCC和GND短路了没有?
用万用表电阻档(或二极管档)量VCC和GND之间的阻抗。如果阻值接近零或只有几欧姆,说明存在短路。
常见短路原因 :
- 焊接短路(尤其是QFN、BGA封装)
- 电容击穿(钽电容失效模式就是短路)
- PCB内部短路(孔壁断裂、层间短路)
1.3 电源纹波大不大?
电压值对不代表电源"干净"。用示波器交流耦合看电源纹波:
- 一般数字电路:纹波<50mV
- ADC/模拟电路:纹波<10mV
- 射频电路:纹波<5mV
纹波大的常见原因 :去耦电容缺失或容量不够、LDO不稳定、DC-DC布局不合理。
二、复位
排查优先级:仅次于供电。芯片一直在复位状态,等于没上电。
2.1 复位电平对不对?
不同芯片复位极性不同:
- 低电平复位 :PIC、MSP430、STM32(NRST)
- 高电平复位 :51单片机、部分PIC(MCLR高电平复位)
量复位引脚的电压,正常工作时应该处于"非复位状态"。如果低电平复位芯片的复位脚一直是低电平,说明芯片被"卡"在复位状态,永远进不了主程序。
2.2 复位电路选对了吗?
复位电路不是"一个电阻一个电容"那么简单。不同芯片的复位需求不同:
PIC 单片机推荐复位电路 :

- R9(20kΩ)上拉,常态把MCLR拉到高电平
- K1手动复位按键
- D4(1N4148)快速放电二极管------断电时给电容提供快速放电通路
- C5(56pF)小电容,只做噪声滤波,不做上电延时(PIC自带POR上电复位)
- R10(300Ω)串联限流电阻
如果其他品牌单片机直接用这个电路 (C5只有56pF),因为没有足够的上电延时,可能复位不充分,芯片进不了主程序。可考虑在C5旁边并联一个100nF电容。
2.3 复位引脚有没有被意外拉低?
复位引脚到地之间可能因为焊接不良、锡珠、电容击穿等原因被意外拉低。用万用表量复位引脚对地阻抗,正常应该很高(几十kΩ以上)。如果只有几百欧姆,说明有短路。
三、时钟
排查优先级:前两项都正常后,接着查时钟。
3.1 晶振起振了吗?
用示波器(10x探头)量晶振引脚。正常起振时,应该能看到一个漂亮的正弦波。如果看不到波形,或者波形幅度很小、频率不对,说明晶振没起振或起振异常。
晶振不起振的常见原因 :
- 负载电容选错(如晶振标称12pF,实际用了22pF,导致频率偏移或不起振)
- 晶振质量差(廉价晶振频差大、起振困难)
- PCB走线太长(晶振引线过长,寄生电容大)
- 焊接问题(晶振或负载电容虚焊)
3.2 内部振荡器配置对了吗?
很多现代单片机有内部振荡器(HFINTOSC、HSI等),通过配置位选择。如果配置位写错,或者程序里把系统时钟切换到了错误时钟源,芯片程序可能"跑飞"。
排查方法 :检查配置位中的FOSC设置;检查OSCCON寄存器的值;用示波器量CLKOUT引脚(如果有使能)。
3.3 时钟频率对不对?
用频率计或示波器量时钟频率。如果频率偏差超过±5%,可能导致通信波特率不准、定时器计时错误等。
四、程序
排查优先级:硬件都没问题后,重点查程序。
4.1 有没有死循环?
排查方法 :
- 在死循环前后加翻转IO口的代码,用示波器看有没有翻转
- 用仿真器单步运行,看程序停在哪里
- 看门狗是否使能(如果使能,死循环会被复位)
4.2 数组越界/指针跑飞
排查方法 :用调试器查看变量值;检查所有数组访问的边界条件;启用编译器的数组越界检查(部分编译器支持)。
4.3 中断优先级/嵌套配置错误
高优先级中断抢占低优先级中断时,可能引起堆栈溢出或资源冲突。
排查方法 :检查中断优先级配置;检查中断服务程序中是否清除了中断标志;检查中断服务程序中是否做了耗时操作。
五、I/O口
排查优先级:硬件和程序都正常后,查 I/O 口。
5.1 I/O口方向配置对了吗?
最常见的错误 :把输入引脚配置成输出,或者把输出引脚配置成输入。
排查方法 :检查TRIS寄存器;检查ANSEL寄存器(模拟/数字配置);检查ODCON寄存器(开漏输出配置)。
5.2 I/O口驱动能力够吗?
每个I/O口的驱动能力有限(通常20mA左右)。如果直接驱动继电器、LED等负载,可能拉低电压或烧毁IO口。
排查方法 :量IO口输出高电平时的电压,如果低于VDD-0.5V,说明驱动能力不足。需要加驱动器(三极管、MOS管、专用驱动芯片)。
5.3 未使用的I/O口处理好了吗?
浮空的输入引脚会耗电,也可能被干扰误触发。
- 未使用的I/O口应配置为输出低电平 (最省电)或输入并使能内部上拉****/ 下拉
- 绝对不能浮空
六、外部干扰
排查优先级:前面都正常但依然工作不稳定时,重点查干扰。
6.1 电源线上的干扰
变频器、电机、继电器等大功率设备启停时,会在电源线上产生尖峰脉冲。
排查方法 :用示波器看电源线上的波形;在电源入口加隔离变压器、TVS管、共模电感。
6.2 信号线上的干扰
长距离信号线(RS485、传感器线)容易耦合空间电磁场。
排查方法 :用示波器看信号波形;加屏蔽线、共模扼流圈、TVS管;降低波特率。
6.3 地线环流
两个设备共地时,地线上的噪声会通过地线传导。
排查方法 :用示波器看地线上的波形;采用单点接地、隔离方案(光耦、隔离电源)。
七、排查顺序与实战总结
|-----|------|---------|------------------|
| 优先级 | 排查方向 | 工具 | 常见问题 |
| 1 | 供电 | 万用表、示波器 | 电压不对、短路、纹波大 |
| 2 | 复位 | 万用表 | 复位电平不对、复位电路选错 |
| 3 | 时钟 | 示波器、频率计 | 晶振不起振、频率偏差 |
| 4 | 程序 | 仿真器 | 死循环、数组越界、中断配置错误 |
| 5 | I/O口 | 万用表、示波器 | 方向配置错误、驱动能力不足、浮空 |
| 6 | 外部干扰 | 示波器、频谱仪 | 电源干扰、信号干扰、地线环流 |
最后还是总结三点吧:
- 先查供电和复位,再查时钟和程序
- 硬件没问题再看软件,软件没问题再看环境
- 浮空的 I/O 口是隐患,不用的引脚必须固定电平
后续干货不断,咱们一起在单片机的世界里,共同进步。