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

审核编辑 :李倩

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

    关注

    462

    文章

    53530

    浏览量

    458843
  • WORKBENCH
    +关注

    关注

    0

    文章

    24

    浏览量

    11485
  • 控制程序
    +关注

    关注

    1

    文章

    52

    浏览量

    9470
  • CubeMx
    +关注

    关注

    0

    文章

    31

    浏览量

    1944

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    突破传统桎梏,PPEC Workbench 开启电源智能化设计新路径

    进度慢。 一、PPEC Workbench:电力电子智能化设计平台 PPEC Workbench 电力电子智能化开发生态平台,以智能化设计、图形化程序开发、器件选型采购推荐、Al 智能助手四大
    发表于 08-26 11:40

    如何在 IAR Embedded Workbench for ARM 开发环境中启用可配置数据闪存并设置大小?

    如何在 IAR Embedded Workbench for ARM 开发环境中启用可配置数据闪存并设置大小?
    发表于 08-26 07:49

    使用MotorControl Workbench_6.3.2配置STM32H743VIT6E的FOC电机控制软件时,找不到对应型号怎么解决?

    官方、各位大佬,在使用MotorControl Workbench_6.3.2配置STM32H743VIT6E的FOC电机控制软件时,找不到对应型号只有745,如何解决,是否可以相似信号替代(如果可以的话有没有说明手册),或者有没有其他手段解决。
    发表于 06-17 06:17

    workbench6.3.2生成的代码,无法用pilot电机参数识别,无法通讯怎么解决?

    。NUCLEO-G474RE的跳线帽没动过(默认),X-NUCLO-IHM08M1改成了FOC的,按官方文件改了5处,下图可以看清。 打开workbench生成文件都是正常的。 然后打开keil5,也是都正常的 到
    发表于 06-09 06:03

    workbench6.3.2生成的代码,无法用pilot电机参数识别,无法通讯怎么解决?

    。NUCLEO-G474RE的跳线帽没动过(默认),X-NUCLO-IHM08M1改成了FOC的,按官方文件改了5处,下图可以看清。 打开workbench生成文件都是正常的。 然后打开keil5,也是都正常的 到
    发表于 06-04 06:06

    ACS880基本控制程序(YINLX)固件手册

    电子发烧友网站提供《ACS880基本控制程序(YINLX)固件手册.pdf》资料免费下载
    发表于 05-21 16:42 1次下载

    基于 IAR Embedded Workbench 的自研 MCU 芯片软件函数与变量内存布局优化精控方法

    在嵌入式软件开发领域,MCU芯片软件的架构设计与内存布局的精细规划对系统性能和稳定性起着关键作用。本文档聚焦于IAR Embedded Workbench环境下,为自研MCU芯片软件提供了一套详尽
    的头像 发表于 04-30 16:38 586次阅读
    基于 IAR Embedded <b class='flag-5'>Workbench</b> 的自研 MCU <b class='flag-5'>芯片</b>软件函数与变量内存布局优化精控方法

    workbench6.3.2生成的代码,无法用pilot电机参数识别,无法通讯怎么解决?

    。NUCLEO-G474RE的跳线帽没动过(默认),X-NUCLO-IHM08M1改成了FOC的,按官方文件改了5处,下图可以看清。 打开workbench生成文件都是正常的。 然后打开keil5,也是都正常的 到
    发表于 04-27 07:24

    为什么MotorControl Workbench无法生成代码?

    我使用MotorControl Workbench5.4.4生成单电机驱动代码,使用正交编码器精度1024,检查引脚没问题后,进入生成页面,识别到STM32CubeMX版本为6.12.
    发表于 03-14 06:28

    雅特力AT32 Workbench焕“芯”升级!引入Middleware助力开发高效提速

    近日,雅特力AT32Workbench开发工具完成重大更新升级,新增对MiddlewareFreeRTOS,以及MiddlewaresUSB_DEVICE和USB_HOST的支持。此次升级致力于深度
    的头像 发表于 03-07 18:46 763次阅读
    雅特力AT32 <b class='flag-5'>Workbench</b>焕“芯”升级!引入Middleware助力开发高效提速

    通过docker下载的DL Workbench,DL Workbench在导入模型时停止响应是怎么回事?

    ) ✗ docker run -p 0.0.0.0:5665:5665 --name workbench -it openvino/workbench:2021.4 在 Safari 浏览器中浏览生成的 URL。 DL
    发表于 03-05 08:54

    无法将自定义COCO数据集导入到OpenVINO™ DL Workbench怎么解决?

    JSON包含以下格式注释的文件:{ \"images\": [], \"annotations\": [] } 创建自定义 COCO 数据集。 无法将自定义 COCO 数据集导入到OpenVINO™ DL Workbench: 上传数据集时发生错误:未知数据集类型
    发表于 03-05 06:02

    请问DLPDLCR4710EVM-G2如何进行控制程序的二次开发?

    DLPDLCR4710EVM-G2提供了GUI,但是没有提供API,如我想自己编写控制程序,有何参考例程吗?
    发表于 02-27 08:05

    请问TLC3578的控制程序能够采集到数据,但采集的数据始终不正确,这可能是什么原因?

    请问TLC3578的控制程序能够采集到数据,但采集的数据始终不正确,这可能是什么原因?
    发表于 02-12 08:37

    STM32CubeMX生成的代码,是怎样的HAL架构?

    需要注意,CubeMX只是一个初始化工具,它只是帮你完成了HAL库外设和时钟的初始化,具体程序的编写还需要查阅HAL库的说明,使用相关函数实现你想实现的功能。CubeMX生成的代码
    的头像 发表于 01-01 21:01 1230次阅读
    STM32<b class='flag-5'>CubeMX</b><b class='flag-5'>生成</b>的代码,是怎样的HAL架构?