# 电磨无位置传感器 BEMF/SMO 观测器候选 A0

这份候选补上原工程中缺失的中高速转子角度/速度估算代码，采用三相电流 Clarke αβ 量、由 SVPWM 占空比和母线电压计算的 αβ 相电压，以及滑模电流观测器和 PLL。模块提供占空比电压重建、电角度正余弦和带符号机械转速；独立目标诊断镜像把它和现有 `motor_foc` 电流环链接起来，以合成波形验证软件接口。占空比电压是理想平均值，死区、电流采样窗口和 MOSFET 压降补偿仍需板上校准。

目标商品页写有 50,000 rpm，但该数字不能直接成为观测器的电机参数。当前电阻、电感、滑模增益、滤波时间常数、极对数和 PI 增益只用于合成波形测试；该候选不含静止初始转子检测、开环起转、实际 PWM/ADC 触发配置、DRV8316 使能或与产品 UI/充电的完整目标固件。反转须在监督器确认接近零速后传入命令方向。任何越流、无效采样、非有限值、超时长采样或估算电流发散都会清除角度锁定并失败关闭。

## 当前验证

- 原生 C 主机合成测试：验证 SVPWM αβ 电压重建、CORDIC 四象限/非法输入、正反转 BEMF 锁定、4 极对正转约 49,000 rpm 与反转约 −45,000 rpm、角度误差、无反电势解锁及过流/非法极对数拒绝；本次角度误差分别约 0.004/−0.002 rad。
- STM32G431CBT6/Cortex-M4F 硬浮点目标诊断镜像静态链接：映像含 FOC 电流环与观测器，但未烧录、未执行，也未初始化 TIM1/ADC/SPI 或打开驱动；大小见 `build/build_verification.json`。
- 这些测试只证明合成波形和静态目标映像；不证明实际电机参数、启动转矩、50,000 rpm 稳速、堵转控制、噪声、温升或原机等效。
- 下一工程门槛：把板上 VM 与 SOA/B/C 同步采样接入算法，确认实际电流采样有效区间；测量手柄相电阻、相电感、反电势常数、极对数和机械安全转速；完成开环起转/观测器接管的目标端实现；在限流电源、无刀头条件下先校相与低速，再阶梯升速并做负载 A/B。
- 由于没有参考机或候选样品，目前不修改 DRV_RUN_REQ、TIM1 MOE、驱动输出或充电输出，不提交制板/量产数据。

## 构建

运行 `./build_host_tests.sh` 与 `./build_target_diagnostic.sh`。第二个命令生成隔离的目标诊断映像，不是产品固件，也不得连接电机运行。

```sh
arm-none-eabi-gcc -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -std=c11 -Os -ffreestanding -fno-builtin -Wall -Wextra -Werror -c drill_smo.c -o drill_smo_stm32g431.o
```
