Bilibili配套视频:
https://www.bilibili.com/video/BV12C4y1f78j/?spm_id_from=333.999.0.0&vd_source=eb375996b1aae493d63fe367f98b306c
文章中同款STM32G4电机开发板及完整代码模型资料,淘宝搜索店铺欧拉电子获取。
1.Clark变换建模
双击打开
MATLAB软件;

点击Simulink,新建空白模型;


新建子系统,命名为Clark变换;并在子系统中基于公式建立Clark变换模型;



修改模型仿真步长及采样时间;建模->模型设置->类型->固定步长;

增加三相电流生成模块;其中包含theta角度生成模块;生成的theta乘-1为了与Simulink电机模块生成三相电流相位一致;该模块感兴趣的小伙伴可以自行研究一下;

增加示波器,点击运行按钮
,观察三相电流及变换后的alpha和beta电流;



2.Simulink代码生成及实验现象
按以下图片接线,并讲USB转UART模块连接至电脑:

选中所有模型,点击创建子系统,将其封装成同一个模块;


创建数据字典;


将三相电流生成模块中的三个sin计算模块修改成以下配置:

将ia,ib,ic定义为全局的Simulink signal,右键点击信号线,打开属性窗口,方便后续的在代码中观测;






打开数据字典,发现已经建立好ia,ib,ic;模型中ia,ib,ic前方也多了一个叉子形状;


点击模型设置,代码生成,将系统目标文件改为ert.tlc,嵌入式代码生成;

在报告中打开创建代码生成报告;

在硬件实现栏选择ARM CORTEX-M;

在接口栏将代码替换库改成ARM CORTEX-M,选择浮点数;



将Clark_test模型视为原子子单元;

右键该模块,选择嵌入式代码生成;生成过程一直点NEXT即可;


复制第九章 TIM1触发ADC电流采样工程,并打开IOC文件;添加DSP库;
安装流程详细可参考附录二:附录二:STM32CubeMX添加DSP库方法

点击安装DSP库;

安装完成后选中DSP库;

修改uart3的波特率;

生成代码
,并打开keil工程;

增加宏定义:,__TARGET_FPU_VFP,__FPU_PRESENT,ARM_MATH_CM4

将DSP库由M4l改为M4LF;


在keil工程中新建MATLAB文件夹;并将MATLAB生成的代码放进来;并添加到Keil工程中;



在main.c中包换头文件;注释掉PWM1,2,3通道;注释while循环代码;




- ADC中断函数添加以下代码;

- 编译并下载代码;打开VOFA上位机;


作者:欧拉电子