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

发布者:WanderlustHeart最新更新时间:2024-06-18 来源: elecfans关键字:CubeMx  Workbench  workbench  控制程序 手机看文章 扫描二维码
随时随地手机看文章

前言

当前 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?imageView2/2/w/1000

1.2 STM32CubeMX 中的操作

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

6b492c9e-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

1.3 导入上面的*.ioc 文件

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

6b5b011c-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

6b77a2f4-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

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

6b948e6e-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

1.4 检查并生成工程

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

6ba4601e-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

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

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

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

6bc8b52c-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

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?imageView2/2/w/1000

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

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

6c003c86-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

2.3 芯片选择与配置

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

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

6c1e7eb2-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

2.4 数字端口配置

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

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

6c2e324e-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

2.5 模拟端口配置

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

6c3fcbf8-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

2.6 生成代码

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

6c5181c2-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

生成 CubeMx 工程文件

6c72bd60-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

2.7 新建 CubeMx 工程

新建 STM32G474RET6 的工程

6c8c8c36-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

2.8 导入上面的 G474QE.ioc 文件

6cab36a4-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

6cc66ae6-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

2.9 生成工程

6ce76ffc-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

2.10 验证是否正常工作

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

6cfde3ea-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

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

-- STM32G474RET6

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

3.1 前期准备

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

3.2 新建 CubeMx 工程

新建 STM32G474RET6 的工程

6d140094-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

3.3 配置 ADC

配置 ADC1 配置引脚

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

6d2bc382-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

配置 ADC1 配置功能

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

6d395e2a-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

使能 ADC1/2 中断

6d47d5d6-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

配置 ADC2 引脚与功能

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

6d617b44-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

配置 ADC2 功能

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

6d7ef37c-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

3.4 配置 Timer1

配置 TIM1 输出管脚

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

6d9b8366-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

配置 TIM1 功能

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

6db1be56-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

使能 TIM1 的中断

6dccff40-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

3.5 配置调试串口

6df1499a-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

3.6 使能 STM32G4 特有的 Cordic 外设

6e0b1028-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

3.7 重新分配管脚

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

6e1e5c82-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

3.8 管脚名称重定义

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

6e3e95d8-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

3.9 规划 NVIC 的中断优先级

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

6e58c64c-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

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

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

6e833e36-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

3.11 系统其他的配置

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

6ea4de38-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

3.12 时钟配置

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

6eb8cbfa-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

3.13 生成工程

6ed4f078-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

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

拷贝文件

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

6eed5f5a-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

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

6f065f1e-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

6f1de562-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

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

6f3d05e6-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

6f644160-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

增加头文件包含目录

6f841cc4-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

6fa18502-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

修改 Main.c 文件

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

6fbf99e8-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

3.15 验证是否正常工作

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

6fe10600-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

6ffcfdf6-c6ad-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000


THE END


关键字:CubeMx  Workbench  workbench  控制程序 引用地址:如何结合CubeMx与MC Workbench生成workbench中所未包含芯片的控制程序

上一篇:怎样去解决Keil编译的速度越来越慢的问题呢
下一篇:ESP8266烧写Gagent固件

推荐阅读最新更新时间:2026-03-22 20:21

IAR推出新版IAR Embedded Workbench for Arm功能安全版,该版本配备经过认证的静态代码分析功能
IAR推出新版IAR Embedded Workbench for Arm功能安全版,该版本配备经过认证的静态代码分析功能 瑞典乌普萨拉,2024年2月20日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR宣布 :推出其旗舰产品IAR Embedded Workbench for Arm功能安全版的最新版本9.50.3。此次发布进一步加强了IAR支持开发人员创建安全、可靠和符合标准的嵌入式应用程序的承诺,涵盖了汽车、医疗设备、工业自动化和消费电子等多个行业。该版本中最重要的新功能是经过认证的C-STAT,这是专为安全关键应用程序设计的静态代码分析工具。 IAR Embedded Workbench for Ar
[嵌入式]
IAR推出新版IAR Embedded <font color='red'>Workbench</font> for Arm功能安全版,该版本配备经过认证的静态代码分析功能
IAR Embedded Workbench for Arm现已全面支持
凌通科技GPM32F系列MCU 中国上海 — 2023年6月 — 嵌入式开发软件和服务之全球领导者 IAR,与业界领先的MCU供应商凌通科技(Generalplus)联合宣布,最新发表的完整开发工具链IAR Embedded Workbench for Arm 9.4版本已全面支持凌通科技GPM32F系列MCU。 凌通科技致力于语音IC、LCD IC、数字图像处理IC、AI/智能教育相关芯片、8至32位各式MCU芯片的研发,其 GPM32F系列MCU产品具备高性能及可靠性,广泛应用于家电产品/马达产品/无线充电/量测IC。 IAR Embedded Workbench for Arm 9.4 版本为凌通科技MCU
[嵌入式]
IAR Embedded <font color='red'>Workbench</font> for Arm现已全面支持
借助最新版 Connected Components Workbench 软件提升设计效率
(2021 年 3 月 25 日)借助罗克韦尔自动化的最新版 Connected Components Workbench(一体化编程组态软件),工业工程师可以更高效地设计和配置独立机器。最新版软件具有多项新增功能和增强功能,可提高下载和构建性能,从而打造更高效、更友好的设计流程。 Connected Components Workbench(一体化编程组态软件)最新版 的功能亮点包括: •新增全局和局部变量数据网格,能够帮助工程师加快项目开发速度。例如,使用快速声明功能,用户可一键创建前缀、后缀和数据类型相同的多个变量。筛选栏简单直观,便于用户快速查找标签。 •增强运行模式更改 (RMC) 功能,用户无需下载项目
[工业控制]
借助最新版 Connected Components <font color='red'>Workbench</font> 软件提升设计效率
IAR embedded Workbench for STM8 激活教程
IAR for STM8 3.10破解版全名IAR Embedded Workbench for STM8,IAR for STM8是一款即嵌入式工作平台,在有些地方也会看见IAR EWARM,IAR Stm8 主要用于ARM处理器的软件开发,是一款来自IAR官网的一种集成开发环境,支持市面上所有的STM8系列芯片,有一百多种之多没闪电吧小编这里整理了IAR for STM8 3.10完整安装包和补丁授权文件,另外还为大家带来了详细的图文教程! 安装激活教程 1.本站下载压缩包,解压后获得安装包和补丁,双击安装包EWSTM8-3104-Autorun.exe安装 2.点第一项IAR Embedded Workbench for
[单片机]
IAR embedded <font color='red'>Workbench</font> for STM8 激活教程
IAR发布IEmbedded Workbench新版本
IAR Systems发布了IAR Embedded Workbench for ARM 集成开发环境 的最新版本 v 5.20。 在这个新版本中, IAR 增强了对 Cotex-M3 的调试支持和速度优化。 在调试方面,支持了对跟踪信息包( trace packets )的处理,跟踪信息包通过 SWO 通道发送, SWO 是 CoreSight 的一部分,而 CoreSight 在 Cortex 处理器家族中被用于片上调试和跟踪处理。用户完全可以配置跟踪包的类型,这些都可以在 IAR C-SPY 调试器中显示。此外,从 printf 输出的调试信息可以通过 SWO 通道传送,并在 C-SPY 中显示,而这个
[单片机]
如何快速建立一个PID控制程序
PID全称是Proportion Integration Differentiation,即比例积分微分。 PID控制是最早发展起来的控制方法之一,此控制方法与自动化仪表的配合,可以大大减少人工,提升生产过程的自动化水平。由于PID控制算法简单、适用性广和可靠性高,已经成为现代工业过程中不可或缺的控制手段。 S7-200 SMART支持PID控制。以下介绍利用PID向导快速建立一个PID控制程序的方法。 前提条件 输入输出仪表信号均是4~20mA; 硬件为CPU SR20+EM AM06。 操作步骤 1. 打开STEP 7Micro/WIN SMART,新建硬件,并对EM AM06模块通道类型进行设置(
[嵌入式]
如何快速建立一个PID<font color='red'>控制程序</font>
STM32CubeMx GPIO口输出
stm32用hal库建立工程通用且方便,用的人也越来越多了,正点原子之前也有hal库的书还有例程,但是正点原子hal库的例程是以调用hal库的形式制作的,没有直接从cube的建立工程开始做起,并且在使用的过程中有根据项目更改过库函数。网上STM32Cube的教程也大多是v4、v5版本,和v6相比很多界面和功能有所变化,所以写了这个。文中部分内容参考正点原子开发指南和网上的文章教程。 工作环境: STM32CubeMXv6 Keil5 如果仅仅使用GPIO口执行输入输出的操作,那么RCC时钟,晶振,时钟树和中断都是可以不用配置使用默认的,建立工程后左键点击需要打开的IO口后选择GPIO_OUTPUT或GPIO_INPUT。
[单片机]
配置CLion + STM32CubeMX开发环境
0.前言 由于本人对Keil的编译环境不太满意,故在网上搜寻了各种代替方法,最终选定了CLoin的IDE,它可以支持从STM32CubeMX生成的代码直接编译,节省了大量时间去配置初始化代码,以下只作为本人的一次环境搭建的踩坑记录,希望对正在解决问题的你有所帮助。 本次配置参考了如下几位大佬的说明 配置CLion用于STM32开发【优雅の嵌入式开发】 - 哔哩哔哩 (bilibili.com) 使用Clion优雅开发STM32 _哔哩哔哩_bilibili Clion实现Stm32标准库开发 - 哔哩哔哩 (bilibili.com) 网页链接 1.环境所需配置搭建 首先确保已经安装了stlink的驱动,如使用的是
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved