KiCad

技术栈
工具链
kicadedapcb原理图开源电子设计

概览

KiCad 技术栈概览

KiCad 是开源电子设计自动化(EDA)套件,由 Jean-Pierre Charras 于 1992 年创建,2013 年起由 CERN 资助开发。它提供原理图绘制、PCB 布局布线、Gerber 输出、3D 预览等完整电路设计流程,完全免费且无任何使用限制。

解决什么问题

  • 商业 EDA 成本:Altium Designer 年费数千美元,KiCad 完全免费且功能媲美
  • 设计自由度:无尺寸、层数、PIN 数限制,适合从 Arduino 扩展板到 16 层高速板
  • 开源可控:文件格式纯文本,适合 Git 版本管理,无供应商锁定
  • 社区协作:全球共享封装库、符号库,器件设计可复用

关键特性

  • 原理图编辑器 Eeschema:分层设计,ERC 电气规则检查,BOM 导出
  • PCB 编辑器 Pcbnew:交互式布线、推挤布线、差分对、长度匹配、3D Viewer
  • 集成封装编辑器:Footprint Editor 支持 IPC 标准封装创建
  • 3D 预览:内置 STEP 模型支持,电路板 3D 实时预览
  • 插件生态:Python 脚本扩展、交互式 HTML BOM、FreeRouting 自动布线

安装

KiCad 安装指南

1. 环境准备

平台 要求
Windows Windows 10/11 (64-bit),8GB+ RAM 推荐
macOS macOS 11 Big Sur 及以上(Intel/Apple Silicon)
Linux Ubuntu 20.04+ / Fedora 36+ / Debian 11+
通用 GPU 支持 OpenGL 2.1+(3D Viewer 需要)

KiCad 无其他强制依赖,自带所有必要组件。

2. 安装步骤

Windows

  1. 访问 https://www.kicad.org/download/windows/
  2. 下载最新稳定版(如 8.0.x)安装包
  3. 运行 .exe,按向导完成安装
  4. 推荐同时安装 3D 模型库(安装程序可选)

macOS

# Homebrew(推荐)
brew install --cask kicad

# 或从 https://www.kicad.org/download/macos/ 下载 .dmg

Linux

# Ubuntu(使用 KiCad 官方 PPA 获得最新版)
sudo add-apt-repository ppa:kicad/kicad-8.0-releases
sudo apt update
sudo apt install kicad

# Fedora
sudo dnf install kicad

# Arch
sudo pacman -S kicad kicad-library kicad-library-3d

# Flatpak(跨发行版)
flatpak install flathub org.kicad.KiCad

安装后验证

kicad-cli --version
# 或将 .kicad_pro 文件拖入 kicad 应用图标

3. 常见安装问题

问题 解决方案
3D 模型缺失 安装 kicad-packages3d 包或在 PCB 编辑器中设置 3D 库路径
启动崩溃 (Linux) 检查 OpenGL 驱动:glxinfo | grep "OpenGL",安装 mesa 驱动
字体显示异常 设置 → 首选项 → 选择系统中已安装字体
KiCad 6 升级到 8 格式兼容但有新增属性;建议用最新版打开旧项目后重新保存
macOS "无法验证开发者" 系统偏好设置 → 安全性与隐私 → 仍要打开
原理图符号/封装丢失 检查库路径:首选项 → 管理符号库 / 封装库 确认路径有效

示例

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)

  1. 工具 → 分配封装
  2. 关键封装:
元件 封装
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
  1. 运行 设计规则检查 (DRC) 确保封装分配无误。

三、PCB 布局布线 (Pcbnew)

设计参数

  • 层数:2 层(顶层信号 + 底层地平面)
  • 板厚:1.6mm
  • 最小线宽:0.25mm(10mil)
  • 最小间距:0.2mm(8mil)

布局要点

  1. 晶振尽量靠近 MCU 引脚(<10mm),下方不走数字线
  2. 去耦电容靠近对应 VDD 引脚,回路面积最小
  3. LDO 远离模拟敏感区域
  4. SWD 放在板边方便调试

走线

  • VCC 线宽 ≥ 0.5mm
  • GND 用覆铜(填充区域)
  • 信号线 0.25mm

设计规则检查

工具 → 设计规则检查 → 运行 DRC。

四、生成 Gerber 文件

  1. 文件 → 制造输出 → Gerber
  2. 层选择:F.Cu, B.Cu, F.Paste, B.Paste, F.Silkscreen, B.Silkscreen, F.Mask, B.Mask, Edge.Cuts
  3. 输出 → 生成钻孔文件(Excellon 格式)
  4. 用 Gerber 查看器(gerbv)验证所有层正确

五、关键点

  • 去耦电容是稳定性的生命线,每个 VDD 必须就近放置
  • 晶振负载电容值参考晶振 datasheet 计算:CL = (C1*C2)/(C1+C2) + Cstray
  • 2 层板底层尽量完整铺地,走线尽量在顶层
  • 工厂工艺能力:一般 6/6mil 线宽线距,嘉立创等可做到 4/4mil

KiCad 进阶:自定义封装与分层原理图设计

目标

创建自定义封装(Footprint),使用分层原理图管理复杂设计,导出 BOM 和装配图。

一、自定义封装:创建 SOT-23-5 封装

方法 1:封装向导(推荐)

  1. 封装编辑器 → 文件 → 新建封装 → 输入名称 SOT-23-5_Custom
  2. 工具封装生成器(或 Ctrl+Shift+F)
  3. 选择 SOT-23-5 预设
  4. 参数微调:
    • 焊盘尺寸:0.55mm × 0.8mm
    • 焊盘间距:0.95mm (pitch)
    • 本体尺寸:2.9mm × 1.6mm
  5. 点击 生成

方法 2:手动创建

步骤:
1. 放置焊盘 P1-P5(SMD,矩形)→ 属性设置尺寸和编号
2. 丝印层 (F.Silkscreen):绘制芯片外形框
3. 装配层 (F.Fab):绘制精确本体轮廓
4.  courty层 (F.Courtyard):比本体大 0.25mm 的禁止放置区域
5. 添加 REF** 和 VAL** 占位文本

封装验证(DRC)

工具 → 检查封装 → 确保无错误。

二、分层原理图设计

何时使用分层设计

  • 设计超过 2 张 A4 原理图
  • 功能模块需要复用(如电源部分)
  • 多人协作设计

创建层次标签

  1. 放置层次标签(Hierarchical Label)
  2. 命名规则:VCC_3V3, I2C_SDA, SPI_MOSI
  3. 跨页信号必须使用层次标签(而非普通 Local Label)

创建页面符号

  1. 放置页面符号(Sheet Symbol)
  2. 命名为 Power_Supply, MCU_Core, Sensor_Interface
  3. 在页面符号上右键从页面符号创建页面
  4. 在新页面中设计子电路

典型分层结构

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 8+)
kicad-cli sch export bom --output bom.csv project.kicad_sch

# 或使用交互式 BOM 插件
# 工具 → 生成 BOM (或在原理图编辑器中)

安装 Interactive HTML BOM 插件

# 下载
git clone https://github.com/openscopeproject/InteractiveHtmlBom.git

# 在 KiCad 插件管理器中添加路径
# 首选项 → 管理插件 → 从文件安装

使用:PCB 编辑器 → 工具 → 外部插件 → Interactive HTML BOM

四、制造文件打包脚本

#!/bin/bash
# export_gerber.sh — 一键导出制造文件

PROJECT="stm32_min_board"
OUTDIR="manufacturing/${PROJECT}_$(date +%Y%m%d)"

mkdir -p "$OUTDIR"

# Gerber 文件
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"

# BOM
kicad-cli sch export bom \
    --output "$OUTDIR/bom.csv" \
    --fields "Reference,Value,Footprint,Quantity,Datasheet" \
    "$PROJECT.kicad_sch"

# 原理图 PDF
kicad-cli sch export pdf \
    --output "$OUTDIR/schematic.pdf" \
    "$PROJECT.kicad_sch"

# 打包
cd "$OUTDIR/.." &;& zip -r "${PROJECT}_gerber.zip" "$(basename "$OUTDIR")/"

echo "✅ 制造文件导出完成: ${PROJECT}_gerber.zip"

五、关键点

  • 封装库管理:自定义封装单独放一个 .pretty 文件夹,便于团队共享
  • 分层设计:顶层只放页面符号和互联,子页面放具体电路
  • DRC 贯穿全流程:原理图 ERC → 封装检查 → PCB DRC → 最后检查
  • 制造文件:Gerber + 钻孔 + BOM + 坐标文件 = 完整生产数据

教程

KiCad 电路设计实践指南

本章目标

从零开始完成一块可投产的 PCB 设计,涵盖原理图设计规范、PCB 布局布线原则、DRC 与 DFM 检查。


1. 原理图设计规范

好的原理图 vs 坏的原理图

好的原理图 坏的原理图
信号从左到右流动 方向混乱
电源正上、地正下 电源/地到处乱飞
每页一个功能模块 所有东西挤一页
网络标签清晰命名 Net-(R1-Pad1)
去耦电容靠近芯片 电容远离芯片

命名规范

电源:  VCC_5V, VCC_3V3, VDD_CORE
地:    GND, AGND, PGND (模拟地/功率地区分)
总线:  I2C_SDA, SPI_MOSI, UART_TX
差分:  USB_DN, USB_DP

去耦电容放置原则

  • 每个 VDD 引脚旁放 100nF(高频去耦)
  • 每组电源加 10µF 钽/陶瓷(低频储能)
  • 电容物理位置:越近越好(<5mm)

2. PCB 布局原则

分区布局

┌──────────────────────────────┐
│  电源区(输入→LDO→输出)      │
├──────────────────────────────┤
│  数字区        │  模拟区      │
│  (MCU/逻辑)    │  (ADC/运放)  │
│                │              │
├──────────────────────────────┤
│       连接器/接口区            │
└──────────────────────────────┘

关键规则

  1. 晶体振荡器:距 MCU < 10mm,下方不走线
  2. 去耦电容:距 VDD 引脚 < 5mm,走线先经过电容再到引脚
  3. 模拟/数字分区:单点接地(0Ω 电阻或磁珠桥接)
  4. 高速信号:远离板边,避免直角走线

3. 走线与层叠

2 层板典型层叠

顶层 (F.Cu): 信号走线 + 少量地填充
底层 (B.Cu): 完整地平面 + 少量短线

线宽与电流

铜厚 1oz (35µm) 线宽 最大电流 (温升 10°C)
信号线 0.25mm ~1A
电源线 0.5mm ~2A
大电流 1.0mm ~3.5A
功率路径 2.0mm ~6A

以上为近似值,精确计算请使用 KiCad 自带计算器。


4. DRC 与 DFM 检查

DRC(设计规则检查)

检查项:
☑ 间距:线-线 ≥ 0.2mm, 线-焊盘 ≥ 0.2mm
☑ 环宽:过孔环宽 ≥ 0.15mm
☑ 丝印:不开窗、不重叠
☑ 未连线:所有 ratsnest 已布线

DFM(可制造性设计)

常见 DFM 问题:
✗ 焊盘太小 → 手工焊接困难
✗ 元件太密 → 无法机器贴装
✗ 板边无工艺边 → 无法 SMT 传送
✗ 无 Mark 点 → 贴片机无法定位

5. 检查清单(送厂前)

□ 所有网络已布线(无飞线)
□ DRC 无错误
□ 丝印清晰、方向一致
□ 已加版本号和日期
□ Edge.Cuts 闭合
□ 3D 预览确认元件不干涉
□ Gerber 各层已用 gerbv 检查

思考题

  1. 为什么高速信号要避免 90° 直角转弯?
  2. 模拟地和数字地分开后如何连接?
  3. 四层板相比二层板有什么优势?什么场景必须用四层?