在工业控制现场最让人头疼的不是设计不出来而是做出来的板子工作不正常。实验室里跑得好好的到了现场就出问题。这些年我排查过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电源纹波大不大电压值对不代表电源“干净”。用示波器交流耦合看电源纹波一般数字电路纹波50mVADC/模拟电路纹波10mV射频电路纹波5mV纹波大的常见原因去耦电容缺失或容量不够、LDO不稳定、DC-DC布局不合理。二、复位排查优先级仅次于供电。芯片一直在复位状态等于没上电。2.1复位电平对不对不同芯片复位极性不同低电平复位PIC、MSP430、STM32NRST高电平复位51单片机、部分PICMCLR高电平复位量复位引脚的电压正常工作时应该处于“非复位状态”。如果低电平复位芯片的复位脚一直是低电平说明芯片被“卡”在复位状态永远进不了主程序。2.2复位电路选对了吗复位电路不是“一个电阻一个电容”那么简单。不同芯片的复位需求不同PIC单片机推荐复位电路R920kΩ上拉常态把MCLR拉到高电平K1手动复位按键D41N4148快速放电二极管——断电时给电容提供快速放电通路C556pF小电容只做噪声滤波不做上电延时PIC自带POR上电复位R10300Ω串联限流电阻如果其他品牌单片机直接用这个电路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程序仿真器死循环、数组越界、中断配置错误5I/O口万用表、示波器方向配置错误、驱动能力不足、浮空6外部干扰示波器、频谱仪电源干扰、信号干扰、地线环流最后还是总结三点吧先查供电和复位再查时钟和程序硬件没问题再看软件软件没问题再看环境浮空的I/O口是隐患不用的引脚必须固定电平后续干货不断咱们一起在单片机的世界里共同进步。