单片机
返回首页

如何结合CubeMx与MC Workbench生成workbench中所未包含芯片的控制程序

2024-06-18 来源:elecfans

前言

当前 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 主芯片等。

1、在 MC Workbench

找不到相应 MCU 型号的示例-- STM32G030K6T6

1.1 MC Workbench 中 MCU 的选择

使用 MC Workbench 生成电机控制工程时,选择列表中提供的同系列中的 MCU。比如我们需要使用列表中没有的

STM32G030K6T6 时,可以选择列表中的 STM32G071RB(LQFP64)。接下来分别配置电机参数,电源,电压/电流/温

度保护,启动参数,电流采样等等后,生成电机控制工程。此步骤可参考 ST 往期的技术培训。

6b3ac8c0-c6ad-11ec-bce3-dac502259ad0.png

1.2 STM32CubeMX 中的操作

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

6b492c9e-c6ad-11ec-bce3-dac502259ad0.png

1.3 导入上面的*.ioc 文件

选择 File->Import Project,导入之前 1.1 中创建的 ioc 工程。

6b5b011c-c6ad-11ec-bce3-dac502259ad0.png

6b77a2f4-c6ad-11ec-bce3-dac502259ad0.png

检查下导入提示的 Import Status,如有错误或者警告,请根据 Error and Warning messages 进行调整。

6b948e6e-c6ad-11ec-bce3-dac502259ad0.png

1.4 检查并生成工程

可以看到导入后的 STM32CubeMX 项目中已经包含有电机控制部分的 Middleware。

6ba4601e-c6ad-11ec-bce3-dac502259ad0.png

接下来选择 GENERATE CODE,生成工程。

新工程的文件夹目录如下,从该文件夹和上面的 IAR 工程空间都可以看到电机控制部分的 Middleware 已经包含进来了。

后面的编译下载工作此处不再赘述。

6bc8b52c-c6ad-11ec-bce3-dac502259ad0.png

1.5 注意事项

如果电脑中安装多个 CubeMX 版本,需要注意在使用过程中必须保持版本的统一,否则导入不成功。

2. 2. 在 MC Workbench

有型号但没相应封装的 MCU 示例

-- STM32G474RET6

2.1 新建工程

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

6be0052e-c6ad-11ec-bce3-dac502259ad0.png

2.2 配置电机与功率板相关配置

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

6c003c86-c6ad-11ec-bce3-dac502259ad0.png

2.3 芯片选择与配置

我们看到在 MC workbench 中并没有STM32G474RET6 这个芯片型号,因此我们需要选择与之相近的单片机。

原则是 Flash 大小相同优先选择,型号相似次之,最后兼顾同一系列。这里我们可选择 STM32G474QE 作为参考型号。

6c1e7eb2-c6ad-11ec-bce3-dac502259ad0.png

2.4 数字端口配置

这边我们使用的功率器件为单一 PWM 与控制使能方式,结合硬件连接为如下配置:

如果是 PWM 互补的方式则还需要配置下桥控制引脚。

6c2e324e-c6ad-11ec-bce3-dac502259ad0.png

2.5 模拟端口配置

同样的配置与硬件采样相关的模拟端口

6c3fcbf8-c6ad-11ec-bce3-dac502259ad0.png

2.6 生成代码

生成 STM32G474QE 的电机控制代码,生成的 G474QE.ioc 用于后面 CubeMx 操作。

6c5181c2-c6ad-11ec-bce3-dac502259ad0.png

生成 CubeMx 工程文件

6c72bd60-c6ad-11ec-bce3-dac502259ad0.png

2.7 新建 CubeMx 工程

新建 STM32G474RET6 的工程

6c8c8c36-c6ad-11ec-bce3-dac502259ad0.png

2.8 导入上面的 G474QE.ioc 文件

6cab36a4-c6ad-11ec-bce3-dac502259ad0.png

6cc66ae6-c6ad-11ec-bce3-dac502259ad0.png

2.9 生成工程

6ce76ffc-c6ad-11ec-bce3-dac502259ad0.png

2.10 验证是否正常工作

编译下载后,使用 Workbench 控制电机转动

6cfde3ea-c6ad-11ec-bce3-dac502259ad0.png

3.传统的文件拷贝方式示例

-- STM32G474RET6

如果上面两种简易方式已经可以满足移植要求了,下面的内容可以忽略,当然如果需要熟悉各个外设在电机控制中具体配置过程,下面内容可以做参考

3.1 前期准备

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

3.2 新建 CubeMx 工程

新建 STM32G474RET6 的工程

6d140094-c6ad-11ec-bce3-dac502259ad0.png

3.3 配置 ADC

配置 ADC1 配置引脚

可以直接打开 MC Workbench 生成的 STM32G474QE 的*.ioc 文件做为参考

6d2bc382-c6ad-11ec-bce3-dac502259ad0.png

配置 ADC1 配置功能

这边注意 ADC1 左对齐,触发信号为 Tim1 Trigger Out Event,只有 Inject 模式没有 Regular 模式

6d395e2a-c6ad-11ec-bce3-dac502259ad0.png

使能 ADC1/2 中断

6d47d5d6-c6ad-11ec-bce3-dac502259ad0.png

配置 ADC2 引脚与功能

这边 ADC2_IN14 是复用在 ADC1_IN14 的引脚上

6d617b44-c6ad-11ec-bce3-dac502259ad0.png

配置 ADC2 功能

ADC2 有两个通道用于电压与温度传感采样,使用 Regular 模式,用于电流采样的使用 Inject 模式,这点区别于 ADC1的配置

6d7ef37c-c6ad-11ec-bce3-dac502259ad0.png

3.4 配置 Timer1

配置 TIM1 输出管脚

这边只使用上桥的 PWM 输出,因此只配置上桥输出 PWM 波,其中 CH4 用于 ADC 触发,无外部 PWM 输出。

6d9b8366-c6ad-11ec-bce3-dac502259ad0.png

配置 TIM1 功能

这边有些宏定义,可以参考 MC Workbench 生成的工程,注意定义为相同名字

6db1be56-c6ad-11ec-bce3-dac502259ad0.png

使能 TIM1 的中断

6dccff40-c6ad-11ec-bce3-dac502259ad0.png

3.5 配置调试串口

6df1499a-c6ad-11ec-bce3-dac502259ad0.png

3.6 使能 STM32G4 特有的 Cordic 外设

6e0b1028-c6ad-11ec-bce3-dac502259ad0.png

3.7 重新分配管脚

将管脚定义为硬件控制的引脚,增加输入输出引脚

6e1e5c82-c6ad-11ec-bce3-dac502259ad0.png

3.8 管脚名称重定义

重新定义管脚名称,符合 MC Workbench 生成的命名

6e3e95d8-c6ad-11ec-bce3-dac502259ad0.png

3.9 规划 NVIC 的中断优先级

这边特别注意中断优先级别的设定,将影响到程序运行。

6e58c64c-c6ad-11ec-bce3-dac502259ad0.png

3.10 不生成电机相关的中断程序

因为电机相关的中断程序中电机库中已经有了,这边不使用 CubeMx 生成中断代码

6e833e36-c6ad-11ec-bce3-dac502259ad0.png

3.11 系统其他的配置

分别配置 RCC 为外部晶振,GPIO 口的默认设置,Sys 的调试部分

6ea4de38-c6ad-11ec-bce3-dac502259ad0.png

3.12 时钟配置

这边我们外部晶振为 24MHz,System 时钟配置为 170MHz

6eb8cbfa-c6ad-11ec-bce3-dac502259ad0.png

3.13 生成工程

6ed4f078-c6ad-11ec-bce3-dac502259ad0.png

3.14 对生成工程进行修改、添加

拷贝文件

将 MC Workbench 生成的文件夹下的 MCSDK_v5.4.3 拷贝到 CubeMx 直接生成的 G474_MC 文件夹下,另外 Inc 与Src 文件也同时拷贝进去,需要选择不覆盖同名文件。

6eed5f5a-c6ad-11ec-bce3-dac502259ad0.png

打开 CubeMx 生成的工程,在工程中添加 Group 以及增加文件到工程中。

6f065f1e-c6ad-11ec-bce3-dac502259ad0.png

6f1de562-c6ad-11ec-bce3-dac502259ad0.png

增加 API 以及控制文件到工程中

6f3d05e6-c6ad-11ec-bce3-dac502259ad0.png

6f644160-c6ad-11ec-bce3-dac502259ad0.png

增加头文件包含目录

6f841cc4-c6ad-11ec-bce3-dac502259ad0.png

6fa18502-c6ad-11ec-bce3-dac502259ad0.png

修改 Main.c 文件

包含头文件以及增加电机控制初始化函数

6fbf99e8-c6ad-11ec-bce3-dac502259ad0.png

3.15 验证是否正常工作

编译下载后,使用 Workbench 控制电机转动

6fe10600-c6ad-11ec-bce3-dac502259ad0.png

6ffcfdf6-c6ad-11ec-bce3-dac502259ad0.png


THE END


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 基于IC555的可变PWM振荡器电路

  • 优化电路板布局的简单方法

  • 如何使用LED驱动器LM3915制作振动计

  • 分享一个电网倾角计电路

  • 电谐波图形均衡器示意图

  • 一种构建12V和230V双直流电源的简单方法

    相关电子头条文章