ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

智能穿戴SPI Flash选型避坑:从主频到掉电保护的五大教训

智能穿戴SPI Flash选型避坑:从主频到掉电保护的五大教训 去年做智能穿戴项目时一颗SPI FLASH选型让我连续加了两个星期的班。老实说SPI FLASH在嵌入式系统里一直属于存在感很低的器件——不像MCU那样需要纠结架构也不像传感器那样需要反复调算法。恰恰是这种轻视让它在产品化阶段给了我一个不小的教训。这次选的是一颗8Mbit的SPI NOR Flash用来存固件OTA升级包和运动参数记录看起来需求清晰、容量固定、接口通用结果从硬件评审开始一直踩到量产前。把这5个坑完整复盘出来给正在做或者准备做穿戴设备的硬件和嵌入式工程师做个参考。选型从来不是挑一颗参数够用的芯片这么简单尤其是智能穿戴这种对功耗、体积、成本都极度敏感的场景一个小选择都会在后续环节被放大成麻烦。1. 项目复盘一颗8Mbit的FLASH怎么让产品差点延期1.1 这个项目的背景和选型起点项目是一款主打运动健康监测的智能手环主控用的是一颗Cortex-M4内核的低功耗MCU屏幕上要显示天气、消息推送、心率曲线这些信息固件分成了Bootloader、App和资源包三部分。整个系统需要一个外部存储芯片来放OTA差分包和运动历史数据要求容量8Mbit接口自然是SPI速率希望尽量高功耗要低。最初我的想法很直接SPI Flash是标准化程度非常高的器件只要容量对上、封装能焊、功耗不超标不同品牌之间用起来差别能有多大于是按照主控参考设计选了一颗主流品牌的8Mbit SPI NOR Flash型号就不点名了参数页上写着104MHz的主频待机电流2uADeep Power Down电流0.1uA页编程时间0.6ms擦除时间50ms怎么看都是够用的。问题恰恰出在参考设计三个字上。参考设计用的是这颗芯片的标准三线SPI模式而我在项目里为了提高OTA升级速度一路把硬件改成了四线QSPI硬件层贴上主控的QuadSPI控制器。这个改动直接引出了后面一连串的坑。1.2 我理解的坑到底是什么很多人喜欢把坑定义成选型参数选错了但实际项目里真正的坑往往藏在参数之外。一类是参数在不同使用条件下会缩水。比如标称主频85MHz或者104MHz前提是供电电压要够、走线要短、信号质量要好可穿戴设备普遍用2.0V到3.6V的电池供电电压一掉最高主频直接受限。不看DATASHEET里主频和电压的关系曲线就会在时序上出问题。另一类是参数本身是对的但组合起来会产生系统性冲突。比如FLASH待机电流确实只有2uA但MCU进入睡眠模式之前会强制把SPI CS拉高CS拉高的瞬间FLASH从Active进入Standby这个切换过程有一个tDPDeep Power Down Enter时间或者tRES1RESET时间处理不好会导致下电功耗数据完全不对。还有一类算隐藏成本比如磨损均衡、掉电保护、第二货源布局这些不会写在选型表第一页却是决定产品长期稳定性的关键。我踩的5个坑恰恰是这三类问题的具体化。2. 第一个坑纸面主频与真实IO时序的差距2.1 标称104MHz在2.0V电压下的实际表现DATASHEET首页最醒目的位置基本都会印104MHz或者133MHz这样的最大主频数字但翻到交流特性那一页一定会有一张AC Characteristics表格里面明确写了最高主频是电压的函数。以我选的那颗为例2.7V到3.6V范围内最高支持104MHz2.3V到2.7V范围降到85MHz到了2.0V到2.3V直接变成55MHz甚至更低。手环的锂电池工作电压范围通常在3.4V到4.2V看起来完全在2.7V以上区间好像问题不大。但要注意当电池电压在3.4V以下、系统还带载运行时电源管理芯片输出给FLASH的VCC可能已经掉到2.5V左右。我在实验室用可编程电源模拟电池放电到3.2V时QSPI主频设在80MHz读数据偶发出现CRC错误频率降到50MHz之后就正常了。这个坑的隐蔽之处在于它不会在上电初期暴露因为电池满电时电压足够也不会在低温暴露因为低温时电池内阻大、电压跌得快系统反而更容易进入欠压状态。真正出现问题的是电池电量剩余20%到40%这个区间属性能一直不好复现非常难定位。注意选型阶段不要只记最大主频一定去看DATASHEET里的VCC vs Frequency曲线把系统最低工作电压对应的主频标出来当作实际可用主频来评估。2.2 四线DIO/QIO模式在穿戴主板上的信号完整性隐患三线SPICLK、MOSI、MISO属于最基础的模式速率做到40MHz以下基本不需要担心信号完整性。QSPI的四线模式把IO0到IO3同时用作双向数据线同样主频下数据传输率翻倍但对PCB走线长度匹配、串阻、上下拉的要求提高了一个数量级。穿戴设备的PCB面积极度有限我那块板子总尺寸大概20mm乘16mmFLASH摆在主控和电池之间QSPI的4根数据线走线长度从8mm到14mm不等。在40MHz的DIO模式下测试还没问题切到80MHz QIO模式后读ID能成功但连续读数据到第1024字节附近就开始出错示波器量了波形四根数据线的建立时间差了将近8ns。这个问题的解决手段没有太多技巧就是把QSPI的4根数据线做等长处理至少保证长度差控制在2mm以内同时每根数据线上串22欧姆电阻降低走线阻抗不连续引起的反射。改完一版后80MHz QIO模式的BER测试从偶尔出错变成了全量通过。2.3 读写时序的实测对比数据为了给后续评审留依据我把几种工况下的实测数据整理成了表格。选型评审时这张表非常有用建议大家也保留类似记录。工况电池电压VCC实测值可用最高主频Datasheet实测稳定主频QIO备注满电4.1V3.3V104MHz80MHz稳定中电3.7V3.0V104MHz80MHz稳定低电3.3V2.6V85MHz50MHz80MHz有偶发错误欠压3.0V2.3V55MHz25MHz建议降频使用这里补充一句实际主控的QuadSPI控制器在初始化时读SFDP参数有些主控会根据FLASH反馈的电压阈值自动降频但更多低功耗MCU没有这个功能需要在固件里根据电池电量动态调整FLASH的工作主频。能在硬件上固化最好不行就在软件上做一层适配。3. 第二个坑功耗参数是25℃下测的可穿戴设备在37℃的皮肤上工作3.1 待机电流和Deep Power Down电流的温漂智能穿戴设备对功耗的敏感度远超一般物联网设备。手环的电池容量基本在150mAh到250mAh之间FLASH如果多消耗10uA的电流整机待机时间可能缩短好几个小时。选型阶段我看中的芯片待机电流标称2uADeep Power Down电流0.1uA理论上对整机功耗的贡献微乎其微。实际上这两个参数都是25℃常温下的典型值。FLASH在环境温度25℃、芯片自身不发热的情况下确实能做到2uA但智能手环贴着皮肤工作皮肤表面温度通常33℃到37℃加上充电时主控发热FLASH周围的环境温度很容易到45℃以上。我实测过温度从25℃升到60℃这颗FLASH的待机电流从2uA涨到了9uADeep Power Down电流从0.1uA涨到了1.8uA。看起来数值依然很小但乘以一天的运行时长再加上MCU的睡眠电流、传感器的周期采样电流整机功耗预算就被吃掉了一块。这个问题的本质是半导体器件的漏电流随温度呈指数级增长MOS管栅极氧化层越薄、工艺越先进高温漏电越明显。选型时如果只按25℃典型值去做功耗仿真结果会偏乐观。更稳妥的做法是直接看DATASHEET里高温区85℃或者105℃的漏电流最大值或者自己拿热风枪加热后用功耗分析仪实测。3.2 读操作峰值电流与电池瞬态响应的冲突穿戴设备的电池放电能力有限同时摄像头、屏幕、射频这些模块经常有突发大电流需求。FLASH在编程和擦除时内部需要升压电荷泵编程电流会比读操作大不少。我这边实测到的一颗8Mbit FLASH页编程峰值电流大概18mA到22mA持续几百微秒擦除操作更夸张4KB扇区擦除时峰值电流到了25mA以上。问题在于手环在OTA升级时MCU从FLASH读取固件包、写入另一块FLASH区域整个过程FLASH和MCU同时在跑系统峰值电流叠加了MCU电流和FLASH编程电流电压瞬间跌落。如果电源路径设计余量不足电池电压从3.6V跌到3.2V附近FLASH编程会失败写进去的数据出现字节错乱。这类问题排查起来很费劲因为FLASH编程失败后看起来像数据写错了实际上根因是电源瞬态跌落。我的排查方法是给FLASH的VCC脚跟电池之间直接并一颗10uF电容同时把编程时机避开屏幕刷新和蓝牙广播的峰值窗口问题就解决了。硬件选型阶段一定要把FLASH的编程峰值电流列入功耗表和主控、射频、屏幕的电流峰值做同步叠加分析。3.3 软件切换到DPD状态的实现细节Low功耗设计里FLASH处理完数据之后应该尽快进入Deep Power Down状态而不是停留在Standby状态。这个逻辑大家都懂但实际操作中有两个坑。第一个坑是DPD唤醒时间。我用过的一颗FLASH从Deep Power Down唤醒进入正常读状态需要tRES1时间典型值30us到50us。千万不要以为唤醒是即时的如果MCU在发出唤醒命令后的头几个时钟周期就开始发读命令FLASH可能还在恢复内部状态返回的是一堆FF或者乱码。正确做法是发送唤醒命令后delay至少50us再访问FLASH。第二个坑和CS引脚的电气状态有关。FLASH进入DPD后如果CS引脚被拉高但其他数据线处于浮空状态部分芯片的漏电路径会增加。我在功耗测试中发现MCU和FLASH都进入睡眠模式后整机电流有时会莫名其妙多出几个微安最后发现是SPI总线的MISO线没有做下拉处于浮空态电流通过FLASH的内部上拉电阻流走了。给MISO线加一个100k欧姆下拉电阻后这个现象消失。这类细节在DATASHEET里不会写得很明显但实际功耗调试中非常常见。3.4 功耗实测与电池曲线联调选型完成后我专门做了一轮功耗联调数据如下模式FLASH状态MCU状态实测整机电流说明深度睡眠Deep Power DownSleep 10uA28uA整体正常普通待机StandbySleep 10uA45uAFLASH多耗17uA数据记录页编程Active 5mA22mA电流峰值窗口需要关注OTA升级连续写Active 12mA38mA峰值高达50mA以上OTA升级时的峰值电流最值得关注因为升级往往发生在用户睡前把手环放到充电器上此时电池处于充电状态适配器供电能力足够反而问题不大。真正要关注的是运动数据记录场景用户在户外跑步蓝牙播报配速、心率传感器连续采样、FLASH周期性写入运动数据三个模块的电流叠加在一起最容易触发低压问题。软件上把三个动作错峰比单纯堆电容更有效。4. 第三个坑封装不是能焊上就行4.1 SOP8到WLCSP封装选型对PCBA良率的影响SPI NOR Flash常见的封装有SOP8、USON8、WLCSP和BGA。SOP8和USON8的引脚间距大手工焊接和SMT回流焊都容易处理但体积大、占板面积多。WLCSP封装直接把芯片的焊球阵列裸露在芯片底部面积最小厚度最薄适合手环内部空间极度紧张的设计但焊接工艺难度明显提升对X-Ray检测、返修能力都提出了额外要求。我这个项目最初选的是USON8封装6pin加1个裸露焊盘尺寸2mm乘3mm在板子上占的面积不算大。但供应商反馈USON8的交期不稳定临时换成WLCSP封装后板厂的SMT良率从99%直接掉到97.5%。不要小看这1.5个百分点的差异手环这类消费电子出货量是百万级的1.5%的良率损失就是上万片板子报废而且WLCSP封装返修极难基本是报废处理。如果空间允许优先用USON8或者SOP8这类工艺友好型封装如果必须用WLCSP建议在打样阶段就找具备微间距BGA焊接能力的板厂提前做钢网开孔设计和X-Ray抽检方案。4.2 引脚定义与兼容性问题同一个封装、同样的pin脚数量不同厂家的引脚定义可能存在差异。USON8封装看起来是8个pin但有的厂把Pin1定义为CS#有的定义为VCC还有的引入了RFUReserved for Future Use引脚。硬件设计时如果只参考主控参考设计里的封装不核对FLASH具体型号的Pin Assignment很容易把电源和地接反。我在项目评审中发现手环的原理图里USON8封装的Pin1是CS#但某一款国产件把Pin1定义成了VCC。虽然打样贴装的是另一颗原厂料这个问题没有直接引爆但评审时冷汗都下来了。这里有个实操技巧原理图里把FLASH的每个引脚标注为网络标签 芯片引脚名双标识画封装时逐个引脚核对DATASHEET而不是直接把参考设计的封装复制过来。4.3 丝印、X-Ray和焊接虚焊的教训WLCSP封装还有一个容易被忽视的点芯片太小、引脚在底部焊接后根本无法直接目视检查。板厂如果SMT炉温曲线设置不合适锡球没有完全塌落会出现部分焊点虚焊的情况表面上看起来芯片贴得很正实际上某些引脚根本没有接通。我在一次可靠性测试中遇到过FLASH偶发读写失败时好时坏X-Ray检查才发现有两个焊球只有一半的接触面积属于典型的虚焊。解决方法是优化钢网开孔尺寸把开孔比例从90%调整到100%同时提高回流焊峰值温度2℃到3℃增加锡膏的润湿性。另外务必在PCBA出货检验环节加入X-Ray抽检比例建议按每批次至少3到5片来执行。虚焊问题一旦到了整机测试阶段才暴露排查成本会翻好几倍。5. 第四个坑擦写寿命和掉电保护两个看起来免费的代价5.1 标称10万次擦写实际要除以分区策略的系数SPI NOR Flash的DATASHEET里通常会写明Endurance: 100,000 Program/Erase Cycles这个数字看起来很美好。但实际项目里FLASH的擦写寿命要打一个很大的折扣原因在于磨损不均衡。手环里运动数据是高频写入的每分钟可能写一条记录一年下来同一个扇区的擦写次数可能接近10万次。如果固件里没有做磨损均衡老是往同一个扇区写FLASH很快就到寿命极限表现为写入失败、数据校验错误甚至整颗芯片锁死。真正的产品化设计不能只靠算法解决硬件选型阶段就要考虑分区。我的做法是把8Mbit划分成三个区Bootloader区固定不变、OTA升级包区每次升级才擦写、运动数据区做环形覆盖。数据区单独用一个小分区做磨损均衡每次写完计数加一写到一定阈值后跳到下一个扇区。这样即使总擦写次数只有10万次合理分区后也能用好几年。如果业务逻辑不允许复杂分区选型时可以优先挑擦写寿命更高的型号标称100万次擦写的P25Q系列或者类似产品虽然贵一点但长期看更稳妥。5.2 意外掉电丢数据的根因定位掉电丢数据是嵌入式开发者经常遇到且非常头疼的问题。手环如果用户在100米跑完立刻按停手表恰好这个瞬间FLASH正在写入最后一段运动数据电池电量又不足以支撑写操作完整完成这部分数据就会丢失。更糟的情况是写入过程中掉电扇区状态标记被破坏导致整个扇区后续无法写入需要做格式化才能恢复。我在实测中发现掉电丢数据的根因不完全是FLASH本身而是MCU掉电检测机制不够及时。手环的MCU有BODBrown-Out Detector功能但默认阈值设置偏低当电池电压跌到2.8V时MCU才进入掉电保护流程而FLASH在2.3V以下就完全不工作了。从2.8V跌到2.3V可能只有几毫秒Flash写一个扇区需要几十毫秒根本来不及。解决思路有两个层面硬件层把MCU的掉电检测阈值调到3.0V到3.1V一旦检测到电压低于阈值立即停止FLASH写入操作先保证关键数据不损坏。软件层在写FLASH之前先擦除目标扇区把新数据写到新位置用写后校验双备份区域切换的方式降低掉电损坏的概率。我的实际做法是把运动数据分成两条记录分别存入两个独立扇区每条记录都带CRC校验。启动时读两个扇区取校验通过且时间戳最新的那条作为有效数据。这样即使掉电破坏了一个扇区另一份数据依然能救回来。代价是多占一倍的FLASH容量但对于8Mbit的芯片来说完全可接受。5.3 掉电检测与写保护方案硬件掉电检测方案怎么选我的经验是不要只依赖MCU内部的BOD最好在电源路径上加一颗电压监控芯片阈值设在3.0V输出接MCU的复位引脚或者外部中断引脚。MCU一旦收到低电压中断不管当前CPU频率多高、有没有缓存数据要回写都先进入一个极简的数据保全流程——把当前运动关键参数写入SRAM的备份区然后锁死FLASH CS引脚防止后续无意义的写操作。FLASH自身的写保护寄存器也要用起来。标准SPI NOR Flash都支持状态寄存器写保护Status Register Write Protect把状态寄存器设置为硬件写保护模式后即使软件指令错误或者程序跑飞FLASH也不会被意外擦写。我在量产固件里默认开启BP0、BP1、BP2保护位只把数据区设置为可写其他区域全部保护。这个问题一定要在选型阶段就考虑因为不同厂商对写保护位的行为定义有差异有些芯片的BP位清零需要先发解锁命令有些则直接写寄存器固件的初始化序列必须和芯片行为对齐。6. 第五个坑一颗料号的第二货源至少提前一年布局6.1 停产通知和晶圆代工变更的影响消费电子行业最怕的一件事就是芯片停产EOL。SPI NOR Flash虽然存量市场巨大但原厂也在不断调整产品线旧工艺节点逐渐关停新工艺导入过程中经常出现供货不稳定。我有一个别的项目的同行选了一款冷门品牌的FLASH量产后一年收到停产通知被迫重新设计PCB、改固件驱动、重新做认证整个周期浪费了5个月。选型评审时一定要评估供应链风险重点看这几个维度维度评估要点市场地位该型号是否为主流大厂的主流料号生命周期是否有明确的持续供货承诺Product Longevity Program第二货源是否有Pin-to-Pin兼容的替代型号且固件驱动兼容晶圆厂是否依赖单一晶圆厂有没有产能风险交期现货交期是否稳定是否有长期订单保障6.2 固件兼容层的设计思路多货源战略不能只是硬件上预留兼容位置更要做到固件无缝切换。不同品牌的FLASH虽然都兼容JEDEC SFDP标准但有些细节并不完全一致主要体现在读ID命令返回的Manufacturer Device ID不同Status Register的位定义有差异比如SRP、BP位、QE位的顺序和安全级别四线QIO模式的开启方式不同有的需要写Status Register的QE位有的只需要发命令擦除和编程的时序参数有一个区间范围不能按某一颗芯片的最大值来硬编码超时时间我的做法是给FLASH驱动封装一层抽象层底层提供flash_init、flash_read、flash_write、flash_erase、flash_sleep五个标准接口内部根据读ID结果自动适配不同品牌的操作序列。这样切换物料时只需要新增一个适配表不需要改动上层业务逻辑。这个抽象层在项目初期看起来浪费了一个星期的工作量但第二次增加第二货源时节省的时间远远超过当初的投入。6.3 供应链维度的选型评审如果公司规模不大、供应链话语权有限至少做到两手准备主选一颗大厂主流料号备选一颗国产兼容料号两者在封装和引脚定义上完全一致。硬件设计时直接兼容两家的封装焊盘固件里通过读ID自动识别。我在项目里选了一颗主流大厂料号和一颗国产兼容料号两者容量、封装、引脚完全兼容。首版验证用大厂料量产切换前在100片整机上做了全量验证包括QIO模式读写、高低温循环、功耗测试全部通过后才正式切换。整个切换周期做了将近3个月从风险控制角度看这个时间花得非常值。注意选型阶段一定要把第二货源列入评审项。如果你选了一颗只有单一来源的专用料即使技术参数再合适量产阶段也会成为项目最大的风险。宁可稍微牺牲一点参数也要保证供应链有冗余空间。7. 附实操清单我最后沉淀下来的选型工具表7.1 参数对照表可以直接复制到BOM评审用这个表是我后来做每个含外部存储的穿戴项目都会复用的一张评审表分享出来可以直接改成自己公司的评审模板。参数项手环项目需求我最终选用的参数备选1备选2容量8Mbit8MbitWLCSP版本8Mbit16Mbit接口SPI / QSPI三线SPI QSPI三线SPIQSPI最高主频3.0V时≥80MHz85MHz2.7V80MHz104MHz待机电流25℃≤3uA2uA3uA5uA待机电流60℃≤10uA9uA12uA15uADeep Power Down电流≤1uA0.1uA1uA2uA页编程峰值电流≤30mA22mA25mA20mA擦除时间≤100ms50ms60ms80ms擦写寿命≥10万次10万次10万次10万次封装USON8/WLCSPWLCSPUSON8USON8工作温度-20℃~70℃-40℃~85℃-40℃~85℃-40℃~85℃第二货源必须有Pin-to-Pin兼容有无这里有两条经验在评审阶段对关键参数做加严而不要卡着需求边界选型。比如需求是待机电流≤3uA25℃实际选型参数最好≤1uA留出工艺波动和温漂的余量需求是擦除时间≤100ms选型参数最好≤80ms因为实际擦除时间会随温度变化和擦写次数增加而变长。把60℃待机电流单独列出来是我踩过温漂坑之后总结的教训。所有穿戴设备相关的FLASH选型评审我都要求供应商提供85℃下的电流参数没有这个参数的型号直接排除。7.2 上电时序与代码层面的检查项选型结束后硬件和固件的交互细节往往决定了整个系统能否稳定工作。以下是我在实践中总结出的上电时序检查项检查项预期行为排查方法FLASH上电复位时间tVSLCS拉高后等待至少10us再访问逻辑分析仪抓CS和CLK主控SPI初始化顺序先配置GPIO复用再配置SPI速率最后拉高CS断点调试发送读ID命令第1字节0x9F返回3字节ID逻辑分析仪QIO模式开启检查Status Register的QE位状态读状态寄存器写入前状态检查查询WIP位为0才允许写命令固件超时重试机制掉电保护流程电压低于阈值时禁止一切写操作电源跌落测试代码层面最小的推荐配置是FLASH驱动初始化时读取JEDEC ID根据ID选择适配表。所有写操作前查询WIPWrite In Progress位加上超时保护避免死等。写数据后做readback校验不匹配则重试3次仍失败则标记坏块并切换到备份区。掉电中断里只做停止FLASH写操作 保存关键上下文到SRAM任何阻塞式操作都不要做。7.3 物料验证流程选型不是评审完就结束了真正的验证要在物料到样后立即展开。我的做法是拿到FLASH样品后按以下流程做一轮完整验证读出JEDEC ID和选型表记录比对。做全地址空间的0x00、0xFF、0xAA、0x55图案读写测试重点关注边界地址。在最高工作温度下写满整个芯片再读出来校验。高温写容易出现栅氧化层缺陷数据保持力不达标的问题也能暴露。做1000次随机掉电测试供电用电子负载模拟电池瞬态跌落检查是否有数据损坏。在PCBA上做X-Ray抽检确认WLCSP焊点质量稳定。连续跑72小时老化观察有无偶发读写失败。这些验证步骤看起来多其实只要固件驱动写得好、测试脚本提前搭好大概两周时间能完成。相比量产后再发现问题这个时间投入是非常划算的。7.4 选型表中的软参数评审最后再说一个容易忽略的评审维度。硬件选型时大家习惯性只关注电参数和机械参数但供应链和软件适配相关的软参数同样值得纳入评审表软参数评审要点我的经验原厂技术支持是否能快速响应问题优先选择有本地FAE的生态成熟度是否被主流MCU SDK直接支持减少自研驱动成本文档完整度DATASHEET、AN、迁移指南是否齐全资料齐全能省很多开发时间历史案例是否在同类穿戴产品上有量产案例降低未知风险EOL风险已量产时间、产品生命周期状态上市超过5年且无替代计划的慎选供应链风险只有在真正缺货的时候才会显形。我见过好几个项目因为贪便宜选了小众料号结果交期一塌糊涂最后花钱加急空运才赶上了量产节点。这类风险在选型阶段就可以规避关键还是愿不愿意多花力气做评审。结语这次SPI FLASH选型踩坑的经历让我重新理解了选型这两个字。选型不是翻DATASHEET找一颗满足参数表的芯片而是对一场产品化全流程的提前推演——要想到电压跌落时的降频、皮肤温度下的漏电、WLCSP焊接的良率、掉电瞬间的数据保全、量产后第二货源的切换预案。所有这些都要在立项阶段就想清楚而不是等硬件贴好之后再来补课。尽管理论上可以把这些经验写成一整套完整的流程但现实项目里每个产品的约束条件都不一样参数表、验证清单和评审表只能作为一个起点。真正有用的还是那种凡事多想一步的习惯。下次做选型评审时建议你多问自己一句这个参数在极端条件下还能成立吗这颗料如果停产了我怎么办这个问题问得越早后期省的时间就越多。
返回列表