两块 ST 开发板上的 FOC 台架:电机还没到的五周

用 Claude Code 在 B-G473E-ZEST1S 和 NUCLEO-H755ZI-Q 上搭电摩和跟随露营车用的 FOC 开发测试台。自研 foclib 在仿真、MATLAB 对拍和板上虚拟电机里过了验收,双轴硬件关断实测 139–167 ns;功率板没上电,电机一台没到,电流环和速度环还没在真电机上闭过环。

两块 ST 开发板上的 FOC 台架:电机还没到的五周

8 月 17 日到 9 月 22 日这五周,我用 Claude Code 在两块 ST 开发板上搭了一套 FOC(磁场定向控制)的开发和测试台,给公司的两条线用:电摩是 72 V 平台、一台 4 kW 的轮毂电机,以后可能上 96 V;电动跟随式露营车是左右两台几百瓦的轮毂电机。FOC 主控是 B-G473E-ZEST1S(板号 MB1811,STM32G473),NUCLEO-H755ZI-Q 做台架采集,以后当整车控制器。到 9 月 22 日,自研的 FOC 库 foclib 在 PC 仿真、MATLAB 对拍和板上虚拟电机三层都过了验收,一块 G473 带两个轴的硬件关断在示波器上实测 139 到 167 ns,H755 成了 1 kHz 的采集节点。72 V 功率板 9 月 3 日到了,一直没上电,给它配的适配板 9 月 9 日下了单。电机一台都没到,所以电流环和速度环只在模型里闭过环,真电机还一圈没转。

两块板子,各管一摊

开工那天手上只有这两块 ST 板,外加一块留给后期跟随感知的开发板,电机和功率级都还没到。两块 ST 板都只是控制板,不带功率级。头两天没写代码,Claude 先出了总体计划和五份架构决策记录(ADR),我逐条过。

几件事是那时候定的。主控用 G473,它的电机控制外设最全:两个高级定时器 TIM1、TIM8,5 个 ADC,片上运放和比较器,MCSDK 原生支持,Morpho 排针还能直插 ST 的 IHM08M1 这类小功率板。H755 也能跑 MCSDK,但要拆两个和以太网冲突的焊桥,我不想动它,就让它先做台架采集,第二阶段再当 VCU。固件先用 ST 的 MCSDK 把硬件跑通拿基线,主线是自研一个纯 C 的库 foclib:C11,不碰 HAL,不用 malloc,全用 float32,同一份源码在 PC 上编成 DLL 做仿真和单测,在 MCU 上直接跑。VESC 只当参考,它的现成硬件到 100 V 左右为止,96 V 没有,而我们迟早要自己做功率级。电压先按 72 V 做,台架和适配板按 96 V 留余量。

工具链:按本机记录

本机最后装齐的工具链,以工具链盘点文档为准:msys2 的 arm-none-eabi-gcc 16.1(固件默认用 STM32CubeCLT 1.22.0 自带的 GNU 14.3,两套可以切),CMake 4.1 加 Ninja,OpenOCD 0.12,pyOCD 0.45.1,STM32CubeMX 6.17.0-RC5 和 G4、H7 两个固件包,X-CUBE-MCSDK 6.4.2,VS Code 的 cmake-tools 和 cortex-debug,Python 一律走 uv。VESC Tool 的官方二进制要登录才能下,Claude 就用 msys2 的 Qt 从源码编了一份 7.01。

ST 的软件也要登录才能下。Claude 用 Playwright 自动登录能登上,但到"接受许可再下载"这一步就不认自动化会话了,来回弹了几次浏览器窗口,我烦了,最后是我在自己的 Chrome 里点下载,它盯着下载目录,下完静默安装。从那以后的规矩是:要登录的网页直接叫我。

第一个卡住的地方是 ZEST1S 连不上电脑。8 月 18 日两块板插在笔记本的两个 USB-A 口上,H755 马上识别了,ZEST1S 板上 ST-LINK 的 COM 灯一直慢闪红。Claude 第一反应是让我换线,我回了一句:

不要每次都随便怀疑线,就像以前那个电源的问题一样,这个低级错误不会有的。这个线是原厂的。(2026-08-18)

它改去翻 Windows 的即插即用日志:过去九十分钟只有 H755 一次枚举,ZEST1S 连"未知设备"的记录都没有,电脑根本没收到它的接入信号。第二天早上我拔掉一块板,ZEST1S 改用一根 C 对 C 的线直连,马上枚举成功;再把 JP2 从 P5V 跳到 STLK,让目标芯片由 USB 供电,3.29 V 起来,烧录、串口回显、gdb 断点当天都过了。到底是那根 A 转 C 的线还是别的原因,后来没再深究,记录里只留了一句:ZEST1S 用 C-C 数据线,JP2 跳 STLK。

MCSDK 的无头生成熬了一个通宵。Workbench 6.4.2 手工拼的工程配 G4 控制板时,连接器配对不生效,引脚回落到默认值,和串口脚撞了;拿 H745 做对照能成,换 G431 也失败,可见是 G4 这条路径的问题。它自带的命令行前端在这台机器上也起不来。最后的办法是连 Workbench 本机的 HTTP 服务,用无头浏览器走它自己的新工程向导,一路点到"生成",CubeMX 弹出的 Swing 模态框交给一个看门狗脚本处理,只有一个许可协议框后台点不了,由我手动点了一次。中间 Claude 一度用置顶窗口加真实鼠标去点 Workbench,窗口盖住了我正在用的浏览器,被我叫停,之后桌面自动化只许后台截图,不许抢前台。8 月 21 日早上生成成功,后来又发现它支持 -toolchain CMake,直接出 CMake 工程,用本机的 gcc 加 Ninja 编过,FLASH 33 608 B、RAM 8 232 B。

日常构建和烧录是这三条:

powershell
.\scripts\test-host.ps1                 # 主机:编译 + ctest + pytest
cmake --build --preset g473-release     # 交叉编译
.\scripts\flash.ps1 -Target g473        # 烧录(ZEST1S 走 CN4 的 C-C 线,JP2=STLK)

台架怎么接

8 月 23 日两块板第一次从笔记本挪到 thor 上,那是实验室里一台 aarch64 的 Linux 机器。8 月 29 日示波器到了,四通道、12 bit,带一路信号源 G1,头一天板子和示波器先接在笔记本上测;8 月 30 日起全部挂到 thor 下面,示波器用网线直连,走 SCPI。Windows 这边只写代码、跑主机仿真、写文档,上板实验都通过 SSH 在 thor 上做。到 9 月初,台架是下面这个样子。

台架连接图
图 1:9 月初的台架连接。实线是在用的连接,虚线是还没接进来的适配板、功率板和电机。

烧录一律显式指定 ST-LINK 序列号。这条是事故换来的:有一次两块板同时插着,脚本挑错了行,把 G473 的固件烧进了 H755。

示波器到的当天下午,Claude 就按一份 12 项的无功率级测试计划开测:PWM 频率和中心对齐、死区、关断安全态、BKIN 硬件封波、三相调制包络、采样点相位、中断时长、写 CCR 到输出生效隔几拍。图 2 是那天下午会话里的一段,它一边用脚本远控示波器取波形,一边翻板子的用户手册,确认板上有一颗 24 MHz 的外部振荡器。

Claude Code 远控示波器的会话截图
图 2:8 月 29 日下午的会话片段。前两段是读示波器和查手册的结果,红字是一次触发没抓到波形的报错,最后一段是它列出的三个待核实疑点。原图底部一行带 ST-LINK 序列号,已裁掉。

那时 G473 还跑在内部 RC 时钟上,PWM 实测 20 061 Hz,偏了 0.3 % 左右。第二天切到板载 24 MHz 外部时钟(PLL 配成 24 / 6 × 85 / 2 = 170 MHz),PWM 变成 20 000.1 Hz,误差 5 ppm。死区配置值 847 ns,切时钟以后在两个方向上测出 845.7 和 847.7 ns。

示波器上的死区
图 3:示波器到货当天抓的死区。黄色是 U 相上管信号 UH,青色是下管信号 UL(低有效,拉低即导通)。UH 下降到 UL 下降 843 ns,当时还在内部时钟上。

BKIN 硬件封波也测了:把 PA15 拉低,到 UH 关断是 152.5 ns,之后第一个中断在 7.6 µs 时进来,状态机进入故障态。8 月 31 日开始做露营车的双轴。8 月 21 日 Claude 给的建议是每个轮子一块 G4 驱动板加 CAN,我最后定的是一块 G473 带两个轴:M1 用 TIM8 加 ADC3/ADC5,M2 用 TIM1 加 ADC1/ADC2,分布式方案留作对照。原来担心两个轴都跑 20 kHz 时中断预算不够,实测两轴各 20 kHz,单轴中断最长约 17 µs,两轴的 ADC 注入完成中断入口错开约 25 µs,放得下。之后是四路外部故障输入(PB7、PD1、PA15、PA11)各自的静态和动态关断,以及两轴同时故障的四种组合,正式批都是 20/20,关断延迟 139 到 167 ns,两轴之间多数只差 1 到 3 ns。最后还让 MCU 自己产生激励,扫出了 M2 那路 ADC 真实的采样窗口:触发后 +47 到 +223 ns,由此推出这一轴的占空比几何上限是 96.8 %,SVPWM 必须做钳位。

H755 那边写了一个采集固件:6 路 16 bit ADC,16 倍过采样,1 kHz 一帧走串口,报警输出和急停输入都接上了。远程验收跑了 30 分钟,收到 1 806 585 帧,一帧没丢;报警输出动作在 1.5 ms 内,急停输入到事件上报在 5 ms 内。

电流环和速度环:先在模型里调

没有电机,环只能在模型里调。一共三层:PC 上用 foclib.dll 接一个 Python 写的永磁同步电机模型,RK4 积分,平均值逆变器,传感器误差注入,也带真实的一拍 PWM 延迟;MATLAB 里用 Motor Control Blockset 的官方模块独立搭一套同结构的 FOC 来对拍;板上让 G473 以 10 kHz 跑真 foclib 加同一个电机模型,我们叫它虚拟电机。图 4 是 foclib 一拍里实际走的链路。

foclib 控制链
图 4:foclib 一个 PWM 周期内的控制链。红色是电流环,蓝色是位置;大虚线框是 20 kHz 快环,灰色虚线块是磁链观测器的影子通道。

电流环按零极点对消取增益,kp = L·ωc,ki = Rs·ωc,ωc 默认 2π × 1 kHz,另有一条规矩:带宽不超过 PWM 频率的二十分之一。再加解耦前馈和 d 轴优先的电压限圆。在一个 8 对极、0.15 Ω、250 µH 的测试电机模型上,iq 从 0 到 10 A 的阶跃上升时间 0.20 ms,没有超调,1.65 ms 进入 ±2 %。速度环 kp = J·ω/Kt,ki = kp·ω/5,带宽 15 Hz,0 到 500 rpm 的阶跃超调 1.2 %。MATLAB 那套独立实现在同电机、同增益下,和 foclib 的电流阶跃对齐一拍以后轨迹只差 0.30 %。MCB 自带的增益设计器给的电流环增益比我们高 15 % 到 18 %,速度环的 kp 高 3.2 倍,两边的设计目标不同,我们留了自己更保守的公式。对拍时还踩过一个坑:MCB 的 PI 块有个 UseKiTs 选项,打开时会把积分参数当成 Ki·Ts,第一次就是把连续域的 Ki 喂了进去,控制器变成了 bang-bang。

仿真里的电流阶跃和速度阶跃
图 5:左边是锁转子 iq 0→10 A 阶跃,foclib(实线)和 MATLAB 参考实现(虚线)同增益对拍;右边是 0→500 rpm 速度阶跃,15 Hz 速度环,蓝线是验收用的霍尔反馈。都是测试电机模型,不是真电机。

有两条规矩是被板子和模型教出来的。第一条就是那个二十分之一。8 月 21 日在板上的虚拟电机里跑参数辨识,Ld、Lq 出来 55 和 108 µH,全是乱数。查到最后,是给虚拟电机补上真实的两拍施加延迟以后,板上 10 kHz 的拍率下电流环还用着 1 kHz 的默认带宽,违反了自己定的 f_pwm/20,环已经接近失稳,而辨识走的正是这个环,伏秒数据全被污染。带宽按拍率改成 500 Hz 以后,Rs 辨识出 149.99 mΩ(真值 150),磁链 10.001 mWb(真值 10),Ld、Lq 是 228 和 227 µH(真值 250,虚拟转子锁不住,剩 9 % 的偏差)。从此所有跟着 f_pwm 走的带宽都由固件按实际拍率推出来,不吃默认值。

第二条是大电机的速度环。按 4 kW 轮毂电机的占位参数(120 µH、40 mΩ、16 对极、72 V)在开关级模型里长跑,沿用小电机那套公式算出的 8 Hz 速度环打起了极限环,转速在 21 和 82 rad/s 之间来回,iq 正负 100 A 撞限幅;降到 1.5 Hz、加速斜坡 50 以后收敛干净,这组数成了大电机速度环的起点。同一个模型也回答了 PWM 频率的问题:72 V、20 kHz 下电流纹波 2.0 A 峰峰,规划时按两电平最坏公式估的是 7.5 A,提到 25 kHz 只少 0.4 A,20 kHz 够用。

这些数字有个前提,Grok 8 月 23 日审核时说得很直接:模型和控制器出自同一套假设,SIL 里的绿灯只说明"和自己的模型一致",不能写成真机结论。所以过夜跑的 10080 组参数容差扫描全部通过、辨识算法在整个容差范围里误差不超过 2.1 % 这些结果,报告里都补了这句说明。真机的电流环和速度环,要等电机到了重新辨识、重新调。

顺带一件小事。8 月 21 日我让 Claude 试试 MATLAB 的 Embedded Coder,想着万一生成的代码更快。同一条快环,同样放 CCMRAM,同样 -O2,在 G473 上手写的 foclib 每拍 643 个周期,生成代码 691 个,慢 7.5 %,积分器的离散化约定也不同,和手写版做不到逐位一致。这条路就关了。

霍尔为主,无感做影子

两台目标电机都带 120° 霍尔,霍尔就是主位置源。无感这边选的是 Ortega 的非线性磁链观测器加 PLL,只要 Rs、L、ψ 三个参数,在低电感的轮毂电机上用得很多。它在 foclib 里一直在后台跑,默认不参与控制,用来和霍尔角比对、做参数漂移告警,霍尔坏了的时候顶上。实现时改过一个关键点:磁链幅值的目标值固定成 ψ 时,Rs 或 ψ 一高估,观测器就周期性失锁,实测会翻 180°;改成转速可信时跟踪实际幅值以后,Rs 偏 30 %、L 偏 20 % 时角度误差也在 5° 以内。

切换逻辑叫 AUTO:转速过了阈值、观测器也收敛了,就切到观测器,切换瞬间的角度差在 20 ms 内融合掉;骑行中霍尔线断了,降级到观测器继续跑,不停机;低速时霍尔断了、观测器又没收敛,就照原路径报故障。零速和低速的无感(高频注入)要靠电机的凸极性,这台轮毂电机是表贴结构,凸极比还不知道,所以高频注入只在 SIL 里验证了算法原型,要等真机测出 Ld、Lq 再决定上不上。

8 月 24 日我问过一个问题:霍尔 60° 才来一个沿,是不是太粗,车轮转几度就有一个沿了。Claude 的回答把两种角度分开:16 对极的电机,60° 电角只有 3.75° 机械角,车轮一圈 96 个沿,机械上确实密;但 Park 变换用的是电角,转矩误差按电角算,沿与沿之间靠插值,最坏是静止时 ±30° 电角。

霍尔精度问答
图 6:8 月 24 日关于霍尔精度的回答,按收益大小列了四条提升路径。电机型号已打码。

真正动到 foclib 算法的是霍尔的反转确认。旧实现要两个沿才确认反转,确认那一拍角度会跳 60°,饱和电流下过零时电流矢量冲到 1.33 倍,离软件过流线只剩 5 % 左右。8 月 24 日我选了 O4 方案,在旧估计器上面加一个二阶跟踪环。过程中推翻了两版:第一版照 ODrive 的做法把扇区阶梯直接喂进环,60° 的量化纹波压不下去,匀速时角度误差 5 到 18° RMS;第二版让速度也从环里出,速度阶跃超调变成 110.8 到 111.4,超过 110 的门槛。我中间问过"为什么只有 80 Hz",80 Hz 就是第二版为了压超调要的数。定稿是第三版:环只平滑角度,带宽 40 Hz,速度仍用 6 沿平均加加速度外推,全速域角度误差 0.18 到 1.8° RMS,过冲从 1.33 倍降到 1.22 倍。这是整个项目里 foclib 的算法第一次在我拍板后改动。

卡住的几处

最难缠的是一个 71.58 分钟的鬼。8 月 22 日凌晨两块板过夜跑虚拟电机耐久,6.5 小时 553 个循环里有 8 次"设定值已经应答,速度却不跟",每次复位就好。Claude 先怀疑命令丢了,加了三级计数器,结果收到、写入、忽略的条数完全对得上;又怀疑过节拍饿死、DWT 计数器回绕、内存被溅写,为最后这条专门写了带 ASan 和 UBSan 的模糊测试,两千万次迭代、八百万个伪造帧,零报警。转机是把每次事件对齐到各自那块板的复位时刻:G473 上的五次事件几乎等间隔,大约每 71.6 分钟一次,正好是 2^32 µs。

根因在虚拟电机自己身上。它用 (uint32_t)(t * 1e6 + 0.5) 把 double 秒换成微秒时间戳,超过 UINT32_MAX 以后这个转换是未定义行为。ARM 的 VCVT 指令会饱和钉死在 0xFFFFFFFF,时间戳冻结,之后每个霍尔沿的间隔都是 0,被当成毛刺滤掉,霍尔角和速度就此冻住。x86 上同样的未定义行为走的是截断,所以主机仿真和单测永远复现不了。H755 主频低,同一个钟走得慢,过夜那次它的三次事件间隔约 124 分钟,按节拍比换算回来也是 2^32 µs。foclib 自己的时间差运算都是回绕安全的,真硬件上的定时器也天然模回绕,这个病只属于虚拟台架。修法是改成 64 位整数累加,再取低 32 位。修之前它按这个钟预言了下一次事件,事件比预言晚 34 秒出现;修完以后两块板各跑 6 小时,257 和 248 个循环,零事件。

F2 结案
图 7:8 月 24 日的结案消息。th、hth 是控制角和霍尔角,已经冻住;oth 是观测器角,还在动;pth 是虚拟电机的真实角度。

第二个坑也是台架自己造的。耐久里有一种剖面是从 60 直接反转到 −60 rad/s,在 −6 rad/s 附近百分之百触发软件过流,同一份 foclib 在 PC 仿真里反转八千多次都没事。最初的报告把它归成飞车起动的缺陷,Grok 审核时指出飞车起动早就实现了,这条因果链不成立。Claude 回头逐条核验,做对照实验,最后定位到台架:应用层和虚拟电机里各闩了一次命令,管线变成三拍,真硬件只有两拍,多出的这一拍把反转时的过冲从 1.31 倍放大到 1.62 倍,14.03 A 刚好擦过 14 A 的跳闸线。删掉外层那次闩锁,原来百分之百复现的场景全部干净。

真硅片上还有几个文档和仿真推不出来的坑,都出在 CubeMX 生成的代码或 HAL 上。TIM1 留着一个从模式配置,HAL 检测到以后故意不置 CEN,计数器永远不跑,也不报错。HAL 开注入中断的函数在这颗片子上没把中断使能位写下去。关 MOE 的宏在有通道使能时拒绝执行,安全关断必须直接写 BDTR,否则"关 PWM"是假的。TIM2 被留在编码器从模式,微秒时基一直是 0,霍尔沿的时间戳全冻在 0。

H755 的 ADC 也查过一次。和万用表比有 +0.28 % 的比例偏差,零点也有几到十几毫伏的偏移。Claude 提议把 ADC 采样时间从 9.1 µs 降到 2.9 µs 看看,我没同意:

不乱降这些东西。要找到真正的异常以及出现原因。(2026-09-04)

后面做了几组区分实验,三件事各自有了来由:比例偏差来自用内部基准反推的 VDDA 比实测的 3.3 V 高了 0.26 %,改用实测 VDDA 折算后三个点都在 0.04 % 以内;噪声大是 A0 插孔里的杜邦线接触不好,换线重插就下去了;零点偏移是 0 码截断。

和 Claude Code 怎么配合

这个项目从 8 月 17 日到 9 月 22 日一直在同一个会话里。我发了 347 条消息(不算斜杠命令),上下文压缩了 19 次,仓库提交 234 次,Claude 调了四千六百多次 Bash。能撑这么久,靠的是把状态写进文件:每天一份工作日志,逐字记我的原话和时间;每个决定一份 ADR;每次实验一份测试计划和一份报告,报告编到了 TR-0021;另外还有 24 条 memory,其中 14 条是做事的规矩,大多出自我当时的原话。

方式是文档先行、逐项拍板。需要我定的事它攒成一张待拍板清单,我一项项过,它不在半路反复问要不要继续。不需要硬件的活就放手让它跑,比如"接下来 9 小时无人值守",第二天早上看报告。需要我到板前的实验另有一套规矩:runner 用文件做门控,固件、示波器、烧录器的预检全部通过才发 READY,这时它才来喊我;我说"好了",它写 GO,立刻开测。在手压探头这件事上我发过好几次火,有一次是这样:

手压点我不明白什么叫静态批,什么叫动态批,能不能正常说话,就是压还是不压,压哪个点?(2026-09-04)

之后定下的格式是:一条消息只讲一次实验;每根线写清楚从哪来、插到哪个丝印(PA15 这种);焊盘同时报 TP 号和对应的引脚名;不用的探头直接写"不用,不接"。它自己也犯过错:9 月 5 日等一轮回归时,等待循环超时,脚本没核对状态就烧了镜像,撞上正在跑的那一轮,整轮作废。之后的规矩是板上的动作只认状态文件里的 COMPLETE,不认计时。

后半程是三个 AI 一起干。Grok 从 8 月 23 日开始做审核,结论写进仓库里的一份文档,Claude 逐条拿代码和实验核对,在每条后面填判定。Codex 在 8 月 29 日夜里到 9 月 1 日接过台架,把示波器测试的后半程、切外部时钟和双轴第一阶段做完;它读 Claude 的会话记录接着干,交接靠仓库里的文档。Codex 写文档有个毛病,爱加不存在的限制和许可类说法,我纠正过很多次。9 月 4 日凌晨它又对工作树做了一次 117 个文件的大改,里面有把工作日志的近似时刻改成"具体时刻未记录"、删掉我明确要保留的授权说明这类改动。我让 Claude 逐文件审:加限制、加道德声明、改写历史日志、删我指定保留的内容,一律不过审,能对上证据的状态更新才收。后来的适配板,又让 Codex 外审了九轮。

做到哪了

9 月 3 日到的功率板是一块 72 V、2 kW 的原厂评估板:120 V MOSFET 三相桥,输入 60 到 84 V,手册上最高开关频率 10 kHz,接口是 32 针 DIN 41612,逻辑电平 5 V。它和 ZEST1S 之间差着电平、量程和接口,要一块适配板。9 月 4 日排到功率板首次上电时,72 V 电池组的接口线还没到,之后的工作就全转到了适配板上,到 9 月 22 日没有上电的记录。板子本身我没让逐点拿万用表核对,官网新买的原装板,直接下官方手册和示例代码来定引脚表就行。

适配板不带 MCU,叠装在 ZEST1S 上面:六路 PWM 做 3.3 V 到 5 V 的电平转换,三相电流信号按 0.66 分压到 1.65 V 中点,母线电压分压进 ADC,再加上隔离 CAN FD、霍尔和编码器、SPI 传感器、电机温度、急停这些接口,按"一次贴满、打完不再补焊、功能用跳线帽选"来做。整个流程是脚本化的:Python 生成原理图,KiCad 10 的命令行做 ERC 和网表检查,pcbnew 摆位,Freerouting 多次抽签布线,自写的收尾脚本补线、铺地。我要求自动布线和验证都由脚本走完,不让我手工收尾。9 月 9 日定稿的 v2.9 是 77 × 82 mm 的两层板,189 个器件,DRC 错误 0、未连接 0、原理图一致性 0,贴片 143 件。打样厂的贴片预览 9 月 17 日复核过:2D 预览上 30 个有极性器件的 1 脚全对,STEP 里 3D 模型的朝向和焊盘对不上,留到 DFM 确认时问清楚。

适配板 v2.9 的 3D 渲染
图 8:适配板 v2.9 出厂包里的 3D 渲染。左边两列焊盘是接功率板的 DIN 41612(J1,渲染里没画连接器本体),上下两排是接 ZEST1S 的 Morpho 排母(J2/J3,装在底面)。

到 9 月 22 日,项目停在等硬件:等适配板回来焊好,等一台限流电源给功率板第一次上电,等一台真电机。到那时要做的事文档里都排好了:用 MCSDK 和自己的辨识程序测出真实的 Rs、L、ψ 和霍尔偏置,把那几个占位参数换掉,再按真参数重调电流环和速度环。还有一项没拍板:功率板手册写的最高开关频率是 10 kHz,如果按 10 kHz 跑,照 f_pwm/20 的规矩电流环带宽上限就是 500 Hz;是先按 10 kHz 验收,还是评估 20 kHz 的开关损耗和温升,要等板子上电以后再定。

← 上一篇 电摩仪表选型,和一块没给资料的接口板 下一篇 → 运营要一份竞品红人报告:先查做法,再让 agent 采集和打分