KiCad 实战:从原理图到 Gerber 的 STM32 最小系统板
目标
使用 KiCad 完成一个 STM32F103C8T6 最小系统板的设计流程:原理图 → 封装分配 → PCB 布局布线 → 生成 Gerber。
一、工程创建与原理图
1. 新建工程
KiCad → 文件 → 新建工程 → "stm32_min_board"
2. 原理图页面设置
打开 原理图编辑器 (Eeschema) → 文件 → 页面设置 → A4,标题栏填写项目信息。
3. 放置核心元件
| 元件 |
符号库路径 |
值 |
| MCU |
MCU_ST_STM32F1:STM32F103C8Tx |
STM32F103C8T6 |
| LDO |
Regulator_Linear:AMS1117-3.3 |
AMS1117-3.3V |
| 晶振 8MHz |
Device:Crystal |
8MHz |
| 晶振 32.768kHz |
Device:Crystal |
32.768kHz |
| USB 连接器 |
Connector:USB_B_Micro |
Micro USB |
| 去耦电容 ×5 |
Device:C |
100nF, 10µF |
| SWD 调试口 |
Connector:Conn_01x04_Male |
SWD |
4. 关键连线
USB → 5V → AMS1117 → 3.3V → VDD (STM32)
↓
100nF ×4 (每个 VDD 引脚旁)
10µF (LDO 输出)
8MHz 晶振 → OSC_IN / OSC_OUT (PF0/PF1) + 22pF 负载电容 ×2
32.768kHz → PC14/PC15 + 12pF ×2
SWD: VCC/GND/SWDIO/SWCLK → PA13/PA14
5. 电气规则检查(ERC)
工具 → 电气规则检查 → 运行。确保无错误。
二、封装分配 (CvPcb)
- 工具 → 分配封装
- 关键封装:
| 元件 |
封装 |
| STM32F103C8T6 |
Package_QFP:LQFP-48_7x7mm_P0.5mm |
| AMS1117-3.3 |
Package_TO_SOT_SMD:SOT-223-4 |
| 8MHz 晶振 |
Crystal:Crystal_SMD_5032-2Pin_5.0x3.2mm |
- 运行 设计规则检查 (DRC) 确保封装分配无误。
三、PCB 布局布线 (Pcbnew)
设计参数
- 层数:2 层(顶层信号 + 底层地平面)
- 板厚:1.6mm
- 最小线宽:0.25mm(10mil)
- 最小间距:0.2mm(8mil)
布局要点
- 晶振尽量靠近 MCU 引脚(<10mm),下方不走数字线
- 去耦电容靠近对应 VDD 引脚,回路面积最小
- LDO 远离模拟敏感区域
- SWD 放在板边方便调试
走线
- VCC 线宽 ≥ 0.5mm
- GND 用覆铜(填充区域)
- 信号线 0.25mm
设计规则检查
工具 → 设计规则检查 → 运行 DRC。
四、生成 Gerber 文件
- 文件 → 制造输出 → Gerber
- 层选择:F.Cu, B.Cu, F.Paste, B.Paste, F.Silkscreen, B.Silkscreen, F.Mask, B.Mask, Edge.Cuts
- 输出 → 生成钻孔文件(Excellon 格式)
- 用 Gerber 查看器(gerbv)验证所有层正确
五、关键点
- 去耦电容是稳定性的生命线,每个 VDD 必须就近放置
- 晶振负载电容值参考晶振 datasheet 计算:
CL = (C1*C2)/(C1+C2) + Cstray
- 2 层板底层尽量完整铺地,走线尽量在顶层
- 工厂工艺能力:一般 6/6mil 线宽线距,嘉立创等可做到 4/4mil
KiCad 进阶:自定义封装与分层原理图设计
目标
创建自定义封装(Footprint),使用分层原理图管理复杂设计,导出 BOM 和装配图。
一、自定义封装:创建 SOT-23-5 封装
方法 1:封装向导(推荐)
- 封装编辑器 → 文件 → 新建封装 → 输入名称
SOT-23-5_Custom
- 工具 → 封装生成器(或 Ctrl+Shift+F)
- 选择
SOT-23-5 预设
- 参数微调:
- 焊盘尺寸:0.55mm × 0.8mm
- 焊盘间距:0.95mm (pitch)
- 本体尺寸:2.9mm × 1.6mm
- 点击 生成
方法 2:手动创建
步骤:
1. 放置焊盘 P1-P5(SMD,矩形)→ 属性设置尺寸和编号
2. 丝印层 (F.Silkscreen):绘制芯片外形框
3. 装配层 (F.Fab):绘制精确本体轮廓
4. courty层 (F.Courtyard):比本体大 0.25mm 的禁止放置区域
5. 添加 REF** 和 VAL** 占位文本
封装验证(DRC)
工具 → 检查封装 → 确保无错误。
二、分层原理图设计
何时使用分层设计
- 设计超过 2 张 A4 原理图
- 功能模块需要复用(如电源部分)
- 多人协作设计
创建层次标签
- 放置 → 层次标签(Hierarchical Label)
- 命名规则:
VCC_3V3, I2C_SDA, SPI_MOSI 等
- 跨页信号必须使用层次标签(而非普通 Local Label)
创建页面符号
- 放置 → 页面符号(Sheet Symbol)
- 命名为
Power_Supply, MCU_Core, Sensor_Interface 等
- 在页面符号上右键 → 从页面符号创建页面
- 在新页面中设计子电路
典型分层结构
Root (顶层)
├── Power_Supply.sch # 电源管理
│ ├── USB 5V 输入
│ ├── AMS1117 3.3V LDO
│ └── 去耦电容网络
├── MCU_Core.sch # 主控核心
│ ├── STM32 + 晶振
│ ├── SWD 调试口
│ └── 复位电路
├── Sensor_Interface.sch # 传感器接口
│ ├── DHT22 温湿度
│ ├── BH1750 光照
│ └── I²C 总线
└── Display.sch # 显示
└── SSD1306 OLED
引脚表导出
工具 → 生成引脚表 → 检查所有对外接口。
三、BOM 生成与插件
标准 BOM 导出
kicad-cli sch export bom --output bom.csv project.kicad_sch
安装 Interactive HTML BOM 插件
git clone https:
使用:PCB 编辑器 → 工具 → 外部插件 → Interactive HTML BOM
四、制造文件打包脚本
PROJECT="stm32_min_board"
OUTDIR="manufacturing/${PROJECT}_$(date +%Y%m%d)"
mkdir -p "$OUTDIR"
kicad-cli pcb export gerber \
--output "$OUTDIR/" \
--layers F.Cu,B.Cu,F.Paste,B.Paste,F.Silkscreen,B.Silkscreen,F.Mask,B.Mask,Edge.Cuts \
"$PROJECT.kicad_pcb"
kicad-cli pcb export drill \
--output "$OUTDIR/" \
--format excellon \
--excellon-zeros-format decimal \
"$PROJECT.kicad_pcb"
kicad-cli sch export bom \
--output "$OUTDIR/bom.csv" \
--fields "Reference,Value,Footprint,Quantity,Datasheet" \
"$PROJECT.kicad_sch"
kicad-cli sch export pdf \
--output "$OUTDIR/schematic.pdf" \
"$PROJECT.kicad_sch"
cd "$OUTDIR/.." &
echo "✅ 制造文件导出完成: ${PROJECT}_gerber.zip"
五、关键点
- 封装库管理:自定义封装单独放一个
.pretty 文件夹,便于团队共享
- 分层设计:顶层只放页面符号和互联,子页面放具体电路
- DRC 贯穿全流程:原理图 ERC → 封装检查 → PCB DRC → 最后检查
- 制造文件:Gerber + 钻孔 + BOM + 坐标文件 = 完整生产数据