平衡车 FOC 固件刷写完整指南:五步把嗡嗡声调成丝滑
插上 ST-Link 却弹出 "Can not read memory",差点以为板子废了。后来才懂,那是芯片在"锁门"。这是一次平衡车 FOC 固件刷写实录:用 hoverboard-firmware-hack-FOC 五步,把嗡嗡作响的起步变成安静顺滑的输出。
平衡车轮子拆开后的内部:一圈铜线绕组围着中心磁环,FOC 固件要指挥的就是这组三相电机。
刷前必看:原厂换相与 FOC 刷写差异对照表
原厂主板跑的是"换相控制",好比拿门把手拧门——只有"拧动"和"不拧"两种状态,没有中间档;FOC 则像打船舵:角度可任意偏、力度可随手调,实时协调三相电流的大小与方向,让电机磁场始终"咬"住转子。刷写后的差距,集中体现在这五个维度:
| 维度 | 原厂固件(换相) | 刷写 FOC 后 |
|---|---|---|
| 噪音振动 | 嗡嗡明显、车身发颤 | 安静顺滑 |
| 起步手感 | 一冲一冲 | 低扭连续,不再顿挫 |
| 续航 | 电流损耗大 | 效率更高,跑得更快更省 |
| 极速上限 | 被原厂逻辑锁死 | 支持弱磁,可再往上顶 |
| 改装空间 | 几乎到头 | 踏板、航模遥控、串口全开放 |
装备与固件:hoverboard 刷机教程开工清单
| 类别 | 物品 | 它负责什么 |
|---|---|---|
| 硬件 | 带 STM32F103RCT6 或兼容 GD32F103 主板的平衡车 | 跑新固件的"大脑" |
| 硬件 | ST-Link V2 编程器 + 四根杜邦线 | 把固件送进芯片 Flash |
| 软件工具 | STM32 ST-Link Utility(或 openocd) | 解锁读保护、整片擦除与烧录验证 |
| 软件工具 | 任意串口助手 | 刷后在线调参,SAVE 写入 EEPROM |
| 固件来源 | PlatformIO 本地一键编译,或仓库自带的 MDK-ARM 工程、Makefile | 产出待烧录的固件文件 |
固件获取一条命令搞定,克隆后本地编译即可:
git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
刷机五步走:STM32 烧录平衡车全流程
① 断电接线:ST-Link 接线先对照引脚图
找到主板 SWD 四脚,杜邦线一一对应:SWCLK 接 PA13,SWDIO 接 PA14,GND 接 GND,3.3V 按需供电。对照主板引脚图核对线序,宁多看三遍,别插错一根。
⚠️ 接线红线:动手前先断开电池电源;红色 15V 线碰一下就是烧板的节奏,绝对不碰;另外左右侧板线电平不对称——左侧(USART2)不耐 5V,右侧(USART3)才是 5V 容忍,接串口调试优先用右线。
② 读保护解锁方法:Option Bytes 降回 Level 0
多数原厂板默认开着读保护。插好 ST-Link 弹出 "Can not read memory" 警告不必慌,芯片只是正常"挡门":在 ST-Link Utility 里进 Target → Option Bytes,把 Read Out Protection 改到 Level 0,随后整片擦除一次即可放行。
看到这个 "Can not read memory" 弹窗,说明离读保护解锁只差一步操作。
③ 烧录验证:起始地址保持 0x08000000
擦除完成后点 Program & Verify,选中固件文件,起始地址保持默认 0x08000000 不动,按 Start 执行。屏幕出现 "Verification OK",烧录正式收工。
⚠️ 验证失败别硬刷:先确认选的文件没错、连线没松动,再重来一遍。
④ 上电点验:手转电机确认 FOC 已生效
接回电池通电,短按电源键开机,用手转动车轮:能感到全程一股均匀阻力,就是 FOC 的"锁定"手感。随后用遥控或串口发指令,确认车轮跟着指令走。
⚠️ 这一步手离车轮远一点,另一只手随时备着电源开关。
⑤ 串口在线调参命令:115200 波特率改参数
打开 DEBUG_SERIAL_PROTOCOL 后,用串口助手以 115200 波特率连接:GET 查参数、SET 改参数、SAVE 落盘到 EEPROM。觉得响应太冲,就按下一节速查表逐项微调。
⚠️ 每次只动一个参数,SAVE 后小范围低速试车,稳了再调下一个。
FOC 固件参数调校:参数怎么调,手感就怎么变
先选对"玩法":在 platformio.ini 或 Inc/config.h 里挑一个 VARIANT——VARIANT_USART 面向 Arduino 二次开发,VARIANT_PPM / VARIANT_PWM / VARIANT_IBUS 适配航模遥控,VARIANT_NUNCHUK 拿 Wii 双节棍当油门,VARIANT_HOVERCAR 与 VARIANT_SKATEBOARD 分别对应踏板卡丁车与遥控滑板。然后按表调参:
| 参数 | 影响 | 调节方向 |
|---|---|---|
| RATE | 油门响应速度 | 响应太冲就调低,手感更柔 |
| FILTER | 信号滤波强度 | 调大让输出更平滑 |
| I_MOT_MAX | 单电机最大电流 | 限制在安全范围,过高易过热 |
| N_MOT_MAX | 最高转速 | 限制在合理范围,守住底线 |
VESC Tool 电机校验:图形化确认匹配
不爱敲命令的话,用 VESC Tool 对电机跑一次检测:极对数、反电动势等数据一眼看全,确认固件与电机匹配,省去手动估值的麻烦。
⚠️ 弱磁安全单独提醒:弱磁(Field Weakening)能不加电流就把极速再顶一截,但调过头电机可能高速飞转,务必在空旷场地、车轮垫离地面后再测。
刷完只是起点:四类进阶玩法
-
串口二次开发:仓库里 Arduino/hoverserial 例程自带带帧头、校验和与重同步的串口协议,接一块 Arduino Nano 就能发转向、速度指令,实时读回转速、电压与板温,做机器人底盘正好。
-
航模遥控玩法:切到 VARIANT_PPM / VARIANT_PWM / VARIANT_IBUS,用遥控器直接控车,切换控制模式、开闭弱磁都能挂在发射机拨码上。
Flysky i6S 发射机:CH1 管转向、CH2 管速度(failsafe 设 0%),上方拨码切换控制类型与弱磁。
- 踏板卡丁车:切到 VARIANT_HOVERCAR,两个踏板一刹一油,双击刹车挂倒挡。
HOVERCAR 改装接线图:刹车/油门踏板、航模 RC 电路、左右侧板线与电平标注全部标在图上。
- 弱磁提极速与社区玩法:研究 config.h 里的弱磁参数顶一顶极速;项目文档还收录了电动轮椅、遥控滑板、ROS 小车等社区改装案例,灵感管够。
从"嫌它吵"到"它听话",你只走四段路:看差距、备装备、五步刷机、调参试车。这份顺滑,刷过的人才懂。车就在那儿等着——断电、接好 ST-Link,今天就开工 🚀
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考







