第一章:原型设计阶段的常见陷阱
做硬件这么多年,我见过太多项目在原型阶段就埋下了大坑。说实话,这些坑其实都能避免。今天我就把最常见的三个陷阱掰开揉碎了讲给你听。
1.1 需求模糊导致返工
这是最要命的陷阱。没有之一。
我刚开始带项目时,接过一个客户的需求,就一句话:「做个智能家居网关」。好嘛,我们团队热火朝天干了两周,原理图都画完了。客户一看:「不对啊,我要的是能接Zigbee的,你们怎么做的WiFi?」
你看,这就是需求模糊的代价。两周时间,全白费了。
为什么会这样?说白了,硬件开发不像写软件,改几行代码就行。硬件改一次,少则一周,多则一个月。所以需求必须一开始就敲死。
我个人习惯的做法是:
- 写需求文档时,要具体到引脚级别。比如「需要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或SVN管理,每次修改都要记录变更原因
- 定期审核符号库:我每季度会组织一次符号库审核,把有问题的符号标记出来
- 新人培训:新来的工程师必须先学会符号库规范,才能开始画原理图
举个例子,我常用的符号命名规范是这样的:
符号命名规则:
- 芯片类:IC_厂商_型号_封装
例如:IC_TI_TPS5430_SOIC8
- 连接器类:CONN_类型_引脚数_间距
例如:CONN_HEADER_10_2.54mm
- 无源器件:R/C/L_值_封装
例如:R_10k_0603
你可能会问:「有必要搞这么复杂吗?」我告诉你,当你的项目用到上百个芯片、上千个元器件时,没有规范就是灾难。
1.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 | 复位信号 |
----------------------------------------
你想想看,调试时拿着这张表,用示波器一个个测过去,问题很快就能定位。比满板子找信号强太多了。
好了,原型设计阶段的这三个陷阱,说白了都是「想得不够远」造成的。需求模糊是因为没想清楚用户要什么,符号库混乱是因为没想清楚团队怎么协作,测试点缺失是因为没想清楚调试时怎么测。
我做了十几年硬件,最大的体会就是:硬件开发,七分在规划,三分在执行。原型阶段多花一周想清楚,后面能省下一个月的时间。这笔账,你算算就明白了。
下一章,我会聊聊原理图设计阶段的那些坑。嗯,那个阶段踩的坑更多,到时候慢慢讲给你听。