15分钟搞定平衡车主板:解锁芯片、刷入固件,调出第一组FOC参数
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
原厂固件油门响应发肉、电机带载时嗡嗡作响,参数还完全动不了。hoverboard-firmware-hack-FOC 用磁场定向控制接管平衡车主板,一次 FOC固件刷写 就能换来更顺的扭矩和可自定义的电流、转速上限。
刷完之后你能得到什么
- 扭矩输出明显更顺:FOC 控制方式降低了电机噪声与振动,起步加速不再"顿挫"。
- 安全上限自己定:最大相电流与最高转速都有硬保护,过流、超速会被及时拦下。
- 控制模式可切换:换相、正弦、FOC 三种控制类型可配,FOC 下还能在电压、转速、扭矩模式之间选。
- 极速范围可拓展:启用弱磁(field weakening)后,电机可在更高转速区间安全工作。
开工前备齐这些
| 类别 | 物品 | 说明 |
|---|---|---|
| 必须 | 平衡车主板 | 搭载 STM32F103 或 GD32F103 的主板均可,固件同时支持这两种 MCU |
| 必须 | ST-Link V2 编程器 | 通过 SWD 接口解锁芯片与写入固件 |
| 必须 | ST-Link Utility | ST 官方烧录工具,本文全部解锁操作都在它里完成 |
| 必须 | 固件文件 | .bin 或 .hex 格式,可从项目 Actions 构建产物直接获取 |
| 可选 | USB转TTL 模块 + 串口助手 | 第3步串口调参用,串口助手推荐 PuTTY |
| 可选 | VESC Tool | 图形化查看/修改参数的替代方案 |
如果打算自己编译固件,clone 仓库即可:
git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC也可以直接到项目的 Actions 构建页面下载最新产物,无需本地工具链:
第1步:解开MCU的读保护
为什么原厂板默认锁读保护
出厂固件普遍开启了读保护,目的是防止别人直接拷走芯片里的程序。副作用是任何 SWD 读操作都会被拒绝,写固件自然也被挡住,所以解锁必须先做。
出现 "Can not read memory" 报错时怎么办
ST-Link 接好线后,在 ST-Link Utility 里点击 Connect。如果弹窗提示 "Can not read memory! Disable Read Out Protection and retry",说明读保护生效中,点 OK 继续下一步即可。
把 Read Out Protection 设为 Level 0
从菜单栏进入 Target → "Option Bytes...",在弹出的窗口里将 Read Out Protection 一项改为 Level 0,点 Apply 写回。
Erase Chip 并确认 "Memory erased"
接着执行 Target → Erase Chip 整片擦除。完成后主区域出现 "Memory erased"、底部状态栏显示 "Connected to target",就是解锁成功的标志。
第2步:把固件写进Flash
先接好 SWD 四根线,主板上的接口定义可在引脚图里核对:
- ST-Link SWCLK → 主板 SWCLK(PA13)
- ST-Link SWDIO → 主板 SWDIO(PA14)
- ST-Link GND → 主板 GND
- ST-Link 3.3V → 主板 3.3V(可选,仅当主板没有其他供电来源时接,否则芯片上电不足、连接会断)
写入固件分三步:
- 在 ST-Link Utility 中点 "Program & Verify";
- 选择前面拿到的 .bin 或 .hex 文件;
- 确认起始地址为 0x08000000(STM32F103 的 Flash 起始位置),点 Start。
日志里出现 "Verification OK" 即代表校验通过、刷写成功。若提示验证失败,先重新连一次线再刷,仍失败就重点排查 SWDIO/SWCLK 是否接反。
第3步:用串口调出基础FOC参数
115200波特率连上主板
拔掉 ST-Link,把 USB转TTL 接到主板的 UART 引脚上。板上的 USART2/USART3 默认波特率都是 115200,定义见 Inc/config.h。串口助手设成 115200、8N1,给板子上电后按一下按键,有回显即说明链路通了。
查电流限制、转速限制并改好
串口里输入GET,会列出全部参数及当前值,重点看三个:
I_MOT_MAX:最大相电流(A),决定电机能拉多大电流;N_MOT_MAX:最高转速(RPM),决定极速上限;CTRL_TYP与CTRL_MOD:控制类型与控制模式,FOC 配合扭矩模式最适合载人平衡场景。
修改用SET 参数名 数值逐条下发,全部调顺后输入SAVE写入 EEPROM,否则下次上电又会回到默认值。不想纯敲命令的话,VESC Tool 也能图形化查看和调整这组参数:
卡住了?先查这里
Q:Erase Chip 报错,读保护解不开。先核对 SWD 接线,GND 虚接是最高频原因;然后断电重连,重新进 Option Bytes 再试一次。部分板子擦除时需要外部给电,先接上 3.3V 或给电池充上电再操作。
Q:烧录后板子完全没反应,开不了机。先确认刷写日志里真的出现过 "Verification OK",只写入一半的固件大概率无法启动。再检查电池是否接好、电源键是否正常,并核对主板芯片型号:STM32F103 与 GD32F103 都支持,但别把目标错选到侧板芯片上。
Q:主板一定要接 3.3V 吗?不一定。3.3V 引脚的作用是在烧录期间给主板供电;如果电池或充电口已经上电,只接 GND 即可。反之,若板子此时没有任何电源,断开 3.3V 连接会立刻丢失。
Q:串口乱码或者没有回显。确认波特率是 115200、TX 与 RX 交叉相接(发射对接收、接收对发射);仍不行就断电重启板子,再按一次按键触发回显。
再进一步
- 打开 Inc/config.h 可以选控制类型
CTRL_TYP_SEL、控制模式CTRL_MOD_REQ和整套构建变体;弱磁由FIELD_WEAK_ENA打开,起用区间的标定曲线长这样:
注意 README 的提醒:弱磁标定前务必做好安全准备,标定不当可能把电机带入危险的高速区间。
- 电机本体的定点参数集中在 Src/BLDC_controller_data.c,配合 README.md 的说明和定点工具做微调,能进一步贴合你的电机特性。
- 遇到具体板型、变体或接线层面的问题,项目社区与 wiki 里往往已有现成答案,值得先翻一翻。
到这里,解锁、刷写、调参三步全部走完。接上电池、按下电源键,手拨轮子时感受到均匀而可控的阻尼,就说明一切正常了。🚀
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考