🔧 FOC 驱动板硬件设计 · 通用要点与避坑指南
从零开始画第一块 FOC 关节驱动板:分模块详解、芯片选型、PCB Layout 核心原则与踩坑经验汇总。
面向准备自己画驱动板的硬件初学者,读完能照着清单画出并调通一块 24V/5A 起步的小功率驱动板。
FOC 驱动
硬件设计
芯片选型
PCB Layout
电流采样
避坑指南
🎯 本页学习目标
1. 能说出 FOC 驱动板的 8 大功能模块,并画出「电源→MCU→栅驱→半桥→电机」的完整信号流
2. 能依据母线电压与相电流,独立完成 MCU、栅极预驱、MOSFET、电源与磁编码器的入门级选型
3. 能说清电流采样的三种方案(三电阻/双电阻/单电阻)与 Kelvin 连接、偏置电压、ADC 采样时机三大要点
4. 能按「功率环路最小化、栅极开尔文连接、采样差分走线、地平面单点连接」四条铁律规划 PCB Layout
5. 能按正确顺序完成第一次上电调试,并对照血泪踩坑清单快速定位炸管、噪声、发热等常见故障
建议用时:约 45 分钟
💡 给新手的建议:第一块板子不要追求完美,建议从24V/5A 以内的小功率驱动板做起,芯片选用集成度高的方案(如 DRV8313 内置 MOS),把 FOC 跑通是第一目标。等第一块板子调通了,再做高功率版本。
1 驱动板整体架构:分哪几个部分?
一块完整的 FOC 关节驱动板,按功能可以划分为 8 个核心模块。信号流向是:电源输入 → 电源管理 → MCU 产生 PWM → 栅极预驱放大 → MOS 桥输出 → 电机转动;同时电流采样信号反馈给 MCU 形成闭环。
信号流向总图
┌─────────────────────────────────────────────────────────────────────┐
│ 电源输入 (24V/48V DC) │
│ 防反接PMOS ─── TVS浪涌 ─── 大电解电容(220μF~1000μF) ─── 保险丝 │
└──────────────────────────────┬──────────────────────────────────────┘
│
┌───────────────────┼───────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────────┐
│ DC-DC Buck │ │ 栅极预驱 │ │ 三相逆变桥 │
│ 24V→12V/5V │ │ (DRV8323/ │ │ 6x N-MOSFET │
│ LDO→3.3V │ │ MP6539) │ │ U/V/W三相输出 │
└──────┬──────┘ └──────┬──────┘ └────────┬────────┘
│ │ │
▼ │ PWM(6路) │ 相电流
┌─────────────┐ │ ┌─────────┴────────┐
│ MCU最小系统 │◄──────────┘ │ 电流采样(运放) │
│ STM32G474 │◄───SPI(编码器)───────┤ 采样电阻+放大 │
│ 晶振/SWD │◄───CAN/EtherCAT │ 低通滤波→ADC │
└──────┬──────┘ └──────────────────┘
│
▼
┌─────────────┐ ┌─────────────┐ ┌─────────────────┐
│ 磁编码器 │ │ 温度NTC │ │ 抱闸/制动驱动 │
│ AS5047P │ │ 过温保护 │ │ 电磁刹车控制 │
└─────────────┘ └─────────────┘ └─────────────────┘
2 芯片选型推荐(入门级 → 进阶级)
主控 MCU 选型
| 型号 | 主频 | 特点 | 适用场景 |
| STM32G431CBU6 | 170MHz | 电机控制专用,内置快速 ADC(4Msps)、数学加速器、HRTIM,QFN48 封装小巧 | ⭐ 入门首选,性价比极高 |
| STM32G474RET6 | 170MHz | G4 顶配,LQFP64,更多 ADC 通道、高级定时器、CAN-FD,资源充足 | ⭐ 关节驱动首选,资源丰富 |
| STM32F405RGT6 | 168MHz | 经典型号,资料极多,FPU,但 ADC 速度不如 G4 | 熟悉 F4 系列可选 |
| GD32F470ZGT6 | 240MHz | 国产 Pin-to-Pin 兼容 STM32,主频更高,价格便宜约 30% | 成本敏感量产 |
栅极预驱芯片选型
| 型号 | 厂商 | 特点 | 适用场景 |
| DRV8313 | TI | 内置 MOSFET(半桥),峰值 2.5A,外围极简,不需要外挂 MOS 和采样电阻 | ⭐ 第一块板子强烈推荐!跑通算法首选 |
| DRV8323RS | TI | 外置 MOS,内置 3 路 CSA 电流采样放大器、SPI 可调增益/死区/过流阈值、内置 Buck 降压 | ⭐ 工业关节首选,功能最全 |
| MP6539/MP6540H | MPS | 高性价比,硬件引脚配置(无需 SPI),内置过流保护,国产替代热门 | 性价比方案,立创开源常用 |
| FD6288Q | Fortior | 航模电调常用,价格极低(<5 元),但无保护功能,不推荐新手用 | 低成本低压方案 |
| EG2133 | 屹晶微 | 国产替代 IR2104,3 半桥驱动,价格便宜 | 纯国产 BOM 方案 |
MOSFET 选型(外置 MOS 方案)
| 电压等级 | 推荐型号 | VDS | RDS(on) | 适用电流 |
| 24V 系统 | AOD4184 / IRFR7440 | 40V | ~8mΩ | 持续 10A,峰值 30A |
| 48V 系统 | IPT007N06N / BSC010N04LS | 60V/40V | 0.7~10mΩ | 持续 20~50A,峰值 80A+ |
| 大功率 | IRFS7530 / HY3508 | 60V/80V | ~2mΩ | 持续 50A+,需散热片 |
MOS 选型关键:VDS 耐压 ≥ 1.5 倍母线电压(24V 选 ≥40V,48V 选 ≥80V);ID 连续电流 ≥ 2~3 倍额定电流;RDS(on) 越小发热越小,但 Qg(栅极电荷)会增大,需折中。
电源芯片选型
| 功能 | 推荐型号 | 说明 |
| 24V→5V/5A Buck | XL4015 / MP2451 / TPS54560 | 给编码器、CAN 收发器、预驱 Buck 供电 |
| 5V→3.3V LDO | AMS1117-3.3 / ME6211 | 给 MCU 数字部分供电,注意压差 |
| 3.3V 模拟 VDDA | TLV1117-3.3 + LC 滤波磁珠 | ADC 参考电源必须和数字电源隔离! |
磁编码器选型
| 型号 | 分辨率 | 接口 | 特点 |
| AS5047P | 14bit (16384 线) | SPI + ABI | ams 经典款,DAEC 动态角度误差补偿,行业标杆 |
| MT6816 | 14bit | SPI + ABI | 国产替代,价格便宜(约 AS5047P 一半),性能接近 |
| MA730 | 14bit | SPI | MPS 出品,简单易用,适合入门 |
| AS5600 | 12bit | I2C/PWM | 最便宜,但分辨率低(4096 线),不适合高精度 FOC |
3 各模块原理图设计要点(逐个击破)
① 电源输入与保护 ⚡
- 防反接:推荐 PMOS 方案(如 IRF4905),压降比二极管小很多,大电流不发热;简单方案用肖特基二极管(SS54/SS34)但有 0.3~0.5V 压降
- 浪涌保护:电源入口并联 TVS 管(SMBJ33CA 用于 24V 系统,SMBJ58CA 用于 48V 系统),钳位瞬态过电压
- 母线电容:大容量电解电容(220μF~1000μF,耐压 ≥1.5 倍 VBUS)+ 100nF 陶瓷电容组合,必须尽量靠近 MOS 半桥放置!这是决定板子性能的第一要素
- 制动泄放:电机制动时能量回灌母线,需制动电阻+NMOS 泄放回路,防止母线过压炸毁电容
- 保险丝:自恢复保险丝(PPTC)或一次性保险丝,过流时断开保护
② DC-DC 电源管理 🔋
- 功率级分离:模拟 3.3V(VDDA 给 ADC 参考)和数字 3.3V(VDD 给 MCU 核心)必须通过磁珠/0Ω 电阻隔离,防止数字开关噪声耦合进 ADC
- 三级去耦:每个 IC 的 VCC 引脚就近放 0.1μF 陶瓷电容(0402) → 旁边放 10μF 钽电容/陶瓷 → 板级放 100μF 电解
- Buck 布局铁律:输入电容→IC→电感→输出电容,这个环路面积必须最小!电感下方不要走信号线,SW 开关节点铜皮尽量小
- GVDD 供电:如果预驱没有内置 Buck(如 DRV8303),需要外置 12V 给预驱供电
③ MCU 最小系统 🧠
- 晶振:用 8MHz 或 25MHz 贴片晶振(3225 封装),不要用插件 49S!晶振紧贴 MCU OSC_IN/OSC_OUT 引脚,负载电容按 datasheet 选(通常 8~18pF)
- 复位:10kΩ 上拉电阻 + 100nF 电容到 GND,加一个复位按键
- SWD 调试接口:4Pin(SWDIO/SWCLK/GND/3.3V),必须预留!没有 SWD 就没法下载调试程序
- BOOT 配置:BOOT0 引脚 10k 下拉,保持正常 Flash 启动;可预留跳帽选进入 System Loader(串口下载)
- VDDA 滤波:VDDA 引脚先经过 10Ω 电阻/磁珠,再接 10μF+100nF 电容到 VSSA,这是 ADC 精度的关键!
④ 栅极预驱电路 📡
- 自举电容:每个半桥 1 个 0.1~1μF X7R 陶瓷电容(0805),耐压 ≥25V,必须紧贴预驱芯片 BOOT 和 PHASEx 引脚放置,走线长度 ≤5mm!
- 自举二极管:快恢复二极管(如 BAS216/FR107)或预驱内置,方向不要接反
- 栅极电阻 Rg:串联在预驱输出→MOS 栅极之间,通常 10~33Ω,必须紧贴 MOSFET 栅极焊盘放置(不是预驱端!),抑制栅极振铃
- nFAULT 引脚:必须接 MCU 外部中断!过流/过温/欠压时预驱拉低 nFAULT,MCU 必须立即关断 PWM
- 死区时间:硬件设置 200~500ns,或 MCU 寄存器设置,防止上下桥直通炸毁 MOS
⑤ 三相逆变桥(MOS 半桥)🔌
- 6 颗 N-MOS:3 个上桥臂(D 接 VBUS,S 接相输出)+ 3 个下桥臂(D 接相输出,S 接 PGND)
- 功率环路最小化:母线电容+ → 上桥 MOS → 相输出 → 下桥 MOS → 母线电容-,这个环路面积是决定 EMI 和开关噪声的第一要素,能做多小做多小!
- 星形接地点:3 个下桥臂 MOS 的源极必须汇聚到同一点(星形接地),这同时也是母线电容负极、采样电阻、预驱 PGND 的共同连接点
- 散热:MOS 漏极焊盘下方打 9 个以上 0.3mm 过孔阵列,连接到底层铺铜散热;大功率必须加散热片
- 封装选择:入门用 TO-252(DPAK)便于手工焊接,量产用 DFN5x6/TOLL 封装散热更好
⑥ 电流采样电路 📊(FOC 最关键的模拟部分!)
⚠️ 电流采样是 FOC 板成败的关键!采样不准,FOC 算法再好也跑不起来。这部分是新手最容易踩坑的地方,一定要仔细看。
三种采样方案对比:
| 方案 | 原理 | 成本 | 精度 | 推荐度 |
| 三电阻下桥采样 | 每相下桥源极串采样电阻到 GND | 低 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ 工业首选 |
| 双电阻采样 | 两相下桥采样,第三相计算 | 最低 | ⭐⭐⭐ | ⭐⭐⭐ 够用 |
| 单电阻母线采样 | 母线串 1 个电阻,SVPWM 扇区重构 | 最低 | ⭐⭐ | ⭐⭐ 算法复杂,不推荐新手 |
| 霍尔电流传感器 | ACS712/ACS758 等非接触式 | 高 | ⭐⭐ | ⭐⭐ 大电流隔离场景用 |
采样电路设计核心要点:
- 采样电阻选型:精密合金电阻(毫欧级,0.5~20mΩ),精度 ≥1%,温漂 ≤50ppm/°C,功率留足余量(P=I²R,峰值功率按 3 倍以上留)
- Kelvin(开尔文)连接:从电阻焊盘内侧单独引两根细线到运放输入端,不要和电流主回路共用焊盘!这是避免铜箔压降引入误差的关键
- 采样放大器:用预驱内置 CSA(DRV8323 内置 3 路,增益可调 10/20/40/80V/V),或外置 INA240/AD8418 电流检测专用运放(共模抑制比高)
- 偏置电压:单电源供电时输出加 1.65V 偏置(3.3V 的一半),可测双向电流(正负电流);偏置电压必须用运放缓冲或精密分压,不能直接电阻分压
- RC 低通滤波:采样信号到 ADC 之间加 100Ω+1nF 低通滤波,滤除开关噪声,截止频率约 1.6MHz
- ADC 采样时机:必须在 PWM 导通中段(开关动作完成、电流稳定后)触发 ADC 采样,避开开关瞬态!在 TIM1/TIM8 的 CCR4/CCR5 位置触发
- AGND 单点连接:模拟地和功率地只能在采样电阻附近一个点连接(用过孔/0Ω 电阻),不能有多点连接形成地环路
⑦ 编码器接口 🎯
- SPI 通信:磁编码器用 SPI 接口读取角度,CS/SCK/MISO/MOSI 四根线,建议串联 33Ω 电阻抑制信号反射
- ABI 增量输出:如果用增量编码器模式,ABZ 差分信号建议加 RS422 收发器(如 AM26LV32)接收,抗干扰能力强
- 编码器供电:5V 或 3.3V(看编码器规格),必须加 0.1μF+10μF 去耦电容,磁编码器芯片下方不要走高速信号
- 远离干扰源:编码器 SPI 线远离电机三相线和 PWM 开关节点,必要时用屏蔽线
⑧ 通信与辅助电路 🌐
- CAN 总线:TJA1050/TJA1042/TCAN1042 收发器,H/L 线之间加 120Ω 终端电阻(只在总线两端加,不是每个节点都加!)
- 温度采样:MOS 旁边放 10k NTC 热敏电阻(1% 精度,B 值 3950),分压后接 ADC,温度超过 85°C 时软件降功率
- 母线电压采样:电阻分压(如 100k:2.2k)将 VBUS 降到 3.3V 以内,接 ADC 检测过压/欠压
- 抱闸驱动:电磁制动器 24V 供电,用 NMOS 低边开关驱动,栅极串 1kΩ+10k 下拉;必须加续流二极管(FR107/SS34),方向:阳极接漏极(抱闸负端),阴极接 24V!否则关断瞬间反电动势会击穿 MOS
- 抱闸时序:上电时先使能电机驱动(建立力矩)再打开抱闸;断电时先关抱闸刹住再断驱动!否则机械臂会掉落!
- LED 指示灯:电源灯(红色)、运行灯(绿色)、故障灯(红色),调试时看灯就能知道状态
- 测试点(TP):关键信号必须加测试点!VBUS、3.3V、5V、相电压 U/V/W、采样输出、nFAULT、编码器 CS/SCK,每个测试点直径 ≥1mm,方便示波器探针勾
4 PCB Layout 核心原则(决定板子能不能用!)
⚠️ 记住这个真理:在电力电子领域,Layout = Design。原理图对了但 Layout 错了,板子一样炸。FOC 驱动板的 Layout 难度远大于普通单片机板,因为这里同时有大电流(di/dt 数百 A/μs)、高电压跳变(dv/dt 数百 V/ns)、和毫伏级微弱模拟信号。
PCB 层数与叠层建议
| 层数 | 叠层方案 | 适用场景 | 成本 |
| 2 层板 | Top(信号+功率) / Bottom(地平面) | 入门学习,24V/5A 以内,成本最低 | 低 (~5 元/10 片) |
| 4 层板 | Top(信号) / GND(完整地) / Power(电源) / Bottom(信号+功率) | 推荐!性能好成本适中,关节驱动首选 | 中 (~30 元/10 片) |
| 6 层板 | Top / GND / Signal / Power / GND / Bottom | 大功率/高可靠性工业产品 | 高 |
功能分区布局(推荐布局图)
┌─────────────────────────────────────────────────────────┐
│ 电源输入 │ 通信接口(CAN/USB) │ SWD调试口 │
│ (防反接/TVS) │ [边缘,远离功率区] │ [板边缘] │
├──────────────┼─────────────────────────┼────────────────┤
│ │ │ │
│ DC-DC │ MCU最小系统 │ 编码器接口 │
│ (Buck/LDO) │ (晶振紧贴MCU) │ (SPI/ABZ) │
│ │ ◄── 主控区 ──► │ │
├──────────────┼─────────────────────────┼────────────────┤
│ │ │ │
│ 母线大电容 │ 栅极预驱芯片 │ 电流采样运放 │
│ ◄───────────┤ (DRV8323/MP6539) │ (Kelvin连接!) │
│ 功率环路 │ │ ◄─ 模拟区 ──► │
│ 最小化! │ 6颗MOSFET半桥 │ (AGND隔离) │
│ [高功率区] │ (散热铺铜+过孔阵列) │ │
│ │ U/V/W相输出 │ NTC/电压采样 │
└──────────────┴─────────────────────────┴────────────────┘
▲ 布局原则:功率区在一侧,模拟区在另一侧,MCU 居中,接口在板边缘
Layout 第一性原理:控制三个关键环路
🔴 环路 1:主功率环路(最最重要!)
路径:母线电容+ → 上桥 MOS → 电机相线 → 下桥 MOS → 母线电容-
铁律:这个环路的面积必须做到最小!di/dt 可达数百 A/μs,环路面积每增大 1mm²,寄生电感就增大,开关振铃和 EMI 就会急剧增加。电容必须直接放在 MOS 旁边,不要经过任何走线!
🔴 环路 2:栅极驱动环路
路径:预驱 HO/LO → Rg → MOS 栅极 → MOS 源极 → 预驱 PGND
铁律:栅极电阻 Rg必须紧贴 MOS 栅极焊盘放置(不是预驱端!),走线长度 ≤10mm。Rg 放在 MOS 端可以利用电阻阻尼直接抑制栅极 LC 振铃。同一相 HO 和 LO 走线长度差 ≤2mm。
🔴 环路 3:电流检测环路(最敏感!)
路径:采样电阻两端 → 运放/CSA 输入端 → ADC
铁律:采样线必须用Kelvin 连接(从电阻焊盘内侧单独引线),差分走线,全程包地,与所有开关节点(PHASE/HO/LO)保持 ≥3mm 间距,绝对不能平行走线,必须交叉时用 90° 垂直交叉。
地平面处理策略
- 整板铺完整的 GND 平面(4 层板用内层 2 做完整地),不要切碎地平面!
- 功率地(PGND)和模拟地(AGND)物理分离:模拟采样区下方铺独立的 AGND 铜皮,AGND 和 PGND 之间只在采样电阻附近一个点连接(用 0Ω 电阻/1mm 过孔)
- 数字地(DGND)直接接 PGND 即可,MCU 数字噪声比功率回路小很多
- 所有去耦电容 GND 焊盘直接打过孔到地平面,过孔数量 ≥2 个,直径 ≥0.3mm
- 不要用细走线连接 AGND 和 PGND!必须用低阻抗的宽铜皮或过孔单点连接,否则 AGND 电位会随 PGND 电流波动漂移
布线规则汇总
| 信号类型 | 线宽 | 布线要求 |
| 功率路径(VBUS/相输出) | ≥1mm(40mil),2oz 铜厚 | 尽量宽,多过孔,远离敏感信号 |
| 地线(GND) | 尽量宽,铺铜 | 完整平面,多过孔连接各层 |
| PWM 栅极驱动 | 0.3~0.5mm(12~20mil) | 短直,同相等长,远离采样线 |
| 电流采样线 | 0.15~0.2mm(6~8mil) | 差分对,包地,Kelvin 连接,远离开关节点 |
| SPI/编码器 | 0.2~0.3mm(8~12mil) | 等长,包地,串联 33Ω 阻尼电阻 |
| 普通 GPIO | 0.2mm(8mil) | 常规布线即可 |
热设计要点
- MOS 散热:漏极(Drain)焊盘下方打 3×3 以上过孔阵列(孔径 0.3mm),连接到内层/底层 GND 铜皮散热,铜皮面积尽量大
- 预驱散热焊盘:芯片底部 Exposed Pad 必须接 GND,打 9 个以上过孔到地平面
- 铜厚选择:大功率选 2oz(70μm)铜厚,比 1oz 铜厚可降低 MOS 结温约 8°C
- 采样电阻发热:不要在采样电阻上方放电解电容等温度敏感器件,大功率采样电阻也要打过孔散热
- 预留散热片空间:3D 视图中检查 MOS 上方预留 ≥10mm 高度安装散热片
制造工艺适配(嘉立创标准)
- 最小线宽/线距:6mil(0.15mm),建议用 8mil 更保险
- 过孔:0.3mm 钻孔 + 0.6mm 焊盘(BGA 除外),过孔不要打在焊盘上(会塞孔不良)
- 丝印:文字高度 ≥30mil(0.76mm),字宽 ≥6mil,不要印在焊盘上
- 测试点:焊盘直径 ≥1mm,阻焊开窗,方便探针接触
- 板边定位孔:4 个 Φ3.2mm 安装孔,孔内不覆铜(或覆铜加螺丝孔隔离)
5 必加测试点 + 上电调试 Checklist
图 1:驱动板「投板 → 闭环」避坑检查流程——七步顺序推进,三处高危关卡(短路 / 电源 / 栅极波形)不通过立即返修重测,与下方上电步骤清单一一对应
必须预留的测试点(不加会后悔!)
- TP_VBUS:母线电压,先测这个确认电源没短路
- TP_12V/TP_5V/TP_3V3:各路电源输出,上电前必测
- TP_GND:多放几个 GND 测试点,示波器探头接地夹用
- TP_U/TP_V/TP_W:三相相电压输出点,观测 SVPWM 波形
- TP_IU/TP_IV/TP_IW:电流采样运放输出,观测电流波形
- TP_nFAULT:预驱故障引脚,过流时会拉低
- TP_ENC_CS/ENC_SCK:编码器 SPI 通信,调试通信时用
- TP_CANH/CANL:CAN 总线差分信号
第一次上电调试步骤(严格按顺序!)
1静态短路检查
不上电,万用表测各电源对 GND 电阻,确认没有短路
2限流供电
限流电源供电(电流限制在 100mA),先不接电机
3测各路电源
测 3.3V/5V/12V 是否正常,有没有发烫
4SWD 下载
接 SWD 下载器,确认能识别 MCU,下载测试程序(点灯)
5测栅极波形
输出 50% 占空比 PWM,示波器测栅极波形,确认没有振铃/直通
6开环测试
接电机(先不接负载),跑开环测试,测三相电流正弦度
7零点校准
校准电流采样零点和编码器零位
8闭环 FOC
闭环 FOC,速度环→位置环,逐步加负载
⚠️ 上电安全第一!
1. 第一次上电一定要用限流电源(电流限制在 100~200mA),有问题电源会自动限流不会炸
2. 手不要离开电源开关,闻到异味或看到冒烟立刻断电
3. 先不接电机,确认驱动波形正常再接电机
4. MOS 管栅极波形没调好之前,不要接高压大电流,先用低压(12V)小电流测试
数值算例:母线电容容量估算(I = C·dv/dt 纹波法)
以进阶板口径 48V/20A 系统(对应第 2 节 MOSFET 选型表 48V 档,持续 20~50A)为例:目标母线纹波 ΔV = 1V,开关频率 fsw = 20kHz,最坏占空比 D=0.5 时母线电容下限:
C ≥ I / (4 · fsw · ΔV) = 20 / (4 × 20000 × 1) = 250 μF
→ 选 2 × 220μF 电解并联(440μF,留约 1.76 倍裕量)+ 多颗 1~10μF MLCC 紧贴半桥
(对照 09 页《FOC 驱动器硬件深挖》4.2 节:10A/ΔV=0.5V 口径同样算得 250μF,结论一致)
若按本页 24V/5A 起步口径代入同一公式:C ≥ 5/(4×20000×1) = 62.5μF,选 1 颗 100μF 电解即可——电流减小 4 倍,电容需求同比缩小,公式与电压无关、只由 I 和 fsw 决定。
两段关键伪代码:ADC 注入触发 + nFAULT 故障中断
① ADC 注入触发采样(TIM1 CC4 触发注入组、JEOS 中断读三相,对应上文「PWM 导通中段触发」铁律):
// ---- 初始化:让硬件在每个 PWM 周期中段自动触发一次三相电流采样 ----
TIM1->CCR4 = TIM1->ARR / 2; // 采样点设在 PWM 周期中段,避开开关瞬态
TIM1->CCER |= TIM_CCER_CC4E; // 使能 CC4 通道作触发源
ADC1->JSQR = (ch_IU << 0) | (ch_IV << 6) | (ch_IW << 12) | (3 << 20); // 注入组 3 通道:U/V/W
// (此后每个 PWM 周期硬件自动转换一次注入组,CPU 零干预、时刻确定)
// ---- JEOS 中断:注入组转换结束,一次性读走三相 ----
void ADC1_2_IRQHandler(void)
{
if (ADC1->ISR & ADC_ISR_JEOS) {
ADC1->ISR = ADC_ISR_JEOS; // 写 1 清标志
iu = (int16_t)(ADC1->JDR1 - off_u) * k_gain; // 三相电流一次读齐
iv = (int16_t)(ADC1->JDR2 - off_v) * k_gain;
iw = (int16_t)(ADC1->JDR3 - off_w) * k_gain;
foc_current_loop(iu, iv, iw); // 喂给 FOC 电流环,同周期闭环
}
}
② nFAULT 故障中断(预驱过流/过温/欠压时拉低 nFAULT,对应上文「nFAULT 必须接 MCU 外部中断」):
void EXTI_nFAULT_IRQHandler(void) // nFAULT 下降沿触发
{
uint32_t st = drv8323_read_reg(REG_FAULT_STATUS); // ① 读故障寄存器,锁存原因
g_fault_log = st; // (VDS_OCP/GDF/UVLO/OTSD...留档)
tim1_pwm_shutdown(); // ② 立即关 PWM:清 MOE,六路输出强制关断
g_fault_flags |= FAULT_DRIVER; // ③ 置全局故障标志,主循环决定复位/降级
// 原则:中断内只做「读状态 + 停机 + 记标志」三件事;
// 不做慢速 SPI 重试、不打印日志、更不在此处重启 PWM
}
6 立创开源参考项目(直接抄作业!)
强烈建议先在立创开源平台上找一个成熟项目,把原理图和 PCB 看懂了再开始画自己的。站在巨人肩膀上,不要从零开始!
进入 →
⭐
关节电机 FOC 驱动板(STM32G431 + MP6539)
立创开源广场热门项目,完整原理图+PCB+固件源码可直接下载,软硬件全开源,是自己画驱动板最好的参考!主控 STM32G431,预驱 MP6539,支持磁编码器,适合关节驱动入门。立创开源⭐ 强烈推荐参考原理图+PCB+源码
进入 →
⭐
MPS 关节电机全栈解决方案(基于 STM32G431 FOC)
MPS 官方比赛开源项目,基于 STM32G431 + MP6540H,已实现完整 FOC 主链路,包含设计文件原理图以及 PCB 图的完整工程文件,Github 有完整代码。立创开源MPS 官方完整工程
进入 →
🔌
EtherCAT 总线迷你 FOC 驱动器(STM32G474)
支持 EtherCAT 总线的微型 FOC 驱动器,STM32G474RE 主控,支持温度采集、USB 上报数据、有感 FOC,适合做总线型关节驱动参考。立创开源EtherCATSTM32G474
进入 →
🐱
SimpleFOC 驱动板(CatFOC 基础模板)
基于 SimpleFOC 生态的驱动板,STM32G431 主控,带电流采样、MA730 磁编码器,预留串口,接口 GH1.25/MX1.25,适合入门 SimpleFOC。立创开源SimpleFOC入门友好
进入 →
🔧
4310 永磁同步电机 FOC 驱动板
专为 GIM4310 电机设计的驱动板,主控+电源板+驱动板分离设计,使用 RS624XQ 运放做电流采样,可参考其分层设计思路。立创开源分离式设计
推荐学习的开源固件项目
进入 →
⭐
SimpleFOC(最适合入门的开源 FOC 库)
支持 Arduino/STM32/ESP32 等多种平台,文档完善,社区活跃,配套 SimpleFOC Mini/Shield 等硬件,是入门 FOC 算法和驱动的最好起点。官方开源⭐ 入门首选
进入 →
⚙️
ODrive(开源高性能伺服控制器)
开源高性能无刷电机控制器,支持 FOC、双电机控制、USB/CAN 通信,性能接近工业伺服,硬件设计非常成熟规范,硬件设计参考价值极高。Github高性能硬件设计参考
进入 →
🛠️
VESC(本杰明电调)
开源 BLDC/FOC 驱动,社区非常活跃,硬件设计经过多年迭代验证,从低压到高压都有方案,适合学习成熟的商业化驱动设计。Github成熟方案
7 血泪踩坑汇总(前人踩过的坑你不要再踩!)
- 第一块板必炸 MOS?99% 是上下桥直通导致的。原因:死区时间不够、栅极电阻太小振铃导致误导通、nFAULT 没接 MCU 没及时保护。解决:先用 DRV8313 内置 MOS 的方案练手,炸了不心疼;栅极电阻先从 20Ω 开始试,不要一上来就用 0Ω/10Ω
- 电流采样噪声大/波形乱跳?原因:①没有 Kelvin 连接;②采样线和 PWM 线平行走了;③AGND 和 PGND 多点连接;④ADC 采样时机不对(在开关瞬态采样了)。解决:采样线差分包地走,远离开关节点,采样触发点设在 PWM 周期中间
- 电机抖动/转不起来/有异响?先排查:①编码器方向是否搞反了?②编码器零位是否校准了?③三相线序是否正确(U/V/W 对应关系)?④电流采样方向是否正确?⑤PID 参数是否太激进?
- 电机静止时也有电流/发热?Id 电流不为 0,说明角度偏移有问题或 PI 参数不对。FOC 正常时 Id 应该 ≈0,只有 Iq 有转矩电流。
- 一接电机就短路跳闸?MOS 管已经炸了(DS 击穿短路)。万用表测 DS 是否导通,如果导通说明 MOS 已坏,拆下来换,同时检查栅极电阻和预驱是否损坏。
- 栅极波形有严重振铃(过冲/下冲)?栅极回路电感太大,Rg 没放在 MOS 端。解决:Rg 移到 MOS 栅极旁,增大 Rg 到 20~33Ω,或者在 Rg 上并联 100pF 电容做 RC 缓冲
- 编码器读数跳变/不稳定?SPI 线太长没有阻尼电阻、编码器供电没去耦、编码器线和电机线走一起受干扰了。解决:SPI 线串 33Ω 电阻,编码器就近加 100nF 去耦,信号线用屏蔽线
- 抱闸一断电电机就掉下来?时序错了!抱闸是弹簧刹车,通电时打开,断电时弹簧力刹住。断电顺序必须是:先给电机建立保持力矩→再关闭抱闸;断电时:抱闸先闭合刹住→再断电机驱动。如果先断驱动再关抱闸,中间有几百毫秒电机是自由状态,重物会掉落!
- USB 一插电脑就复位/枚举失败?USB 外壳没接 GND!USB Shield 必须通过 0Ω 电阻/1MΩ+电容接 GND,否则静电会打坏 PHY。D+/D- 要等长、包地,加 ESD 保护管。
- CAN 通信丢包/报错?终端电阻只在总线两端各加一个 120Ω,不是每个节点都加!波特率和线长要匹配:1Mbps≤40m,500kbps≤100m,250kbps≤250m。CANH/CANL 不要走反。
- 芯片一上电就发烫?90% 是电源引脚接反了或某个引脚短路了。上电前一定用万用表测各电源网络对 GND 的电阻,正常应该有几百 Ω 以上的阻抗,如果接近 0Ω 肯定有短路,不要上电!
- ADC 读数不准/漂移?检查 VDDA 供电是否干净,有没有经过 LC 滤波;ADC 采样时间是否足够(建议 ≥10 个 ADC 时钟周期);校准 VREFINT 内部参考电压。
✅ 成功标志:
1. 上电不炸、不发烫,各路电源电压正常
2. 栅极 PWM 波形干净,振铃幅度 <1V
3. 开环转动平稳,三相电流是漂亮的正弦波
4. 电流采样零点稳定,无负载时读数接近 0
5. 编码器角度读数连续,转动一圈变化 0~2π 无跳变
6. 闭环 FOC 锁定时,用手拧电机有明显阻力,且电机不震动不异响
8 本节自测
1. 48V 母线的驱动板,功率 MOSFET 的 VDS 耐压选择最合理的是?
💡 解析:VDS 耐压要 ≥1.5 倍母线电压,48V 母线选 80V 以上,因为开关瞬间的振铃过冲会远高于母线电压;选 40~60V 会被振铃击穿。也不是越高越好——耐压越高通常 Rds(on) 越大、导通损耗越高。
2. 电流采样中「Kelvin(开尔文)连接」的核心目的是?
💡 解析:采样电阻是毫欧级,其两端压降只有毫伏级,如果和大电流主回路共用焊盘,铜箔自身的压降会叠加进来,造成测量误差。Kelvin 连接从电阻焊盘内侧单独引细线到运放,避开主回路压降。
3. 上下桥 MOSFET「直通炸管」最根本的防范手段是?
💡 解析:直通的本质是上下管同时导通、母线对地短路。死区时间在下管关断与上管导通之间留出空窗,避免重叠导通;死区太小会直通,太大则谐波大、效率低。采样电阻、PWM 频率、母线电容都与直通无直接关系。
4. 关于模拟地(AGND)与功率地(PGND),正确的处理方式是?
💡 解析:AGND 与 PGND 必须物理分离,且只在采样电阻附近单点连接。多点连接会形成地环路,大电流在地平面上的压降会让 AGND 电位漂移、污染采样信号;完全隔离则会因无参考电位导致运放/ADC 异常。连接点必须是低阻抗宽铜皮或过孔,不能是细走线。
5. 栅极电阻 Rg 应放在什么位置?
💡 解析:Rg 必须紧贴 MOS 栅极焊盘放置(不是预驱端),这样电阻的阻尼作用才能直接抑制栅极回路的 LC 振铃;走线长度 ≤10mm。放错位置会导致振铃加剧、甚至误导通。
6. 母线电容容量的核心估算公式是?
💡 解析:母线电容按 I=C·dv/dt 估算——在电流脉动持续时间 Δt 内,允许母线电压跌落 ΔV,反解出所需电容 C。τ=RC 是预充时间常数,V=L·di/dt 是电感伏秒关系,P=I²R 是损耗公式。
7. 抱闸(电磁刹车)正确的断电时序是?
💡 解析:抱闸是弹簧刹车,断电时靠弹簧力刹住。正确断电顺序是「抱闸先闭合刹住→再断电机驱动」;若先断驱动再关抱闸,中间几百毫秒电机处于自由状态,重物会掉落。上电时则相反:先建立电机力矩,再打开抱闸。
8. 电流采样三种方案中,被页面列为「工业首选」的是?
💡 解析:三电阻下桥采样「成本低、精度高、算法成熟」,推荐度被列为⭐⭐⭐⭐⭐工业首选(见第 3 节⑥ 三种采样方案对比)。单电阻母线采样算法复杂、占空比接近 0%/100% 时采不到电流,不推荐新手;双电阻成本最低但精度稍逊;霍尔传感器是非接触式、用于大电流隔离场景,成本高、精度不占优。
9. 关于 CAN 总线 120Ω 终端电阻,正确的做法是?
💡 解析:120Ω 终端电阻用于匹配总线阻抗、抑制信号反射,只在物理总线的两端各加一个。常见误区是「每个节点都加」——并联过多会拉低总线差分阻抗,反而导致通信丢包、报错(见第 3 节⑧ 通信与辅助电路、第 7 节踩坑汇总)。
10. 第一次给新板子上电调试,正确的做法是?
💡 解析:新板第一次上电一定要限流(100~200mA),有问题电源会自动限流不会炸;并且先不接电机,确认各路电源和栅极波形正常后再接电机。直接满压大电流、或一上来就接电机跑闭环,是最容易炸板烧管的错误做法(见第 5 节上电调试 Checklist 与上电安全提示)。
📌 本节要点速查:①8 大模块信号流:电源输入与保护→DC-DC→MCU→栅极预驱→三相逆变桥(6×N-MOS)→电流采样→编码器接口→通信与保护;②选型:入门首选 STM32G431 + DRV8313(内置 MOS)/DRV8323RS(外置 MOS + 内置 CSA),MOS 的 VDS≥1.5 倍母线、ID≥2~3 倍额定;③电流采样三要素:Kelvin 连接 + 1.65V 偏置 + PWM 导通中段触发 ADC,AGND 与 PGND 只在采样电阻附近单点连接;④Layout 四条铁律:功率环路最小化、栅极 Rg 紧贴 MOS、采样差分走线包地、地平面单点连接;⑤上电顺序:静态短路检查→限流(100~200mA)→测电源→SWD 下载→测栅极→开环→校准→闭环;⑥抱闸时序:上电先建立力矩再开闸,断电先关闸刹住再断驱动。
📌 本节小结:FOC 驱动板硬件设计的核心是「功率级」:先按 8 个功能模块理清信号流;芯片选型在耐压、电流、导通损耗与栅极电荷之间权衡;电流采样靠采样电阻+差分运放+Kelvin 连接+PWM 同步触发;PCB Layout 死守「功率环路最小化、栅极开尔文连接、采样差分走线、地平面单点连接」四条铁律;上电按「限流→测电源→测栅极→开环→闭环」的顺序推进。遇到问题,先对照血泪踩坑清单定位,再动手改板。
🤔 思考题:
1. 为什么母线电容必须紧贴 MOSFET 半桥放置,而不是「够近就行」?
2. 单电阻采样方案为什么在占空比接近 0% 或 100% 时会采不到电流?
3. 如果你的板子一上电 MOS 就发烫,你会按什么顺序排查?
9 参考资料
资料整理更新至 2026-08 · 芯片选型与开源项目信息经整理核对,具体参数以各厂商最新数据手册为准。
建议配合「FOC 驱动器硬件深挖」和「参考资料汇总」一起学习。