[应用相关] 使用 CubeMx 生成未在 MC SDK V5.4.4 中包含的芯片的电机控制代码

[复制链接]
3714|50
 楼主| 问天少年 发表于 2022-5-5 16:18 | 显示全部楼层 |阅读模式
前言
当前 STM32 系列丰富多彩,多达 1000 多种的料号。同时,ST 针对电机 FOC 控制推出了 MC SDK V5.x 的马达控制软件系统。该软件可以结合 Cubemx 生成马达控制初始化代码。由于 MC Workbench 软件芯片选择有限,不可能包含所有 ST 的产品料号,因此客户需要使用该软件时,会发现备选的芯片料号并未包含在 workbench 中。

本文针对这种场景,详细说明如何结合 CubeMx 与 MC Workbench 生成 workbench 中所未包含芯片的控制程序,客户通过该说明可以使用全系列 STM32 产品用于电机的 FOC 控制,为客户带来便利。

本文涉及到的开发板、驱动板、马达分别是:Nucleo-STM32G474RET6 (控制板) + X-Nucleo-IHM16M1(功率板)+GBM2804H-100T(电机)以及 STM32G030K6T6 主芯片等。

 楼主| 问天少年 发表于 2022-5-5 16:19 | 显示全部楼层
1、在 MC Workbench
找不到相应 MCU 型号的示例-- STM32G030K6T6
1.1 MC Workbench 中 MCU 的选择

使用 MC Workbench 生成电机控制工程时,选择列表中提供的同系列中的 MCU。比如我们需要使用列表中没有的
STM32G030K6T6 时,可以选择列表中的 STM32G071RB(LQFP64)。接下来分别配置电机参数,电源,电压/电流/温
度保护,启动参数,电流采样等等后,生成电机控制工程。此步骤可参考 ST 往期的技术培训。
76125627388b94e59a.png

 楼主| 问天少年 发表于 2022-5-5 16:22 | 显示全部楼层
1.2 STM32CubeMX 中的操作

生成工程后,打开 STM32CubeMX 软件,选择最终要使用的 MCU,如 STM32G030K6 来创建新工程。
770627388d209d54.png

 楼主| 问天少年 发表于 2022-5-5 16:23 | 显示全部楼层
1.3 导入上面的*.ioc 文件

选择 File->Import Project,导入之前 1.1 中创建的 ioc 工程。
68100627389600be6a.png
369876273895169880.png
检查下导入提示的 Import Status,如有错误或者警告,请根据 Error and Warning messages 进行调整。
849746273896f04089.png

 楼主| 问天少年 发表于 2022-5-5 16:24 | 显示全部楼层
1.4 检查并生成工程

可以看到导入后的 STM32CubeMX 项目中已经包含有电机控制部分的 Middleware。
33354627389b634d81.png
接下来选择 GENERATE CODE,生成工程。
新工程的文件夹目录如下,从该文件夹和上面的 IAR 工程空间都可以看到电机控制部分的 Middleware 已经包含进来了。
后面的编译下载工作此处不再赘述。
18763627389c1c645e.png

 楼主| 问天少年 发表于 2022-5-5 16:25 | 显示全部楼层
1.5 注意事项
如果电脑中安装多个 CubeMX 版本,需要注意在使用过程中必须保持版本的统一,否则导入不成功。

 楼主| 问天少年 发表于 2022-5-5 16:26 | 显示全部楼层
2. 2. 在 MC Workbench
有型号但没相应封装的 MCU 示例
-- STM32G474RET6
2.1 新建工程


如果有 Demo 板和电机,则选择对应的 Demo 板与电机型号,如果没有直接选择 customer board,这边我们看到没有Nucleo-STM32G474RET6,因此我们选择 customer board
5321662738a0f78c00.png

 楼主| 问天少年 发表于 2022-5-5 16:27 | 显示全部楼层
2.2 配置电机与功率板相关配置

分别配置电源,电压保护,电机,电流采样,功率管;因为我们使用了现成的功率板与电机,这边我们使用默认参数即可,如果是自己电机与功率板,请参考 ST 往期的技术培训。
171562738a49a4a8c.png

 楼主| 问天少年 发表于 2022-5-5 16:27 | 显示全部楼层
2.3 芯片选择与配置

我们看到在 MC workbench 中并没有STM32G474RET6 这个芯片型号,因此我们需要选择与之相近的单片机。
原则是 Flash 大小相同优先选择,型号相似次之,最后兼顾同一系列。这里我们可选择 STM32G474QE 作为参考型号。
6528662738a78e90c5.png

 楼主| 问天少年 发表于 2022-5-5 16:33 | 显示全部楼层
2.4 数字端口配置

这边我们使用的功率器件为单一 PWM 与控制使能方式,结合硬件连接为如下配置:
如果是 PWM 互补的方式则还需要配置下桥控制引脚。.
839162738ad04d2c2.png

 楼主| 问天少年 发表于 2022-5-5 17:00 | 显示全部楼层
2.5 模拟端口配置

同样的配置与硬件采样相关的模拟端口
1299862738bd6dcbfe.png

 楼主| 问天少年 发表于 2022-5-5 17:01 | 显示全部楼层
2.6 生成代码

生成 STM32G474QE 的电机控制代码,生成的 G474QE.ioc 用于后面 CubeMx 操作。
866906273922ed861e.png
生成 CubeMx 工程文件
483786273923a171f8.png

 楼主| 问天少年 发表于 2022-5-5 17:02 | 显示全部楼层
2.7 新建 CubeMx 工程

新建 STM32G474RET6 的工程
129262739279aa517.png

 楼主| 问天少年 发表于 2022-5-5 17:04 | 显示全部楼层
2.8 导入上面的 G474QE.ioc 文件
75704627392a7a5224.png
3182627392ad66a21.png
 楼主| 问天少年 发表于 2022-5-5 17:05 | 显示全部楼层
2.9 生成工程
25519627393293caee.png
 楼主| 问天少年 发表于 2022-5-5 17:05 | 显示全部楼层
2.10 验证是否正常工作

编译下载后,使用 Workbench 控制电机转动
372906273934c66faa.png

 楼主| 问天少年 发表于 2022-5-5 17:06 | 显示全部楼层
3.传统的文件拷贝方式示例
-- STM32G474RET6
如果上面两种简易方式已经可以满足移植要求了,下面的内容可以忽略,当然如果需要熟悉各个外设在电机控制中具体配置过程,下面内容可以做参考
3.1 前期准备

如 2.x 中所描述的生成 STM32G474QE 的电机工程,这边不再赘述。

 楼主| 问天少年 发表于 2022-5-5 17:07 | 显示全部楼层
3.2 新建 CubeMx 工程

新建 STM32G474RET6 的工程
6866627393a65504d.png

 楼主| 问天少年 发表于 2022-5-5 17:08 | 显示全部楼层
3.3 配置 ADC

配置 ADC1 配置引脚
可以直接打开 MC Workbench 生成的 STM32G474QE 的*.ioc 文件做为参考
83203627393d183113.png
配置 ADC1 配置功能
这边注意 ADC1 左对齐,触发信号为 Tim1 Trigger Out Event,只有 Inject 模式没有 Regular 模式
92780627393df5dd9b.png
使能 ADC1/2 中断
22517627393e8b4ddc.png
配置 ADC2 引脚与功能

这边 ADC2_IN14 是复用在 ADC1_IN14 的引脚上
45953627393f7208fb.png
配置 ADC2 功能
ADC2 有两个通道用于电压与温度传感采样,使用 Regular 模式,用于电流采样的使用 Inject 模式,这点区别于 ADC1的配置
75004627394073a2cb.png


 楼主| 问天少年 发表于 2022-5-5 17:09 | 显示全部楼层
3.4 配置 Timer1

配置 TIM1 输出管脚
这边只使用上桥的 PWM 输出,因此只配置上桥输出 PWM 波,其中 CH4 用于 ADC 触发,无外部 PWM 输出。
18556273941905039.png
配置 TIM1 功能

这边有些宏定义,可以参考 MC Workbench 生成的工程,注意定义为相同名字
3321762739425d66ff.png
使能 TIM1 的中断
94861627394331252c.png

您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

564

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部