多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

硬件测试从入门到实战:方法、工具与自动化测试全攻略

硬件测试从入门到实战:方法、工具与自动化测试全攻略 简介这是一份硬件测试技术及方法的入门培训PPT源自知名IT培训机构由资深硬件测试工程师李睿讲师编写。内容定位于帮助刚进入测试岗位的工程师快速建立测试全局观也适合研发、质量及管理人员了解硬件测试的价值与流程。全篇围绕测试理念、测试前准备、测试种类与操作、测试级别、可靠性测试、测试问题解决与效果评估展开并对照PCI、PCIX、USB、LAN、DDR、DDRII、PCIE、AUDIO等通信技术标准最后落足于测试规范制定和测试人员培养结构非常清晰。尤其在正规检视、FMEA故障模式分析、零缺陷目标、产品可靠性设计等环节配有实践指导可作为团队新人培训或自学充电的基础材料。压缩包共1个PPT文件约793KB内容密度高目前已有3729人学习下载无论用于系统梳理知识还是借鉴规范测试流程都很有参考价值。1. 硬件测试不是“点点点”是一套从需求到报告的工程闭环很多刚转岗或应届入职的测试工程师第一天拿到被测板卡时第一反应是“拿万用表量量电压、用示波器看看波形”然后写一份“现象正常”的测试记录就算交差。这其实是把硬件测试当成了操作仪器而不是当作一个工程过程来理解。硬件测试真正的难度在于你要证明“这个硬件在给定的规格范围内、在可接受的风险水平下能完成设计赋予它的功能”。证明的过程涉及测试需求拆解、环境搭建、测量方法选型、数据采集与判定、问题定位与回归任何一个环节缺失测试结论都可能站不住脚。这篇内容面向准备入行或刚入行硬测岗位的工程师也适合做嵌入式开发但被要求“顺带测一下硬件”的人帮你把硬件测试的基本盘搭起来从怎么测到怎么判再到怎么把测试做成可复现、可追溯的工程产物。话题锁在“硬件测试技术及方法”下面讲的内容都以这个为核心展开不跑偏到软件开发测试。2. 先把硬件测试的坐标系立住测试分层、需求拆解与可判定的判据2.1 硬件测试在研发流程中的位置不是最后才出现的环节硬件测试不是一个独立的“质检关卡”而是贯穿在产品定义、原理图设计、PCB Layout、试产、量产、售后分析的整个生命周期里。常见做法是把硬件测试分成三个层次每个层次解决的问题不同方法与工具也不同。第一层是“验证测试”也叫设计验证测试DVT主要回答“设计是否实现了规格”。这一层通常在硬件样品出来之后、进入试产之前执行测试对象是完整的单板或整机用示波器、万用表、频谱仪、电子负载等设备对电源、时钟、接口、信号质量做全面测量。第二层是“确认测试”侧重点从“能不能工作”转向“在边界和异常条件下是否还能正常工作”包括温漂、电压波动、静电放电、传导骚扰等。第三层是“生产测试”面向量产主要关注良率和效率常用ICT在线测试、FCT功能测试和自动化测试设备测试项往往被裁到最少但最能暴露组装和工艺问题。新入行的测试工程师很容易把第一层和第二层混在一起做结果就是测了很多项但很多测量结果没有明确的判定依据最后只能写“波形看起来还行”。避免这个问题的关键是测试需求来自规格表SPEC而不是来自“别人以前这么测过”。拿到一块板子第一件事是找硬件设计文档和关键器件的数据手册把供电电压范围、时序要求、接口电平标准、功耗预算等参数摘出来形成一份测试需求清单再根据清单去设计测试方法与判定阈值。2.2 测试判据怎么写限度、条件与容差三位一体一条合格的测试判据至少要包含三个要素被测参数、测试条件、合格限度。以电源测试为例“输出电压3.3V”不是判据“在输入电压12V±5%、负载电流0.5A2A、室温25℃条件下输出电压保持在3.3V±2%范围内”才是判据。缺了测试条件测量结果无法复现缺了容差范围任何微小波动都可以被判定为“异常”或者反过来被“差不多就行”掩盖掉。实际执行时我一般先把判据做成一张参数表每条判据对应一个测量步骤。表格的列至少包括编号、测试项、测试条件、设备与探头设置、测量点、下限值、上限值、备注。这张表既是测试计划的一部分也是后续写测试报告的骨架。注意上限值和下限值不一定来自器件数据手册很多系统级参数比如上电时序、复位延时需要由设计工程师给出系统级要求因为芯片数据手册给的范围往往比系统可接受的范围宽得多直接拿手册范围当判据测出来的板子可能是“芯片不坏但系统不稳定”。2.3 可追溯性你写的每一笔数据都要能回答“怎么来的”工程级测试报告和一个学生的实验报告之间最大的区别就是可追溯性。任何一个测量结果理论上都要能回溯到哪台设备、哪个探头、什么设置、哪个文件、什么时间、谁测的。这不仅仅是质量体系的要求也是排障时的救命线索。建一个基础的测试记录清单把每台测试仪器的资产编号、校准有效期、本次测试使用的通道、探头衰减比、耦合方式、带宽限制、采样率以及测量文件存放路径都记录下来。用数字示波器做测量时不要把屏幕截图当作唯一数据要把波形原始数据CSV或二进制一并导出来方便后续做FFT、抖动分析或重新测量。用万用表和电子负载的人工记录方式至少要在记录表上写清型号和档位不要只写一个读数。3. 核心测试项怎么测电源完整性、时钟与复位、常用总线信号一步步把仪器设置做对3.1 电源完整性测试不只是量电压还要看纹波、噪声与上电时序电源测试是硬件测试的“第一个战场”因为电源问题会以极其隐蔽的方式表现为系统不稳定随机死机、接口偶尔不通、ADC采集值跳变。常见的测量项包括空载/满载电压精度、纹波与噪声、上电时序、掉电时序、负载瞬态响应。其中最容易测不准的是纹波和噪声问题出在探头和测量设置上。测量纹波和噪声时要做到以下四点。第一必须使用带宽限制通常设到20MHz否则会把空间耦合的开关噪声全部采进来测出来的纹波根本反映不出真实的电源性能。第二探头要使用接地弹簧而不是长接地线长接地线会形成一个环形天线拾取高频干扰导致测量结果严重偏大。第三示波器采样率不要设太高建议1GS/s即可太高会把单次尖峰噪声放大到没有工程意义。第四要测量两个位置电源模块输出端的陶瓷电容两端以及负载端比如FPGA的电源引脚附近的测试点这两个位置的阻抗不同纹波数值会有明显差异。上电时序的测试则用多通道示波器同时测量多个电源轨触发源选最晚上电的那一路观察各路电压从10%到90%或按照设计定义的阈值的先后顺序是否满足设计要求。需要注意有些电源管理芯片配置的是“使能信号顺序”而不是实际的电压建立顺序测量时要同时抓EN引脚和输出电压才能判断是芯片配置问题还是外部延时电路问题。3.1.1 用示波器测量纹波的一个标准操作方法先把探头衰减比设为1:1通常需要无源探头切换到1X档示波器通道设置对应衰减比打开20MHz带宽限制垂直刻度调到10mV/div左右不同电压等级会调整耦合方式为直流时基设为2µs/div到10µs/div。确保示波器探头的地线用最短的接地弹簧连接到测试点附近的地平面不要用鳄鱼夹线。测量至少1万个采样点以上的数据读取峰峰值作为纹波噪声值。提示很多新工程师会忘记探头本身有噪声一个普通的无源探头在1X档下底噪可以达到2mV3mV对于目标纹波是5mV的电源轨来说这已经占了相当大的比例。有条件的话用同轴电缆直接焊接到测试点而不是探头去点测底噪更小。3.2 时钟与复位信号测试从“有没有”到“好不好”时钟信号测试分为两个层次第一个层次是确认时钟是否存在、频率是否正确、幅度是否达到接收端的电平要求第二个层次是测量时钟的周期抖动、相位噪声和上升/下降时间判断时钟质量是否满足芯片对参考时钟的要求。测量频率时优先用频率计而非示波器因为频率计的测频精度远远高于示波器的“频率”读数。示波器的频率测量是基于波形触发点的周期计算受采样率和触发抖动影响误差通常在10^-4量级而高精度频率计基于计数原理精度可以做到10^-8以上。测时钟幅度和上升时间时才使用示波器而且要用带宽至少是被测时钟频率5倍的示波器。比如100MHz时钟500MHz带宽示波器是底线建议直接用1GHz带宽。复位信号的测试容易被忽略但非常容易踩坑复位释放时如果存在毛刺可能引起芯片未完全复位就开始工作的问题。测量方法是把示波器设置为“毛刺触发”模式触发源为复位信号触发电平设置为复位信号阈值比如1.4V毛刺宽度设置到100ns以下持续观察一段时间。如果捕捉到毛刺需要进一步确定毛刺来源通常是复位芯片的输出负载电容过小、复位芯片本身驱动能力不够或者PCB走线受到临近信号串扰。3.3 常用总线信号的测量示波器该用几通道怎么触发UART、I2C、SPI这些低速总线的测试核心不是“能不能抓到波形”而是信号质量和时序关系。I2C的规范定义了上升沿和下降沿的时间限制、建立保持时间这些参数必须用示波器测量并对照规范判定。测量时把示波器采样率设到最大时基设为反映一个完整通信帧的长度用“单次触发”抓取总线活动。I2C和SPI测量有个操作细节如果把触发条件设置为下降沿触发SCL和SDA两条线上任何一条有下降沿都会触发你会抓到很多“废话”波形。正确的方式是用引脚组合触发MISO、MOSI、SCLK、CS配置为逻辑组合设置CS有效、时钟沿到来时采集数据线上的数据。很多入门级示波器不支持引脚组合触发退而求其次的方法是用示波器的“解码触发”功能按协议帧的起始条件触发。其实对总线信号测试来说逻辑分析仪比示波器更高效。示波器胜在模拟信号细节逻辑分析仪胜在多通道与协议解码。做UART或SPI通信协议调试时我通常先上逻辑分析仪看数据内容是否正确再针对有问题的信号上示波器看信号质量。3.4 用表格沉淀一套标准测量配置避免每次项目都重新摸索下面是一套我自己常用的硬件测试测量配置参考表适合初学者直接套用再根据被测信号特点做调整。表格的“判定依据”一列提醒你不要只看波形“像不像”要找到明确的规范数值。测试项推荐设备探头/连接方式示波器关键设置判定依据电源纹波/噪声示波器带宽≥100MHz1X探头接地弹簧带宽限制20MHz交流耦合峰峰值测量电源模块数据手册或系统设计指标时钟频率频率计高阻探头1MΩ输入闸门时间1s平均次数≥10器件数据手册的频率范围时钟上升沿示波器带宽≥5倍信号频率低电容探头采样率最大打开测量项“上升时间”接收端芯片要求的最大/最小值上电时序示波器≥4通道多个同型号探头触发源为最后上电的电源轨触发沿为上升沿系统设计规格中的时序要求I2C信号质量示波器≥200MHz无源探头接地尽量短打开总线解码设置I2C参数I2C规范中上升/下降时间与建立保持时间复位毛刺示波器无源探头毛刺触发脉宽100ns复位芯片数据手册与芯片复位要求信号测量这件事新手最常见的问题是“抓到波形就收工”不记录测量条件、不保存波形数据、不对比规范数值。养成“每张波形图都标注设备设置与测试条件”的习惯后续写测试报告能省一半时间。4. 让硬件测试自动化用Python和仪器程控把重复劳动交给机器4.1 为什么硬件测试需要自动化人测的稳定性跟不上项目节奏当测试项超过20项、测试板数量超过3块、需要反复更改测试条件时手动测试的时间成本和出错概率都会急剧上升。比如一个DCDC电源模块的负载调整率测试需要设置不同负载电流、记录对应输出电压如果是手动操作一遍下来需要十几分钟而且很容易记错数据。把这些操作交给仪器程控几百个数据点在几十秒内完成采集并且会自动规范命名保存。硬件测试自动化的常见结构是PC作为控制端通过GPIB/LAN/USB接口连接可编程电源、电子负载、示波器等设备测试软件按预设流程控制设备、读取数据、判定结果最后生成报告。对于入门者来说最容易上手的是用Python配合PyVISA库实现因为PyVISA已经把SCIP命令的底层逻辑封装好了你只需要关心“让仪器做什么”而不是“怎么跟仪器通信”。4.2 PyVISA入门先确认设备能通信再写测试流程在写任何业务逻辑之前先确认PC能发现仪器。用下面的代码列出所有通过VISA可访问的设备import pyvisa rm pyvisa.ResourceManager() resources rm.list_resources() print(resources) # 输出示例 # (USB0::0x2A8D::0x5101::MY58201458::INSTR, # TCPIP0::192.168.1.10::INSTR)如果这个列表为空先检查仪器连接方式和驱动USB连接通常需要安装厂家提供的VISA驱动比如Keysight IO Libraries或NI-VISALAN连接确认PC与仪器在同一网段可以用ping命令测试连通性。不要跳过这一步因为后面所有程序跑不通的原因80%归结到这里。4.3 一个完整的自动化测试用例电子负载做电源负载调整率测试假设被测电源模块输出5V需要在0.5A到3A范围内调整负载电流测量不同负载点下的输出电压。用程控电源给模块供电用电子负载提供可变负载用万用表测输出电压。代码如下import pyvisa import time rm pyvisa.ResourceManager() # 假设电子负载地址为USB0::0x2A8D::0x5101::MY58201458::INSTR load rm.open_resource(USB0::0x2A8D::0x5101::MY58201458::INSTR) dmm rm.open_resource(USB0::0x2A8D::0x5101::MY58201458::INSTR)这段代码在定义设备对象但是有一个细节要注意电子负载和万用表需要不同的资源地址我上面示意地用了同一个字符串实际使用时要分别替换成两个设备的真实地址。资源地址可以通过list_resources()的输出获取也可以通过厂家的IO程序查看。然后把测试流程写成函数def test_load_regulation(load, dmm, current_points[0.5, 1, 2, 3], voltage_limit5.5): results [] load.write(:MODE:CURR) # 进入恒流模式 for i in current_points: load.write(f:CURR {i}) # 设置输出电流 time.sleep(2) # 等待电源稳定 v float(dmm.query(:MEAS:VOLT:DC?)) # 读取电压 results.append((i, v)) if v voltage_limit: print(fWarning: output voltage {v:.3f}V fat {i}A exceeds limit) # 恢复负载为0A load.write(:CURR 0) return results data test_load_regulation(load, dmm) for current, voltage in data: print(fCurrent: {current}A, Voltage: {voltage:.4f}V)这段程序做了三件事把电子负载切换到恒流模式、遍历电流设定点依次测量电压、在每次测量后判断是否超过电压限制。注意time.sleep(2)这个参数的含义——它表示等待电源稳定后读取数据。不要把这个时间设得太短比如0.1s因为电源模块建立到最终输出电压需要一定时间太早读取会得到过渡状态的值。实际使用时需要根据被测模块的环路响应特性调整通常电源模块建议500ms到2s。那如果测试中发现某个点超过阈值自动化程序应该“停下报警”还是“记录继续”我一般选择前者自动化测试的目的不是“跑完所有点”而是“尽早发现问题”。在循环里加入一个判断标志超限时停止后续测试并输出异常点信息。4.4 自动化测试的数据落盘与报告生成测试数据只有被组织好、保存下来才有工程价值。用csv模块把结果写入带时间戳的文件同时生成一个简单的Markdown或HTML报告。import csv from datetime import datetime filename fload_regulation_{datetime.now().strftime(%Y%m%d_%H%M%S)}.csv with open(filename, w, newline) as f: writer csv.writer(f) writer.writerow([Current_A, Voltage_V]) for current, voltage in data: writer.writerow([current, f{voltage:.4f}]) print(fData saved to {filename})文件命名加了时间戳避免覆盖旧数据。这是自动化测试中一个重要习惯让系统自动命名不要用“test1.csv”这种人工命名方式否则最终文件夹里一定是一堆无法区分版本的test1。对于更复杂的测试建议把测试条件、设备型号、校准日期都写进一个配置JSON文件让测试程序读取配置而非修改代码来适应不同项目。4.5 学习仪器程控的一个练习路径第一步从最简单的“读取万用表读数”开始不要直接挑战多设备同步第二步学会用文档查自己手头仪器的SCPI命令大多数仪器在线帮助里就有命令参考第三步用程控电源配合万用表做一个“输出电压校准”的小程序第四步再把电子负载和示波器加进来。不要一开始就指望写完一套完整的自动化测试系统硬件调试领域的自动化是逐步累积的每写一个函数就要考虑“这个函数能不能被下一个项目复用”。5. 测试过程中的硬骨头信号完整性测试、静电放电与电磁兼容初体验5.1 信号完整性测试不是高速设计工程师才需要碰的领域信号完整性三个容易混淆的方向阻抗匹配、反射、串扰。在低速电路里线长远小于信号上升沿对应的空间长度时这些效应可以忽略但当时钟频率超过50MHz或者上升沿小于2ns时传输线效应就开始影响信号质量了。做信号完整性测试时最常用的工具是示波器和眼图分析。眼图把多次采样的信号叠加在一起反映信号的总体质量眼图张开越大误码率越低。测试时要把示波器设置为“眼图模式”触发条件设为“时钟恢复”把波形数据的单位间隔UI与电压幅度叠出来。一个干净的眼图会有一个清晰的菱形开口如果开口看起来“毛茸茸”的说明信号噪声大或抖动明显。注意眼图模式在常规示波器上可能没有需要示波器带相应的软件选项或者使用专门的高速示波器。如果单位间隔内出现多个电平穿越这就是反射造成的振铃。反射的本质是阻抗不连续常见位置是连接器、过孔、走线换层点和末端负载。定位反射点的一个笨办法是逐段隔离断开末端负载用端接匹配看振铃是否消失如果消失则是末端反射否则检查中间的过孔。5.2 静电放电测试不是“打一下看死不死机”的随机操作静电放电ESD测试有严格的试验标准和测试方法但很多初学者只是在设备外壳上随便打几个位置然后看现象。ESD测试的标准流程要比这复杂需要确定放电模型人体模型HBM、机器模型MM、充电器件模型CDM对应不同的模拟场景、确定放电电压和极性、在规定的试验点上进行放电、每种条件至少完成要求次数的放电。对入门者来说最需要理解的执行细节是“接触放电”和“空气放电”的区别。接触放电是把放电枪的尖端直接接触被测设备的金属表面空气放电则是放电枪靠近被测设备但尚未接触时发生放电。空气放电的波形更不容易保证一致性所以标准规范中能用接触放电的位置尽量用接触放电接触不到的位置才用空气放电。测试时被测设备要处于正常工作状态并持续监控其功能是否异常判定等级分成从“没有任何异常”到“设备损坏且不可恢复”的不同类别。新入行的测试工程师在做ESD测试时最容易犯的错误是测试前没有记录被测设备的正常工作状态基线导致测试中无法判断“设备是否仍然正常工作”。建议在测试前用截图、串口日志或LED状态表记录一份基线再逐项施加静电。5.3 电磁兼容测试的入门认知测试是“花钱排排队”电磁兼容EMC测试包含两个方向EMS电磁抗扰度和EMI电磁骚扰。EMC测试通常在屏蔽室进行算是硬件测试中要求环境条件比较严格的测试项目需要专业的测试场地和接收机等设备。入门阶段建议先把频谱仪的操作和常用天线类型搞清楚因为EMS测试中的辐射抗扰度测试你需要知道“法向入射”和“切向入射”对应天线的不同摆放方式。在EMC测试中数据闭环不止是“超标了整改”还要记录“什么条件下超标、频点是多少、使用什么天线和极化方向”。整改动作比如增加磁珠、调整接地要在报告中注明并做二次测试确认整改有效。有一个EMC的细节值得留意在一些测试频点被测设备的线缆摆放位置会影响结果造成复测数据不一致所以记录线缆走向和长度也是EMC测试报告的一部分。6. 用差分探头和电流探头把测量范围扩一倍示波器的测量能力很大程度上取决于探头而很多入门者只用手头的那根无源探头“一探到底”。无源探头适合看电压信号但在两种常见场景里无能为力一是测量浮地信号二是测量直流或交流电流。补上这两块能把你的测量范围从一个窄带你拉到整个电源域和功率域。浮地测量是电源测试中的高频需求比如测量半桥驱动电路的高边MOSFET的栅源电压。如果用普通无源探头去点测浮地信号探头的地线夹会被钳到被测的高边参考电位上导致示波器的输入地电位被拉偏轻则测量值错误重则烧毁示波器通道。正确工具是差分探头它内部用差分放大器把两路输入的差值提取出来示波器与测量电路之间只有隔离没有电气连接。选择差分探头的关键参数是最大共模电压和带宽共模电压要大于被测电路的最大电压差带宽建议至少为被测信号最高频率的3倍。电流测量的标准工具是电流探头它利用霍尔效应和线圈感应原理通过夹住导线来测量电流。与“串联采样电阻再测电压”的方法相比电流探头不需要断开电路对被测电路的扰动更小。使用电流探头时要留意频率范围上限普通电流探头在直流到几十千赫兹范围内表现良好但测量高频窄脉冲电流时探头的高频衰减会造成幅度低估。测量前用探头的“消磁”功能或调零旋钮把基线调零测量时尽量让导线从探头钳口中心穿过因为中心位置的磁场分布最均匀测量精度最高。有一个使用细节电流探头测量时不要同时夹两根方向相反的导线比如一进一出否则磁场相互抵消测量结果会接近零电流无法反映实际电流。验证差分探头是否连接正确可以做一个简单的自检先不接被测信号探头两端都接示波器的地示波器应显示一条接近零电平平的直线然后只接正端到被测点负端悬空读取读数——如果输出异常波动大概率是共模输入超出范围或探头消磁校准没做。养成这个“先自检再加测”的习惯能省下大量因探针接触不良导致的排查时间。把测量手段扩充到电压、电流、差模、共模四个维度之后再回头看很多“疑似芯片问题”的故障会发现其实是电源回路布局或参考地电位差的问题。硬件测试这个岗位的成长路径表面上是学会用更多仪器实际上是逐步培养“测量结果可解释”的能力——每一次读数都能和电路行为对上号这才算真正走入了硬件测试的门。本文还有配套的精品资源点击获取
返回列表