第一章:原型设计阶段的常见陷阱

做硬件这么多年,我见过太多项目在原型阶段就埋下了大坑。说实话,这些坑其实都能避免。今天我就把最常见的三个陷阱掰开揉碎了讲给你听。

1.1 需求模糊导致返工

这是最要命的陷阱。没有之一。

我刚开始带项目时,接过一个客户的需求,就一句话:「做个智能家居网关」。好嘛,我们团队热火朝天干了两周,原理图都画完了。客户一看:「不对啊,我要的是能接Zigbee的,你们怎么做的WiFi?」

你看,这就是需求模糊的代价。两周时间,全白费了。

避坑指南: 我曾经因为需求文档里少写了一句「支持PoE供电」,结果打样回来的板子要重新改电源方案。多花了三周,多烧了五万块。

为什么会这样?说白了,硬件开发不像写软件,改几行代码就行。硬件改一次,少则一周,多则一个月。所以需求必须一开始就敲死。

我个人习惯的做法是:

  • 写需求文档时,要具体到引脚级别。比如「需要3路UART,波特率115200以上」
  • 做一份接口清单表格,让客户逐条确认
  • 画一张系统框图,把每个模块的输入输出画清楚

这里给你一个我常用的需求确认模板:

需求确认表 - 智能家居网关项目
----------------------------------------
| 接口类型 | 数量 | 电气特性       | 备注       |
|----------|------|----------------|------------|
| UART     | 3    | 3.3V, 115200   | 1路接Zigbee|
| I2C      | 2    | 3.3V, 400kHz   | 传感器总线 |
| GPIO     | 8    | 3.3V, 推挽输出 | 控制继电器 |
| USB      | 1    | USB 2.0        | 固件升级   |
----------------------------------------

你想想看,拿着这样一张表去跟客户确认,他还能说「不对」吗?

1.2 原理图符号库管理混乱

嗯,这个坑我踩过不止一次。记得有一次,团队里两个工程师同时画原理图,用的同一个芯片,但符号库里的引脚编号不一样。一个用的是旧版本,一个用的是新版本。结果PCB Layout时发现引脚对不上,整个项目延期两周。

说白了,符号库管理混乱的后果就是:一个人画错了,全团队跟着倒霉

我的经验: 符号库必须统一管理。我个人习惯用Git来管理符号库,每次修改都要走审批流程。听起来麻烦,但比起返工的代价,这点麻烦真不算什么。

这里有几个实操建议:

  • 建立统一的符号库规范:引脚命名规则、封装命名规则、属性字段都要统一
  • 符号库版本控制:用Git或SVN管理,每次修改都要记录变更原因
  • 定期审核符号库:我每季度会组织一次符号库审核,把有问题的符号标记出来
  • 新人培训:新来的工程师必须先学会符号库规范,才能开始画原理图

举个例子,我常用的符号命名规范是这样的:

符号命名规则:
- 芯片类:IC_厂商_型号_封装
  例如:IC_TI_TPS5430_SOIC8
  
- 连接器类:CONN_类型_引脚数_间距
  例如:CONN_HEADER_10_2.54mm
  
- 无源器件:R/C/L_值_封装
  例如:R_10k_0603

你可能会问:「有必要搞这么复杂吗?」我告诉你,当你的项目用到上百个芯片、上千个元器件时,没有规范就是灾难。

1.3 未考虑测试点导致调试困难

这个陷阱,说白了就是「画原理图时爽了,调试时哭了」。

我记得有一次做一块高速信号板,为了追求信号完整性,我把所有过孔都减到最少。结果板子打回来,有个信号死活调不通。想用示波器抓波形,发现关键节点根本没留测试点。最后只能飞线,那叫一个狼狈。

小技巧: 我现在的习惯是,每画完一版原理图,都会问自己三个问题:
  1. 电源轨道的测试点留了吗?
  2. 关键时钟信号的测试点留了吗?
  3. I2C/SPI等总线的测试点留了吗?

测试点的设计原则其实很简单:

  • 每个电源轨都要有测试点:方便测量电压和纹波
  • 关键信号要留测试点:时钟、复位、使能信号等
  • 总线信号要留测试点:I2C的SCL/SDA、SPI的MOSI/MISO等
  • 测试点要标注清楚:在原理图和PCB上都要有丝印标注

这里给你一个测试点清单模板:

测试点清单 - 项目名:智能家居网关
----------------------------------------
| 信号名称     | 测试点编号 | 位置     | 备注       |
|--------------|------------|----------|------------|
| 3.3V_VCC     | TP1        | 板边     | 电源测量   |
| 1.8V_VDD     | TP2        | 板边     | 电源测量   |
| SYS_CLK      | TP3        | 靠近MCU  | 时钟测量   |
| I2C_SCL      | TP4        | 总线末端 | 总线调试   |
| I2C_SDA      | TP5        | 总线末端 | 总线调试   |
| RESET_N      | TP6        | 靠近MCU  | 复位信号   |
----------------------------------------

你想想看,调试时拿着这张表,用示波器一个个测过去,问题很快就能定位。比满板子找信号强太多了。

特别提醒: 测试点不是越多越好。加太多测试点会影响信号完整性,特别是高速信号。我的原则是:够用就好,关键信号必留

好了,原型设计阶段的这三个陷阱,说白了都是「想得不够远」造成的。需求模糊是因为没想清楚用户要什么,符号库混乱是因为没想清楚团队怎么协作,测试点缺失是因为没想清楚调试时怎么测。

我做了十几年硬件,最大的体会就是:硬件开发,七分在规划,三分在执行。原型阶段多花一周想清楚,后面能省下一个月的时间。这笔账,你算算就明白了。

下一章,我会聊聊原理图设计阶段的那些坑。嗯,那个阶段踩的坑更多,到时候慢慢讲给你听。