本文基于珠海极海半导体 AN1098 (V1.1) 官方应用笔记,完整解读 APM32F035 MOTOR‑EVAL 评估板无感方波(六步换相)BLDC 电机整套软硬件实现方案,包含芯片资源、硬件电路、软件分层架构、状态机流转、关键参数、整机调试流程。全部参数、电路逻辑、代码框架均源自原厂文档,适合风机、水泵、小型无刷驱动项目前期评估与移植参考。
资料获取:AN1098 APM32F035 MOTOR EVAL无感方波控制方案
1. 项目概述与芯片硬件资源
1.1 无感方波方案设计规格
本方案采用ADC 采样反电动势完成转子角度估算,实现 BLDC 无传感器六步方波换相,不需要外接霍尔器件,降低整机硬件成本,适合中小功率无刷电机应用。
| 项目 | 规格参数 |
|---|---|
| 控制方式 | 无感方波六步换相 |
| PWM 调制模式 | HPWM_LON |
| 转子角度获取 | ADC 检测反电动势过零点 |
| PWM 载波频率 | 8KHz |
| 适配电机极对数 | 2 对极 |
| 电机工作转速范围 | 0‑3000RPM |
| 电机起动策略 | 6‑Step 开环预定位启动 |
| 内置保护功能 | 过压、欠压、过流、堵转保护 |
| 固件代码占用 Flash | <10Kbytes |
| 开发 IDE | Keil C V5.23 及以上版本 |
1.2 APM32F035 芯片外设资源清单
APM32F035 是面向电机控制的专用 Cortex‑M0 + 内核 MCU,内置 M0CP 协处理器,集成 Cordic、硬件除法、SVPWM 数学加速单元,片上集成多路运放、比较器,减少外部模拟器件,分为 LQFP48(C8T7)、LQFP32(K8T7)两种封装。
| 资源项 | APM32F035‑C8T7(LQFP48) | APM32F035‑K8T7(LQFP32) |
|---|---|---|
| 内核 & 最大主频 | Cortex‑M0+ @72MHz | Cortex‑M0+ @72MHz |
| Flash | 64KB | 64KB |
| SRAM | 10KB | 10KB |
| 定时器 | 32 位通用 ×1;16 位通用 ×2;高级定时器 ×1;基本定时器 ×2;24 位计数器 ×1 | 同左 |
| 看门狗 | 独立看门狗 ×1、窗口看门狗 ×1 | 同左 |
| RTC 实时时钟 | 1 路 | 1 路 |
| 通信外设 | USART×2;SPI/I2S×1/1;I2C×1;CAN×1 | 同左 |
| ADC (12 位) | 外部通道 16 路,内部通道 3 路 | 外部通道 12 路,内部通道 3 路 |
| 比较器 COMP | 2 路 | 2 路 |
| 运算放大器 OPA | 4 路 | 2 路 |
| GPIO 引脚数量 | 42 个 | 27 个 |
| 工作电压 | 2.0V~3.6V | 2.0V~3.6V |
| 温度范围 | 环境‑40℃~105℃,结温‑40℃~125℃ | 同左 |
2. 硬件系统设计说明
2.1 整机硬件系统架构
整套评估板外部输入24V 主电源;电源调节模块输出多路电压:12V 供给栅极驱动芯片,3.3V 供给 APM32F035 主控,功率 MOS 管直接使用 24V 母线供电。 调速指令:电位器旋钮输出 0‑3.3V 模拟电压给到 ADC 输入,电压超过启动阈值电机运行;电压低于阈值电机停机。 电机运行阶段,ADC 采集三相反电动势 BEMF 信号,识别过零点完成六步换相;电流检测电路配合片内 OPA、COMP 实现硬件过流刹车保护。
2.2 关键接口电路解析
- 电源与母线电压采样电路 母线电压分压公式:
V_BUS = VM / ((100K+100K+10K)/10K)=VM/21;ADC 0‑3.3V 输入对应最大可采样母线电压 69.3V。 - 反电动势 BEMF 采样电路 三相 U/V/W 相电压采用电阻分压采样,分压系数同样为 21,把高压反电动势衰减至 ADC 可接受 0‑3.3V 范围,搭配 RC 滤波网络抑制开关噪声。
- 过流保护电路 采样电阻选用 0.02Ω;使用片内 OPA4 放大母线采样信号,输出给到 COMP1 反相输入端;COMP1 正向输入端分压得到 3V 阈值;3V 对应硬件触发过流保护最大电流 13.5A。COMP 输出直接连接高级定时器 TMR1 的 BKIN 刹车输入,触发硬件刹车。
- 外设按键与指示电路 板载 USB 转串口用于调试打印;PC15 故障 LED 指示灯;两个按键分别实现电机前进 / 后退方向切换、锁车功能;系统使用 8MHz 外部 HSE 晶振,SWD 作为程序烧录调试接口。
2.3 评估板实物接口说明
板上 5 个关键接口:
- ①:24V 电源输入端子,严格注意电源正负极;
- ②:三相 BLDC 电机接线端子;相序仅会改变电机旋转方向;
- ③:HALL 霍尔输入预留接口,本无感方案不使用霍尔;
- ④:SWD 程序调试烧录接口;
- ⑤:跳线帽,使用评估板时必须接上。
3. 软件程序架构解析
3.1 四层软件分层结构
整个工程分为四层,模块职责划分清晰,便于功能裁剪与二次移植。
- USER 用户层:main.c 主入口、中断服务文件 user_function.c、参数头文件 parameter.h、板级初始化 board.c。负责系统初始化、参数配置、主循环、状态机调度。
- HARDWARE 外设驱动层:
drv_adc.c、drv_time.c、drv_io.c、drv_opa.c、drv_comp.c、drv_m0cp.c、drv_system.c。完成 GPIO、PWM、ADC、OPA、COMP、M0CP 协处理器、系统时钟底层驱动。ADC 由 TMR1‑OC4 触发 DMA 搬运采样数据。 - MOTOR_CONTROL 电机控制驱动层:
BLDC_SensorLess.c、StateMachine.c。实现相位切换、开环 / 闭环运行、故障处理,全部主、子状态机逻辑。 - Geehy_MCLIB 电机算法层:提供反电动势过零点检测、数学运算基础库函数。
3.2 主 / 嵌套子状态机完整逻辑
采用主状态机嵌套 RUN 子状态机架构。
四大主状态
- INIT:系统上电,变量、外设初始化,初始化完成跳转 STOP;
- STOP:等待速度指令,关闭 PWM 输出;收到有效速度指令进入 RUN;出现错误进入 FAULT;
- FAULT 故障状态:发生过流、堵转、过欠压等故障停留在此状态;清除故障标记,延时 FAULTRELEASE_TIME 之后回到 STOP;
- RUN 运行主状态:电机工作,收到停机命令或者故障事件,退出 RUN 状态。
RUN 内部 6 个子状态
- Run‑calib 校准:完成采样校准,结束后进入 Run‑ready,PWM 关闭;
- Run‑ready 就绪:清除闭环标记,判断速度指令,超过阈值跳转 Align 预定位;
- Run‑align 预定位:输出固定占空比 PWM,把电机转子强制对齐到指定位置,计时结束进入 Startup;
- Run‑startup 开环启动:六步开环拖动电机,等待反电动势能够可靠检测,切换 Spin 闭环;
- Run‑spin 闭环运行:依靠 ADC 反电动势过零点估算转子位置,执行闭环调速,正常工作主要运行在此状态;
- Run‑freewheel 惯性滑行停机:短接制动,等待电机转速降低,回到 Ready 就绪状态;故障触发则跳入 FAULT。
3.3 核心外设初始化配置要点
- 高级定时器 TMR1 (PWM)
- 时钟 1 分频,向上计数模式,重复计数器 = 1;
- 配置死区时间,使能刹车 BKIN 输入,关闭刹车硬件自动输出恢复;
- 使用 PWM2 模式生成互补上下管驱动波形。
- ADC 配置
- DMA 搬运采样结果,触发源来自 TMR1 的 OC4 事件;开启 ADC 中断与中断优先级配置。
- OPA 运算放大器 初始化流程:先 DISABLE 全部四路 OPA,配置外部电阻增益模式,再使能 OPA。
- COMP 比较器(过流保护) COMP1 输出接到 TMR1 BKIN 刹车输入,反向输入接 OPA4 电流采样输出,低电平触发硬件刹车。
3.4 工程关键参数一览表
全部参数存放在parameter.h头文件,更换电机需要针对性修改。
系统参数
| 参数 | 说明 | 参考设定值 |
|---|---|---|
| SYS_REFV | 系统参考电压 | 3.3V |
| SYSCLK_HSE_72MHz | 系统主频 | 72000000Hz |
| PWMFREQ | PWM 载波频率 | 8000Hz |
| DEAD_TIME | PWM 死区 | 1.0μs |
| SLOWLOOP_FREQ | 速度慢速环频率 | 1000Hz |
底板硬件参数
| 参数 | 说明 | 参考设定值 |
|---|---|---|
| ADC_REFV | ADC 参考电压 | 3.3V |
| R_SHUNT | 母线采样电阻 | 0.02Ω |
| CURRENT_OPA_GAIN | 运放增益 | 5.0 |
| I_MAX | 电流标幺基准 | 16.5A |
| UDC_MAX | 母线电压标幺基准 | 69.0V |
| U_MAX | 相电压标幺基准 | 39.83V |
状态机参数
| 参数 | 说明 | 参考设定值 |
|---|---|---|
| FAULTRELEASE_TIME | 故障复位等待时间 | 5s |
| ALIGN_PWMVALUE | 预定位 PWM 占空比 | 460 |
| ALIGN_TIME | 转子预定位时间 | 0.1s |
| FREEWHEEL_SPEED | 滑行停机转速阈值 | 300rpm |
| STARTUPSPEED_RPM | 开环启动转速 | 300rpm |
| STARTUP_SPEED_RAMP | 开环转速斜率 | 500rpm/s |
| STARTUP_TIME | 开环启动最长时间 | 1.0s |
电机本体 & 速度环参数
| 参数 | 说明 | 参考设定值 |
|---|---|---|
| POLEPAIRS | 电机极对数 | 2 |
| SPEED_MAX | 最大速度标幺 | 5000rpm |
| MAX_DUTY | 最大 PWM 占空比 | 9000 |
| RAMP_UP | 速度上升斜率 | 1000rpm/s |
| RAMP_DOWN | 速度下降斜率 | 1000rpm/s |
| M1_SPEED_KP_Q10 | 速度环 KP (Q10 格式) | 2048 |
| M1_SPEED_KI_Q10 | 速度环 KI (Q10 格式) | 300 |
4. 标准化整机调试流程
文档给出的调试顺序,移植新电机建议严格按照该顺序开展,降低炸管、启动失败风险:
- 硬件检查:确认 24V 电源、电机三相接线、仿真器连接;确认接口无短路,接线端子紧固。
- 参数适配修改:修改
parameter.h,填写目标电机极对数、最大电流、转速、采样板硬件参数。 - 无感校准:执行反电动势采样校准;用示波器观测 BEMF 采样波形,确认采样波形正常。
- 开环调试:优先只跑开环启动逻辑;如果电机转向错误,修改
BLDC_SensorLess.h内部相位顺序配置;示波器观测 PWM 输出波形,调整开环电流、开环启动转速参数,保证开环可以稳定拖动电机。 - 闭环调试:开环确认正常之后,切入闭环运行;整定速度环 KP/KI Q10 格式 PID 参数,优化转速稳定性。
- 整机性能测试:接入转速表、负载、功率计,测试最大转速、扭矩、效率,验证过流、堵转、过欠压保护是否正常触发。
评估板实际示波器采集波形,观测反电动势采样波形,可用于判断反电动势过零点识别是否正常,作为调参依据。
声明:本文全部内容转录自极海官方 AN1098 V1.1 应用笔记,实际产品开发需要结合 SDK 例程、芯片数据手册、电机本体特性完成整机验证。
71