1. 项目概述
作为一名从事嵌入式硬件开发多年的工程师,我经常需要设计STM32核心板。今天我想分享一个使用Altium Designer 20(简称AD20)设计STM32F103C8T6核心板的完整流程。这个项目采用双层板设计,包含了从原理图绘制到PCB生产的全流程技术要点。
STM32F103C8T6作为一款经典的Cortex-M3内核MCU,在嵌入式领域应用广泛。设计一个稳定可靠的核心板,需要考虑电源完整性、信号完整性、EMC等多个方面。下面我将详细解析每个环节的关键技术和注意事项。
2. 开发环境准备
2.1 软件安装与配置
AD20的安装相对简单,但有几个关键点需要注意:
-
安装路径选择:建议安装在默认路径,避免中文路径。我曾经遇到过因为路径包含中文导致库加载失败的问题。
-
ST官方库安装:在AD20中,通过Tools→Import Libraries导入ST Microelectronics的集成库时,要注意版本兼容性。建议下载最新版的STM32_Base_Library.IntLib。
-
许可证配置:如果是企业版,需要正确配置浮动许可证服务器地址。个人学习版则需要注意激活期限。
提示:安装完成后,建议立即备份license文件和相关配置,避免重装系统时丢失。
2.2 工程环境设置
新建PCB工程时,我通常会采用以下结构:
code复制Project/
├── Documents/ # 设计文档
├── Libraries/ # 自定义库
├── Outputs/ # 生产文件
└── Source/ # 源文件
├── Schematic.SchDoc
└── PCB.PcbDoc
层叠管理器设置:
对于双层板,我的标准配置是:
- 板厚:1.6mm(最常用且成本最低)
- 铜厚:1oz(35μm)
- 表面处理:建议选择沉金(ENIG),虽然比喷锡贵一些,但焊接性能和可靠性更好
3. 原理图设计
3.1 创建自定义元件库
虽然AD20自带STM32的库,但我建议创建自定义库,原因有三:
- 官方库的封装可能不符合你的生产要求
- 可以统一管理自己常用的元件
- 便于团队协作和版本控制
创建STM32F103C8T6符号时,引脚分配要特别注意:
- 电源引脚:标清楚3.3V和5V
- BOOT0/BOOT1:要明确标注,方便后续调试
- 调试接口:SWD接口的引脚要集中放置
3.2 关键电路设计
电源电路设计要点:
-
输入保护:
- TVS管:防止电源浪涌
- 自恢复保险丝:过流保护
- 防反接二极管:防止电源反接
-
LDO选择:
AMS1117-3.3是常见选择,但要注意:- 输入电压不要超过12V
- 输出电流最大800mA
- 压差至少1V
-
去耦电容布局:
- 每个电源引脚附近都要有0.1μF电容
- 每3-5个IO引脚加一个0.1μF电容
- 主电源入口加10μF钽电容
复位电路设计:
除了基本的RC复位电路,我建议:
- 增加手动复位按钮
- 复位信号上加100nF电容滤波
- 复位线要走粗一些(至少0.3mm)
4. PCB布局布线
4.1 板框设计与机械考虑
- 板框尺寸:53x68mm是常见尺寸,但要根据实际外壳尺寸调整
- 定位孔:
- 直径3mm
- 边缘距离至少5mm
- 非金属化孔更便宜
- 接插件位置:
- USB接口靠板边
- 调试接口集中放置
- 按键开关便于操作
4.2 布局策略
我的布局优先级顺序:
- 主控芯片(居中放置)
- 晶振(尽量靠近MCU,走线等长)
- 电源电路(靠近电源输入)
- 接插件(靠板边)
- 其他外围电路
晶振布局要点:
- 距离MCU不超过15mm
- 下方不要走信号线
- 周围铺地铜
- 负载电容尽量靠近晶振
4.3 二层布线技巧
双层板布线挑战较大,我的经验是:
-
层分配:
- 顶层:主要走信号线
- 底层:地平面和电源线
-
线宽规则:
- 电源线:0.5mm(1A电流)
- 信号线:0.3mm
- 地线:尽量宽,必要时铺铜
-
过孔使用:
- 标准过孔:0.6mm/0.4mm(外径/内径)
- 电源过孔:至少两个并联
- 避免在焊盘上打过孔
5. DRC检查与优化
5.1 设计规则配置
我常用的DRC规则设置:
ini复制[Clearance]
Electrical = 0.2mm
Physical = 0.15mm
[Routing]
MinWidth = 0.2mm
PreferredWidth = 0.3mm
MaxWidth = 1.0mm
[Via]
MinSize = 0.4mm
MaxSize = 1.0mm
5.2 铺铜处理
铺铜是双层板设计的关键,要注意:
- 网格设置:建议使用实心铜,网格铜阻抗高
- 间距:与走线保持0.4mm以上间距
- 连接方式:
- 地过孔直接连接
- 其他网络用十字连接
- 孤岛检查:删除所有孤立的铜皮
6. 生产文件输出
6.1 Gerber文件生成
Gerber文件是生产必备,必须包含以下层:
| 文件类型 | 后缀 | 说明 |
|---|---|---|
| 顶层走线 | .GTL | 包含所有顶层铜箔 |
| 底层走线 | .GBL | 包含所有底层铜箔 |
| 顶层阻焊 | .GTS | 开窗部分 |
| 底层阻焊 | .GBS | 开窗部分 |
| 顶层丝印 | .GTO | 元件标识 |
| 底层丝印 | .GBO | 元件标识 |
| 板框 | .GML | 机械层 |
6.2 钻孔文件
钻孔文件包含两个部分:
- 钻孔图(.DRL):显示所有孔的位置和大小
- 钻孔表:列出所有孔的尺寸和数量
注意事项:
- 确认孔尺寸是否在厂家能力范围内
- 金属化孔和非金属化孔要区分
- 提供孔径公差要求
7. 常见问题与解决方案
7.1 电气冲突排查
问题现象:DRC检查报3.3V与GND短路
排查步骤:
- 使用"View→Connections→Show Net"高亮显示相关网络
- 检查是否有走线间距不足
- 检查铺铜与走线的间距
- 使用"Tools→Un-Route→Net"重新布线
7.2 制造工艺问题
常见问题:
- 过孔太小(<0.3mm)导致孔内无铜
- 线宽太细(<0.15mm)导致断线
- 阻焊桥不足(<0.1mm)导致短路
解决方案:
- 修改设计规则:
ini复制MinimumHoleSize = 0.4mm ViaDiameter = 0.6mm MinTrackWidth = 0.2mm - 与厂家沟通工艺能力
- 必要时增加测试点
8. 调试与测试
设计完成后,需要进行以下测试:
-
电源测试:
- 上电前测量各电源对地阻抗
- 逐步上电,观察电流变化
- 测量各电源电压是否正常
-
功能测试:
- 使用ST-Link连接SWD接口
- 下载简单测试程序
- 测试各外设功能
-
信号完整性测试:
- 使用示波器测量时钟信号
- 检查信号上升/下降时间
- 观察是否有过冲/振铃
在实际项目中,我通常会预留测试点:
- 电源测试点
- 关键信号测试点
- 复位信号测试点
9. 设计优化建议
经过多次项目实践,我总结出以下优化建议:
-
电源完整性:
- 增加电源层(四层板更好)
- 使用π型滤波电路
- 关键电源加磁珠滤波
-
信号完整性:
- 高速信号走线等长
- 避免直角走线
- 关键信号加端接电阻
-
EMC设计:
- 板边加接地过孔阵列
- 敏感信号远离板边
- 使用共模扼流圈
对于需要批量生产的设计,建议:
- 做DFM(可制造性设计)分析
- 与PCB厂家沟通工艺细节
- 制作测试治具
10. 经验总结
在设计STM32核心板的过程中,我踩过不少坑,也积累了一些宝贵经验:
-
库管理:建立自己的元件库并定期维护,可以节省大量时间。我曾经因为使用不规范的封装导致整批板子返工。
-
设计规范:制定团队内部的设计规范,包括线宽、间距、过孔尺寸等,可以保证设计一致性。
-
版本控制:使用Git等工具管理设计文件,方便回溯和协作。有次误删文件,幸亏有版本控制才找回。
-
设计评审:重要项目一定要进行设计评审,多人检查能发现很多自己忽略的问题。
-
打样测试:不要直接批量生产,先打样测试。我曾经因为跳过这个步骤,导致500块板子全部报废。
最后提醒一点:设计完成后,一定要生成完整的BOM(物料清单)并验证元件可获得性。疫情期间,我就遇到过因为某个电容缺货导致项目延期的情况。