简介:这份硬件测试方案文档面向硬件工程师、测试人员及电子相关专业学生,聚焦整机与单板两类测试场景,帮助读者建立从测试目的、适用范围到判定准则的完整测试框架。资源包内含1个doc文件,约7.95MB,共76页,内容涵盖缩略词解释、引用标准、测试基本原则、技术指标说明、不合格项目分类准则与质量判定准则等基础规范,并进一步展开测试仪器、测试工具与测试环境的配置要求。文档还逐项列出外观及尺寸审查、电路原理图审查(含基准电路、滤波电路)等具体测试项目、测试说明、测试方法与判定标准,读者可据此直接对照搭建测试流程、编写测试用例或完善企业内部的硬件测试规范。目前已有2736人学习下载,适合需要系统梳理整机与单板测试方法、查漏补缺的硬件从业者参考使用。
1. 从一块烧毁的 RS485 口说起:这份 76 页规范到底在解决什么
很多硬件测试新人第一次翻《硬件测试方案-整机和单板.doc》会犯困,因为它不像教程,更像一份带判定准则的检查表。但真正做过电源监控单板的人知道,这份文档里每一条“测试说明”背后都对应过一次现场事故。比如 7.1 节外观审查里那个案例:SM 模块的电源输入口和 RS485 通讯口用了同一种插座,没有防插错设计,测试时把通讯线插到电源口,整条 RS485 总线上的模块端口全烧了。这不是理论风险,是已经发生的批量损坏。
这份规范覆盖的是电源系统及环境监控的监控单板,做的是白盒加极限测试。它把测试分成两条主线:整机层面的系统指标验证,和单板层面的原理图审查、信号测量、电路计算。适用人群很明确——硬件测试工程师、单板设计验证人员、中试转产测试人员。它要解决的核心问题是:把功能缺陷和故障隐患暴露在测试阶段,而不是留给客户现场。关键词里的“原理图审查”“波形测量”“电路计算”就是它的三大抓手,缺一个都做不完整。
2. 测试准备与判定准则:上下电 20 次背后的失效模型
2.1 为什么测试前必须做 40 次上下电
规范 5.5 节写得很直白:单板测试前需要先进行上下电切换 20 次,再快速上下电 20 次,人为以最快速度操作。目的是考察 CPU、SDRAM 和 Flash 是否因掉电时间缓慢引起异常。这个动作不是走形式,它针对的是一个经典失效模式——电源缓慢掉电时,CPU 已经停止工作,但 SDRAM 供电还没完全泄放,处于不确定状态,重新上电后可能锁死或跑飞。
我一般会把这个步骤做成可复现的脚本化流程,用可调稳压电源配合继电器做自动上下电,避免人手速度不一致导致结果不可比。下面是一个用 Python 通过串口控制可编程电源做循环上下电的简化示例:
import serial import time # 可调稳压电源串口,按实际设备修改 psu = serial.Serial('COM3', 9600, timeout=1) def set_voltage(v): # 不同电源协议不同,这里示意 SCPI 风格指令 cmd = f'VOLT {v}\n' psu.write(cmd.encode()) time.sleep(0.05) def power_cycle(cycles, on_v=5.0, off_v=0.0, on_delay=2.0, off_delay=0.3): for i in range(cycles): set_voltage(off_v) # 快速掉电 time.sleep(off_delay) # 掉电保持时间,模拟最快操作 set_voltage(on_v) # 重新上电 time.sleep(on_delay) # 等待单板启动稳定 print(f'cycle {i+1} done') # 先做 20 次常规切换,再做 20 次快速切换 power_cycle(20, off_delay=1.0) power_cycle(20, off_delay=0.1)逻辑说明:off_delay控制掉电保持时间,常规切换给 1 秒让电容充分泄放,快速切换压到 0.1 秒模拟人为最快操作。参数说明:on_v按单板额定输入设置,on_delay要大于单板启动时间,否则还没起来就断电,测不出真实问题。失败时重点看单板是否重启、监控是否异常、有没有器件损坏。
2.2 不合格分类与质量判定怎么落地
规范 5.4 节给了一套可量化的判定准则,直接决定一批单板能不能过。整理成表格更清楚:
| 问题类别 | 判定规则 | 处理方式 |
|---|---|---|
| A 类 | 一项不合格即判系统不合格 | 必须整改后重新提交 |
| B 类 | 一项不合格即判系统不合格 | 必须整改后重新提交 |
| C 类 | 三项以上(不含三项)不合格判不合格 | 累计统计,接近阈值要预警 |
| D 类 | 由总体组和专家组参照技术、市场、生产成本确定 | 不计入测试部评定指标 |
这张表的价值在于它把“严重”和“一般”量化了。实际执行时最容易出问题的是 C 类:单项看起来都不致命,但攒到第三项就翻盘。我一般会在测试记录表里单独开一列统计 C 类计数,每测完一个模块就更新,避免最后汇总时才发现超标。
提示:规范里明确写了“对本规范,如果没有特别说明,不合格的为严重问题”,所以判定时默认从严,不要自行降级。
2.3 测试仪器与环境的硬性门槛
6.1 节列了仪器清单,精度和带宽直接决定测量结果可不可信。数字示波器要求 Tek TDS510A 级别,500MHz、500MS/s;模拟示波器 100MHz 或 20MHz;可调稳压电源要能输出 0~100V、0~10A。这些参数不是随便写的——测电源纹波和压频转换波形时,示波器带宽不够会把高频噪声滤掉,测出来的纹波峰峰值偏小,误判为合格。
测试环境限定在测试实验室,测试工具是 POWERSTAR 后台测试软件和监控系统内、外通信协议测试平台。仪器清单里还要求计算机带网口、串口,系统 WIN98/2K/XP,这是那个年代监控单板的典型配置,现在做兼容测试时要注意串口驱动和协议平台的适配。
3. 原理图审查:从基准源到 RS485 的逐项核对方法
3.1 基准电路与滤波电路的审查要点
7.2.1 节把基准源分成并联型和串联稳压型。并联型靠半导体结的正负温度特性,在特定间隙电压下温度系数最小,常见间隙电压有 2.5V、1.24V、1.225V。规范推荐 2.5V 用 AZ431、HA17431H,1.24V 用 AZ431L、LMV431,1.225V 用 LM4041、TS4041。串联稳压型精度高、温漂低,但制程复杂、价格贵,主要用于高精度场合,推荐 ADR380、MAX6021。
审查时有一条硬性红线:基准只用于电压参考,不允许直接用作电源供电或输出较大电流。我见过有人图省事拿基准源给运放供电,结果负载一变化基准就塌,模拟量采样整体漂移。测试方法就是查原理图,基准输出有没有接到除参考端以外的负载。
滤波电路部分,7.2.2 节推荐 π 形电源滤波器,参数选择有明确范围:
| 位置 | 器件类型 | 推荐参数 | 作用 |
|---|---|---|---|
| 输入侧低频电容 | 电解电容 | 10uF~47uF | 滤除低频噪声 |
| 输入侧高频电容 | 独石/瓷片 | 0.01uF~0.1uF | 滤除高频噪声 |
| 电感 | 共模电感 | 10uH~40uH,标准 10uH | 抑制电流瞬变 |
| 输出侧低频电容 | 电解电容 | 10uF~50uF | 去耦、滤纹波 |
| 输出侧高频电容 | 瓷片 | 0.01uF~0.1uF | 滤高频 |
输入侧电解电容容值不宜过大,否则带电插入时相当于并入大电容,可能把电源电压瞬间拉低,造成同框单板复位。电感太大则上电特性变差,掉电或带电插拔时电感两端产生反电势,影响后级负载。审查时如果发现没有电源滤波器,测试重点就要转向带电插拔性能、电源波动时的工作性能,以及频繁上电冲击。
3.2 通信接口电路的审查清单
7.2.14 到 7.2.16 节覆盖了 RS485/422、RS232、CAN 三种通信电路。审查这类电路时,我一般按下面的顺序逐项过:
- 查保护器件:TVS 管型号、钳位电压是否匹配总线电平,7.4.1 节专门讲 TVS 电路计算。
- 查终端匹配:RS485 长线传输有没有终端电阻,阻值是否与线缆特性阻抗匹配。
- 查隔离:光耦或磁隔离器件的选型,7.3.14 节有光耦电路信号测量方法。
- 查防插错:插座是否有防插错结构,这是 7.1 节案例的直接教训。
- 查共模电感:共模电感铁心截面积不能太小,否则易磁饱和导致滤波效果下降。
以 RS485 为例,审查时可以用下面这段脚本辅助核对原理图网表里的关键节点,把总线 A/B 线、终端电阻、TVS 位置提取出来做一致性检查:
# 从网表文本中提取 RS485 相关网络,辅助人工审查 import re netlist = open('board.net', 'r', encoding='utf-8').read() # 匹配 RS485 相关网络名,实际命名按项目调整 patterns = [r'RS485_A\w*', r'RS485_B\w*', r'485_TERM\w*', r'TVS_485\w*'] for p in patterns: hits = re.findall(p, netlist) print(f'{p}: {sorted(set(hits))}') # 检查终端电阻是否同时挂在 A、B 网络上 a_nets = set(re.findall(r'RS485_A\w*', netlist)) b_nets = set(re.findall(r'RS485_B\w*', netlist)) term = set(re.findall(r'485_TERM\w*', netlist)) if term and not (a_nets & term and b_nets & term): print('警告:终端电阻未同时连接 A/B 网络')逻辑说明:正则匹配网络名,把 RS485 相关节点列出来,再判断终端电阻是否同时挂在 A、B 上。参数说明:网络命名规则按实际项目改,board.net是原理图导出的网表文件。这个方法不能替代人工审查,但能快速定位遗漏。
3.3 CPU 基本电路的分平台审查
7.2.17 节按平台分了四类:MCS51、TI DSP、MPC852、ARM。每类的基本电路审查重点不同。MCS51 重点看晶振电路、复位电路、EA 引脚接法;TI DSP 重点看电源上电顺序、PLL 滤波;MPC852 重点看总线配置、SDRAM 时序;ARM 重点看启动模式引脚、复位和时钟。
审查时最容易漏的是上电顺序。DSP 和部分 ARM 对内核电压和 IO 电压的上电先后有要求,顺序错了可能闩锁。我一般会对照芯片手册的上电时序图,在原理图上标注每路电源的使能信号来源,确认是硬件时序控制还是软件控制。7.3.18 节对应的信号测量部分,就是用示波器抓上电瞬间各路电源的爬升曲线,验证时序是否符合手册要求。
4. 信号测量与电路计算:把波形和公式对上的实操
4.1 关键电路的波形测量方法
7.3 节是整份规范里最实操的部分,覆盖了基准、看门狗、时钟、ID、分压、IIC、有效值、平均值、差分放大、交流频率采样、电池熔丝状态检测、压频转换、光耦固态继电器、光耦、RS485/422、RS232、CAN、CPU 等电路的信号测量。测量方法的核心是:用示波器抓关键节点波形,和设计预期对比。
以看门狗电路为例,7.3.2 节的测量要点是抓喂狗信号的周期和脉宽,确认在 CPU 正常运行时喂狗信号持续存在,CPU 死机时喂狗信号停止,看门狗能正常复位。测量时示波器要设成单次触发,触发条件设在喂狗信号边沿,这样才能抓到异常瞬间。
时钟电路的测量要点是频率精度和占空比。7.3.3 节要求测晶振输出频率,偏差要在规格书允许范围内。我一般会用示波器的频率计功能直接读,同时看峰峰值和上升时间,判断晶振是否起振正常、负载电容是否匹配。
压频转换电路(7.3.12 节)的测量比较特殊,它测的是频率输出与输入电压的线性关系。测量时要扫多个输入电压点,记录对应输出频率,画线性度曲线。下面是一个记录和计算线性度的示例:
# 压频转换电路线性度测量记录 # 输入电压(V) 与 输出频率(Hz) 的对应关系 data = [ (0.0, 0), (1.0, 1002), (2.0, 1998), (3.0, 3005), (4.0, 3990), (5.0, 5008), ] # 用最小二乘法拟合理想直线 n = len(data) sum_x = sum(d[0] for d in data) sum_y = sum(d[1] for d in data) sum_xy = sum(d[0]*d[1] for d in data) sum_xx = sum(d[0]**2 for d in data) k = (n*sum_xy - sum_x*sum_y) / (n*sum_xx - sum_x**2) b = (sum_y - k*sum_x) / n print(f'拟合直线: f = {k:.2f} * V + {b:.2f}') # 计算各点非线性误差 for v, f in data: ideal = k*v + b err = (f - ideal) / ideal * 100 if ideal else 0 print(f'V={v}V, f={f}Hz, 非线性误差={err:.3f}%')逻辑说明:用最小二乘法拟合频率-电压直线,再算每个测量点的非线性误差。参数说明:data里是实测的电压频率对,实际测量点建议不少于 5 个,覆盖量程上下限。判定标准看规格书要求的线性度指标,一般压频转换要求非线性误差在 1% 以内。
4.2 TVS 与光耦电路的参数计算
7.4 节电路计算是很多测试工程师的薄弱环节。7.4.1 节 TVS 电路计算的核心是选对钳位电压和功率。TVS 的钳位电压要高于被保护线路的正常工作电压,低于后级器件的耐压上限。功率要按可能出现的浪涌能量选,不能只看稳态。
7.4.2 和 7.4.3 节讲光耦固态继电器和光耦计算,核心是电流传输比(CTR)和限流电阻的匹配。光耦输入侧限流电阻按下面公式算:
# 光耦输入限流电阻计算 # R = (V_drive - V_f) / I_f # V_drive: 驱动电压 # V_f: 光耦输入正向压降,查手册 # I_f: 期望输入电流,要保证 CTR 足够 # 示例:3.3V 驱动,V_f=1.2V,期望 I_f=10mA python3 -c "V_drive=3.3; V_f=1.2; I_f=0.010; R=(V_drive-V_f)/I_f; print(f'限流电阻 R = {R:.1f} 欧姆')"逻辑说明:按欧姆定律算限流电阻,保证输入电流在 CTR 线性区。参数说明:V_f和 CTR 都要查具体型号手册,不同批次光耦 CTR 有离散性,设计时要留余量。输出侧还要考虑负载电阻和上拉电阻的匹配,确保输出电平能被后级正确识别。
7.4.4 节差分放大电路计算,核心是增益和共模抑制比。增益由反馈电阻和输入电阻比值决定,共模抑制比取决于电阻匹配精度。7.4.5 节单板电路功耗计算,是把各路电源的电流加起来算总功耗,用于选电源和算散热。我一般会实测各路电流,和理论计算对比,偏差大的地方重点查。
4.3 研究性测试与附录模板的使用
7.5 节研究性测试是规范里比较灵活的部分,针对的是没有明确判定标准、需要探索的测试项。做这类测试时,我一般先明确假设,再设计实验,记录所有现象,最后给出结论和建议。不要预设结果,否则容易漏掉异常。
第 8 章附录提供了四个模板:测试方案模板、测试项目手册模板、单板测试 CheckList、整流模块 DSP 硬件测试规范,还有 8.5 节逻辑电平参考。CheckList 是最实用的,把 7.2 和 7.3 的审查项和测量项做成勾选表,每测完一项打勾,避免遗漏。逻辑电平表用于判断信号电平是否匹配,比如 3.3V 器件驱动 5V 器件时,电平是否在对方识别范围内。
5. 把规范变成可复用的自动化测试脚本
规范读完了,真正拉开效率差距的是把重复性测试自动化。整机和单板测试里有大量循环动作:上下电、扫电压点、记录波形、判定合格。这些都可以脚本化。
以电源纹波测量为例,7.2.2 节要求电源纹波小于额定输出的 3%。手动测要反复调电源、读示波器、记数据。用 Python 配合可编程电源和示波器(支持 VISA 接口)可以自动扫点:
import pyvisa import time rm = pyvisa.ResourceManager() psu = rm.open_resource('USB0::0x1234::0x5678::INSTR') # 可编程电源 scope = rm.open_resource('USB0::0x1111::0x2222::INSTR') # 示波器 def measure_ripple(voltages, rated_v=5.0): results = [] for v in voltages: psu.write(f'VOLT {v}') time.sleep(0.5) # 等待电源稳定 # 示波器读峰峰值,通道和量程按实际设置 scope.write('MEAS:VPP? CHAN1') vpp = float(scope.read()) limit = rated_v * 0.03 ok = vpp < limit results.append((v, vpp, ok)) print(f'输入 {v}V, 纹波峰峰值 {vpp*1000:.1f}mV, 限值 {limit*1000:.1f}mV, {"合格" if ok else "不合格"}') return results # 在输入电压范围内扫点 measure_ripple([4.5, 5.0, 5.5])逻辑说明:遍历输入电压点,设置电源输出,等稳定后读示波器峰峰值,和额定输出的 3% 比较。参数说明:rated_v是额定输出电压,voltages覆盖输入范围上下限。失败时重点看是电源本身纹波大,还是单板滤波电路没起作用,可以断开负载再测一次对比。
注意:自动化脚本不能替代人工判断。波形异常、间歇性故障这类问题,还是要靠人看波形、分析时序。脚本负责的是重复劳动和数据记录。
另一个值得自动化的点是通信协议测试。6.2 节提到监控系统内、外通信协议测试平台,RS485、RS232、CAN 的通信测试可以用脚本发帧、收帧、校验。我一般会写一个协议测试脚本,覆盖正常帧、异常帧、边界帧,自动判定响应是否符合协议。这样每次改版都能快速回归,不用手动一条条发。
最后说一个容易被忽略的技巧:把每次测试的原始数据(波形截图、测量值、环境条件)按单板编号和日期归档。规范里强调“以测试数据为准绳”,数据可追溯才能在出问题时复现和分析。我一般用固定目录结构加命名规则,配合脚本自动生成测试报告初稿,人工只做异常项复核。这套流程跑顺之后,单板测试的重复工作量能压掉一大半,人可以把精力放在真正需要判断的地方。
本文还有配套的精品资源,点击获取