0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

STM32单片机 来源:STM32单片机 作者:STM32单片机 2022-04-28 14:23 次阅读

前言

当前 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

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47788

    浏览量

    409114
  • WORKBENCH
    +关注

    关注

    0

    文章

    22

    浏览量

    10876
  • 控制程序
    +关注

    关注

    1

    文章

    47

    浏览量

    8946
  • CubeMx
    +关注

    关注

    0

    文章

    28

    浏览量

    1211

原文标题:工程师笔记|使用 CubeMx 生成未在 MC SDK V5.4.4 中包含的芯片的电机控制代码

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    用KEIL编译Workbench生成的工程之后报错的原因?

    用KEIL编译Workbench生成的工程之后报错误 这是啥问题
    发表于 04-25 08:03

    使用MotorControl Workbench 5.3.3配置生成软件,ENC_CalcAvrgMecSpeed01Hz这个程序哪里改动?

    如题,使用MotorControl Workbench 5.3.3,配置生成软件,发现使用设置速度要除于6,反馈速度需要*6才行。请问ENC_CalcAvrgMecSpeed01Hz这个程序那里改动?改成不用除于6
    发表于 04-23 06:21

    ST Motor Control Workbench不能生成代码怎么解决?

    ST Motor Control Workbench不能生成代码
    发表于 04-15 06:09

    用ST MC Workbench生成代码时报错怎么解决?

    用 ST MC Workbench生成代码时报错
    发表于 04-11 07:08

    用STM32F407开发电机设计,用ST Motor Control Workbench设置参数后程序跑飞到HardFault_Handler函数的原因?

    大家好,最近用STM32F407开发电机设计,用ST Motor Control Workbench设置参数后,生成程序连接电机空转运行时跑飞到HardFault_Handler函数,我只在
    发表于 04-01 06:01

    stm32 motor control workbench生成代码时,找不到STM32CUBEMX怎么解决?

    两个软件都安装在:D:Program Files (x86)STMicroelectronics, cubeMX版本是6.1.2 motor control WORKBENCH版本是5.4.5,也试过5.Y.1,在生成的最后一步
    发表于 03-28 07:48

    mc workbench卡在代码生成这一步不动了是什么原因?

    mc workbench卡在代码生成这一步不动了是什么原因
    发表于 03-27 06:52

    MC WORKBENCH的MOTOR PILOT不能连接上是什么原因?

    我使用MC WORKBENCH 5.Y.4 自动生成的电机驱动例程,后端是IAR的IDE,通过ST-LINK 连接电机驱动评估板(EVSPIN32F06Q2S1),同时打开MC
    发表于 03-22 15:24

    使用MC workbench6.0新建P-NUCLOE-IHM03报错的原因?

    使用MC workbench6.0新建P-NUCLOE-IHM03报错
    发表于 03-22 06:57

    STM32CubeMX安装最新版本V6.9,Motor Control Workbench生成项目工程总是显示STM32CubeMX not found的原因?

    STM32CubeMX安装最新版本V6.9,但Motor Control Workbench生成项目工程,总是显示STM32CubeMX not found?
    发表于 03-14 07:28

    STM32 motor control workbench点击生成项目文件后界面一直无任何显示是为什么?

    安装目录都是英文,在两台电脑上都安装试过,STM32 motor control workbench版本5.4.6,STM32CUBEMX版本是6.4,点击生成项目文件后界面一直无任何显示。
    发表于 03-14 06:42

    MotorControl Workbench 5.4.8和哪个版本的STM32CubeMX可以配合使用?

    我的MotorControl Workbench一直不能创建代码,版本是V5.4.8,cubemx版本是最新的,代码老是generation failed,请推荐一个合适的cubemx版本
    发表于 03-08 07:22

    如何将stm32的控制程序转成51的程序?

    如何将stm32的控制程序转成51的程序,用的是意法的传感器,给的控制程序也是32的
    发表于 11-03 08:07

    在 IAR Embedded Workbench中进行ARM+RISC-V多核调试

    在之前的文章中,我们介绍了如何在IAR Embedded Workbench for Arm中进行多核调试,其中所有的CPU内核都是基于ARM架构。近些年来,随着RISC-V的兴起,不少芯片集成
    发表于 06-14 16:55

    RA6T2无传感器矢量控制应用笔记 [3] 控制程序描述 (1)

    3. 控制程序描述 介绍本应用笔记的目标软件。 3.1 控制的内容 3.1.1 电机启动/停止 电机的启动和停止通过来自“Renesas Motor Workbench”或SW1的输入控制
    的头像 发表于 05-22 17:45 290次阅读
    RA6T2无传感器矢量<b class='flag-5'>控制</b>应用笔记 [3] <b class='flag-5'>控制程序</b>描述 (1)