参考simpleFOC代码,在stm32G431上实现了20kHz的FOC电流环。为了降低驱动器成本,将主控由G431改为F030,目前所有代码均为浮点计算,实现了4kHz的电流环(FOC单周期时间成本约230us),控制效果一般,可作为初步参考。后续需要改为定点计算,提高电流环频率以优化控制效果。。程序架构采用了ST电机库的方案,在ADC采样完成中断里执行FOC程序。驱动方式为3个EN端加TIM1三通道PWM输出,TIM3采集编码器AB相输入,3通道ADC扫描采样三相电桥低边通道采样电阻电压。TIM1为中心对齐模式1,PWM模式2,RCR设为1(每两次溢出触发一次中断,即在下溢时触发ADC采样)。上电后电机开环运行,校对Z相(外部上升沿中断)信号,确定编码器初始偏移量,调试时将变量start_run修改为1以开始执行闭环程序。电流环程序放在ADC采样完成回调函数里面,首先获取编码器计数值并计算电角度,然后获取电流采样值并经过clarke变换和park变换得到qd电流,再经低通滤波和PID计算后得到qd电压控制量,然后逆park变换并计算SVPWM占空,最后经TIM1输出三相占空。