龙岩市网站建设_网站建设公司_测试上线_seo优化
2025/12/23 1:17:22 网站建设 项目流程

从零开始用 Altium Designer 设计一块双层板:STM32最小系统实战全记录

你是不是也曾经打开过 Altium Designer,面对密密麻麻的菜单和面板,不知道从哪里下手?
原理图画到一半,PCB 导入却报错;布线时走着走着就“堵死”了;DRC 满屏飘红,根本不知道问题出在哪……

别急。今天我们就来手把手带你完成一次完整的双层 PCB 设计流程——不跳步骤、不甩术语,只讲你真正需要知道的那些“坑”和“窍门”。

我们以一个经典的入门项目为例:设计一块基于 STM32F103C8T6 的最小系统板(也就是常说的“蓝 pill”核心板)。它结构清晰、功能完整,非常适合新手练手,也是无数嵌入式项目的起点。

通过这个案例,你会明白:

  • 原理图到底该怎么画才不会出错?
  • 元件布局有哪些“黄金法则”?
  • 双层板怎么布线才能又快又干净?
  • DRC 报错怎么一步步排查?
  • 最终如何生成工厂能生产的文件?

更重要的是,你会建立起一套完整的工程化思维:从想法到实物,中间每一步都不能含糊。


一、先搞清楚你要做什么:系统架构与元器件清单

在动鼠标之前,先动脑。

我们要做的这块板子虽然小,但五脏俱全。它的主要任务是让 STM32 芯片稳定运行,并具备基本的供电、复位、时钟和程序下载能力。

核心模块组成如下:

模块功能说明
主控芯片STM32F103C8T6(ARM Cortex-M3,LQFP48 封装)
电源电路AMS1117-3.3V 稳压器,将 5V 输入转为 3.3V 给 MCU 供电
复位电路10kΩ 上拉电阻 + 100nF 电容构成 RC 复位网络
晶振电路外接 8MHz 晶体 + 两个 22pF 负载电容,提供主时钟
SWD 下载接口引出 SWCLK 和 SWDIO 引脚,用于烧录程序和调试
去耦电容每个 VDD/VSS 对之间加 100nF 陶瓷电容,滤除高频噪声

这些信息不需要记下来,但在后续设计中会反复用到。比如你知道晶振必须靠近芯片放置,那你在布局时就会有意识地预留空间。

💡小贴士:如果你找不到某个元件的封装或库文件,推荐使用 Ultra Librarian 或 SnapEDA 在线搜索并导出 Altium 格式模型,省时又准确。


二、第一步:创建工程 & 画原理图

Altium Designer 是“工程驱动”的,这意味着所有文件都属于同一个.PrjPcb工程容器。这是整个设计的“根目录”。

1. 新建工程

  • 打开 AD,选择File → New → Project
  • 类型选PCB Project,命名为STM32_Minimal.PrjPcb
  • 右键点击工程 →Add New to Project → Schematic,添加一张新原理图,重命名为Main.SchDoc

2. 添加常用库(可选)

虽然现在很多集成库已经内置,但为了保险起见:
- 进入Design → Manage Project Items → Search Providers,确保已启用Manufacturer Part Search
- 或手动加载 ST 官方提供的 STM32 元件库(如果有)

不过对于本项目中的通用元件(电阻、电容、稳压器等),可以直接使用软件自带的Miscellaneous Devices.IntLib

3. 开始画原理图

放置关键元件:
  • 搜索STM32F103C8T6—— 如果没有,可以先放一个普通 MCU 符号,后期替换封装
  • 放置AMS1117-3.3(可在库中搜 “AMS1117”)
  • 添加多个CAP(电容)、RES(电阻)、CRYSTAL(晶振)
连接电气关系:
  • 使用Wire(快捷键P+W)连接引脚
  • 使用Net Label(快捷键P+N)标记重要网络,如VCC_3V3GNDRESETBOOT0
  • 使用Power Port(快捷键P+O)接入电源符号,例如 GND 和 VCC

⚠️ 注意:不要混用 Wire 和 Bus!初学者常犯错误是用 Bus 当 Wire 用,导致网络不通。

关键技巧:
  • 给每个元件加上Footprint 属性:右键元件 → Properties → Footprint,设置对应的封装(如电阻用R0805,电容用C0805
  • 设置Designator自动递增(R1, R2… C1, C2…)
  • 对于未使用的引脚(如某些 NC 引脚),明确标注No ERC避免 ERC 报警

4. 编译工程 & 电气规则检查(ERC)

这一步至关重要!

  • 点击Project → Compile PCB Project STM32_Minimal.PrjPcb
  • 查看下方Messages面板:
  • 是否有 “Unconnected Pin”?
  • 是否有重复的网络名?
  • 是否存在悬浮的标签?

常见问题举例:
- 忘记给 GND 接上 Power Port → 报错:“GND has no driving source”
- 晶振负端没接地 → 实际应该通过两个负载电容接地,而不是悬空

解决所有 ERC 错误后,你的原理图才算“合法”,才能安全导入 PCB。


三、第二步:转入 PCB,开始物理实现

现在进入真正的战场:把抽象的电路变成看得见摸得着的线路板。

1. 创建 PCB 文件

  • 在工程中右键 →Add New to Project → PCB,命名为Board.PcbDoc
  • 打开该文件,你会看到一片空白画布

2. 定义板框尺寸

  • 切换到Keep-Out Layer(禁止布线层)
  • 使用Place → Line工具画一个矩形边界,比如 50mm × 30mm
  • 选中四条边 → 右键 →Convert Selected Primitives to Board Shape,自动裁剪板形

3. 设置层叠结构(Layer Stack)

  • Design → Layer Stack Manager
  • 默认已经是双层板(Top Layer / Bottom Layer),介质厚度设为 1.6mm FR-4 材料即可

4. 导入网络表(Update PCB)

  • 回到原理图界面,执行Design → Update PCB Document Board.PcbDoc
  • 弹出对话框中确认所有元件和网络都被正确识别
  • 点击 Execute,所有元件将以“堆叠”形式出现在 PCB 视窗外侧

此时你会发现:所有元件都在外面飘着,还没进板子。

5. 将元件导入板内

  • 切换到 PCB 文件,按Ctrl+End显示所有对象
  • 用鼠标框选全部元件 → 拖入板框内部
  • 此时它们还乱七八糟,接下来就是布局的艺术了

四、第三步:合理布局——决定成败的第一步

很多新手以为布线最难,其实布局才是最关键的一步。好的布局能让布线事半功倍;坏的布局会让你越走越窄,最后不得不推倒重来。

布局基本原则(记住这几点就够了):

原则说明
MCU 居中主控芯片是心脏,其他外围尽量围绕它展开
晶振紧靠 OSC 引脚距离越近越好,最好在同一层走线,避免过孔
去耦电容就近原则每个 VDD 引脚旁都要有一个 100nF 电容,路径最短
电源模块靠边LDO 或 DC-DC 放在边缘,利于散热和输入输出接线
SWD 接口留位置至少预留 6Pin 排针位置,方便后期调试
避免交叉走线区高速信号路径区域不要堆放无关元件

实操建议:

  • 先固定 MCU 位置(居中偏上)
  • 把 8MHz 晶振放在其左侧,两个 22pF 电容紧挨着放
  • 四个去耦电容分别靠近 VDD1~VDD4 和 VSS1~VSS4
  • AMS1117 放在右侧边缘,VIN/VOUT 方向朝外
  • RESET 按键和电路上方集中布置

布局完成后,整体看起来应该像一张“星型拓扑图”:MCU 在中心,各功能模块呈放射状分布。


四、第四步:布线策略与实战技巧

终于到了激动人心的布线环节。Altium 的交互式布线工具非常强大,但也容易“翻车”。掌握几个核心技巧,让你少走弯路。

1. 设置设计规则(Design Rules)

这是很多人忽略的关键一步!

进入Design → Rules,重点配置以下几项:

➤ 安全间距(Clearance)
  • Rule Name:Default
  • Scope: All
  • Minimum Clearance =10mil(适用于一般制板厂)
➤ 线宽(Width)
  • 新建规则,Scope 设为InNet('GND')→ Width =20mil
  • 再建一条针对InNet('VCC_3V3')→ Width =15mil
  • 其余信号线保持默认 10mil

✅ 提示:GND 和电源线要粗!至少是普通信号线的两倍宽。

➤ 禁止短路(Short-Circuit)
  • 确保Routing → Short-Circuit规则启用 → 否则会允许不同网络短接!

设置完后,这些规则将在布线过程中实时生效——红线表示违规,绿色表示合规。

2. 开始交互式布线(Interactive Routing)

快捷键:P + T

布线顺序建议:
  1. 先布GND 网络:利用底层大面积走线,形成“地回路”
  2. 再布电源线(VCC_3V3):从 AMS1117 输出端出发,连接各个去耦电容
  3. 接着处理关键信号:RESET、BOOT0、SWD 接口
  4. 最后搞定晶振线路:必须对称、等长、远离干扰源
关键技巧:
  • 使用Tab 键在布线前修改当前线段属性(宽度、层切换)
  • 按 *** 键** 快速切换到另一层(自动插入 Via)
  • Shift+Space切换布线拐角模式(90°、45°、圆弧)
  • 双击已完成的走线可查看所属网络名称

🛠️经验之谈:晶振走线尽量走顶层,长度控制在 1cm 以内,两边走线等长,下方禁止走其他信号线(尤其是数字信号)!


五、第五步:覆铜、泪滴与最终检查

做完布线并不代表结束。还有三项收尾工作必不可少。

1. 铺铜(Polygon Pour)——打造完整地平面

作用:降低阻抗、提高抗干扰能力、辅助散热。

操作步骤:
- 选择Place → Polygon Pour
- Layer 选Bottom Layer
- Net 选择GND
- Fill Mode 选Solid
- 设置与周围对象的间距(Gap)=10mil
- 点击 OK,在板子轮廓内点击一次完成绘制

✅ 完成后右键 →Repour Selected更新铺铜

你会发现底层大部分变成了绿色铜皮(取决于显示颜色),并且所有 GND 焊盘都通过“十字花”方式连接。

💡 为什么是“十字花”?为了避免手工焊接时因大面积铜皮吸热导致虚焊。

2. 添加泪滴(Teardrops)——增强机械强度

防止焊盘在多次插拔或振动中脱落。

操作:
-Tools → Teardrops
- 勾选Add to PadsAdd to Vias
- 选择Track to PadVia to Track
- 点击 OK 批量添加

效果:走线与焊盘/过孔之间出现平滑过渡的“水滴状”连接。

3. 运行 DRC(Design Rule Check)

这是投板前的最后一道关卡。

  • Tools → Design Rule Check
  • 勾选Run Design Rule Check
  • 查看 Report 中是否有错误(Errors)或警告(Warnings)

常见问题及解决方案:

错误类型可能原因解决方法
Clearance Constraint两条线太近移动或调整走向
Un-Routed Net某网络未完全连接检查是否有遗漏节点
Silk to Solder Mask丝印压到焊盘移动丝印文字
Hole Size Constraint过孔太小修改过孔参数为 16mil 孔 / 35mil 外径

逐条修复,直到 DRC 显示0 Errors, 0 Warnings


六、第六步:输出生产文件——让工厂能做出来

终于到了交付时刻。你需要给 PCB 工厂提供一组标准文件包。

输出内容清单:

文件类型输出路径说明
Gerber 文件File → Fabrication Outputs → Gerber Files包含每一层的图形数据
钻孔文件File → Fabrication Outputs → NC Drill FilesExcellon 格式,定义钻孔位置
BOM 表Reports → Bill of Materials元器件清单,用于采购
装配图File → Assembly Drawings指导贴片或手工焊接

Gerber 设置要点:

  • Format:2:5(精度足够)
  • Units:Inches
  • Layers: 勾选 Top Layer, Bottom Layer, Top Silkscreen, Bottom Silkscreen, Top Solder Mask, Bottom Solder Mask, Keep-Out Layer
  • Advanced: 选择RS-274X格式(支持嵌入 aperture 信息,推荐)

生成后会得到一个包含多个.gbr文件的文件夹,打包发给嘉立创、华秋、捷多邦等厂商即可打样。

✅ 建议同时导出 PDF 版装配图,方便自己核对元件位置。


七、那些你一定会遇到的问题 & 应对策略

❓ 问题1:晶振不起振怎么办?

即使原理正确,也可能无法起振。

可能原因
- 晶振距离 MCU 太远
- 走线下方有其他信号穿越,引入噪声
- 负载电容取值不准(应为 22pF ±5%)
- 没有做好地平面隔离

解决办法
- 将晶振及其电容整体挪近 MCU
- 在晶振周围用地线包围(Guard Ring),仅一点接地
- 禁止在其正下方走任何信号线(尤其是数字信号)
- 检查 BOOT0 是否被误拉高

❓ 问题2:AMS1117 发烫严重?

线性稳压效率低,压差大时发热明显。

优化方案
- 增加顶层铜皮面积帮助散热
- 在元件焊盘下添加多个 Thermal Via(导热过孔)连接到底层 GND 铜皮
- 若输入电压较高(如 12V→3.3V),建议改用DC-DC 模块(如 MP1584)

❓ 问题3:DRC 总是报间距错误?

有时候明明看着没挨着,还是报警。

排查方法
- 使用 Filter 面板筛选IsTrack && InNet('GND')查看是否某根底线太近
- 检查丝印层是否有字符压到焊盘
- 查看是否有隐藏的对象(如多余的图形或多层文本)

🔍 技巧:在 DRC 报告中双击错误项,软件会自动高亮对应位置。


八、写在最后:从一块板子学到的设计哲学

做完这块 STM32 最小系统板,你收获的不仅是几张 Gerber 文件,更是一套完整的电子开发思维体系:

  • 功能实现只是起点,可制造性(DFM)、可测试性(DFT)、电磁兼容(EMC)才是真正考验工程师的地方。
  • 规则不是束缚,而是保护伞。正是因为有了设计规则,你才能在复杂布线中始终保持合规。
  • 自动化不可怕。Altium 支持脚本和 API(如前面提到的 Python COM 控制),未来你可以编写工具批量处理封装、生成测试点、自动标注版本号……这才是高手之路。

下一步你可以尝试:

  • 把这块板子升级成四层板,加入完整的电源平面(Power Plane)和地平面(Ground Plane)
  • 使用AD 的 3D 视图功能(3D Layout Mode)检查是否与外壳干涉
  • 结合SIMetrix/Simulink做简单的电源仿真
  • 将 BOM 导出对接立创商城、LCSC实现一键采购

如果你动手完成了这个项目,欢迎在评论区晒出你的 PCB 截图!
有任何疑问也可以留言交流——我们一起把每一块板子都做得更好。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询