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

63c6521f8b59dcee2c3b404e92837b33.png

前言

当前 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 往期的技术培训。

e6b886bd1bf6a089bb6da649ef0e75b8.png

1.2 STM32CubeMX 中的操作

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

6cebc75d9c17759f4754a755ee8120c5.png

1.3 导入上面的*.ioc 文件

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

86f1ff218943271b1457fdd915c483ff.png

14db935dbd32a2fe38eddc69a9a28419.png

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

16f689e80d0e0e3d9369315678311858.png

1.4 检查并生成工程

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

cd87d73a904f8154ebc55976b96a3d03.png

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

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

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

3e181bc4519d03b31d8aef09fe64c4da.png

1.5 注意事项

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

2. 2. 在 MC Workbench 

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

-- STM32G474RET6

2.1 新建工程

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

f8cc1678c6b42ee06f86303ecdd6027c.png

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

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

7970c7b6bf88906eec690b09a5945f2a.png

2.3 芯片选择与配置

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

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

914c70f26df4222ab03d8def66e9203c.png

2.4 数字端口配置

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

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

5300749234ad8b9a95fc15cf43dd3dfd.png

2.5 模拟端口配置

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

0612b7abcc484d085a4ec3f024fd1139.png

2.6 生成代码

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

68a06b1f36ba0661e2058a4f655f7db1.png

生成 CubeMx 工程文件

8358b62e479a56d51fa92576d859bac3.png

2.7 新建 CubeMx 工程

新建 STM32G474RET6 的工程

272a4ad6bea10fc46f331a0ccdf6db22.png

2.8 导入上面的 G474QE.ioc 文件

2ad62024dff0dc89d0ee74560347ee47.png

75705b65e3630cc994d873223e0742c8.png

2.9 生成工程

95f0f48e18adf223e65e0a2d12c08650.png

2.10 验证是否正常工作

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

894ec4cebe978507cc57a07fd85fbe94.png

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

-- STM32G474RET6 

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

3.1 前期准备

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

3.2 新建 CubeMx 工程

新建 STM32G474RET6 的工程

b5ee671b3baddf8724c48bcbe8caa745.png

3.3 配置 ADC

配置 ADC1 配置引脚

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

84bc3b41e7c6a7135539a27ff474db1b.png

配置 ADC1 配置功能

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

19aafa2f312caa2fda0dd4051b1c8ae4.png

使能 ADC1/2 中断

85ce4b3de25025c6efcda318e5732aaa.png

配置 ADC2 引脚与功能

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

b23e53ed1f17180642eb5121d623c142.png

配置 ADC2 功能

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

1375cf869d075cf08329e627fd774e86.png

3.4 配置 Timer1

配置 TIM1 输出管脚

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

911f072c21b659be59b0ed0191fc26e5.png

配置 TIM1 功能

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

702fcf4c47202b3670585c26992a9dd5.png

使能 TIM1 的中断

c83b1c2074faa3652538276d3ca40df1.png

3.5 配置调试串口

27fde44b45606ffdc1ea5cbb904c6139.png

3.6 使能 STM32G4 特有的 Cordic 外设

770a0e8d337335ed7fae56f94d1a70da.png

3.7 重新分配管脚

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

8b9f66b6e99694f57aeb89ec7e9dd0f2.png

3.8 管脚名称重定义

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

5e2d48cae6a3afd55b4864bb5c2aabaf.png

3.9 规划 NVIC 的中断优先级

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

da70b7d7ce0912178c6d35b35c1f329d.png

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

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

8ba394e0923299222f5cab884f67c6f6.png

3.11 系统其他的配置

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

7583cc2d7ed2177c06c928a2990fbe58.png

3.12 时钟配置

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

c362a6d8dd4152f62bfc2372997218ed.png

3.13 生成工程

fd159ac2415bf3d0f70814abc51a03e0.png

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

拷贝文件

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

d801c015d53434259335ad6e08d86ea2.png

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

02987b281d00b6ab79c99a6c637190c6.png

b818b921f686983f93f88d33ef30706c.png

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

dd44c9c9e13f13554406301b77e2af13.png

0085d77f95798f9843857bfee3f6f05f.png

增加头文件包含目录

dafd64c1035cb81969269fa122ac2ca0.png

ec159e948bf55e3666529ab62e2f8d0f.png

修改 Main.c 文件

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

2e8b0662fa3dc69642c03817fb5579d6.png

3.15 验证是否正常工作

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

d6ef47407e3816fc3c8e89496a66ee64.png

f2573f3f8da70a84d299aa3f26067e7c.png

cfa53d7153328222bc1784797316bdf5.png

1.SylixOS,这款嵌入式RTOS值得学习!

2.芯片短缺或将结束?数据来说话。。。

3.代码调着调着就失联了,你碰到过吗?

4.图文并茂详解STM32时钟配置

5.电力物联网与嵌入式系统,关系几何?

6.RT-Thread携手北航出版社共办人工智能师资培训

f2383d4273d55e3a121efa2a54ec51ae.gif

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
V5.4.4完整版/2020年5月 STM32电机控制软件开发套件(MCSDK)- 完整源代码 主要变化: Version 5.4.4 is mostly a bug fix release of X-Cube-MCSDK v5.4.3. It also introduces some new feature. ◾Added Support for PFC on STM32F3. This support is added as an example for the STEVAL-CTM010V1 Dual motor demo board. ◾Atollic TrueSTUDIO & SW4STM32 Deprecation. Atollic TrueSTUDIO and SW4STM32 IDEs are no longer actively developed and ST's strategy is to replace them with STM32CubeIDE. Recent STM32 series like STM32G4 devices for instance, are already not supported by all these IDEs. In a near future release of the Motor Control SDK, support for these IDE will be dropped and it will not be possible anymore to generate a project for them from the Workbench. ◾Introduced a workaround for the issue with injected ADC conversions that exists on STM32G4xx Cut 2.2 devices. See the dedicated section below for more details. ◾Reintroduced the correct ST Motor Profiler version (the same as release 5.4.1 of the SDK). The Motor Profiler delivered with MCSDK 5.4.2 and 5.4.3 was incomplete. ◾Fixed an issue with the faulty setting of the maximum application current for the second drive in dual drive configurations ◾Fixed an issue with Position Control configurations using an absolute position encoder (with Z signal). ◾Fixed another issue with Position Control where a division by 0 was possible. ◾Fixed a bootstrap capacitor charge issue in ICS configurations ◾Fixed a SW Error that could occur during the offset measurement loop ◾Fixed a code generation issue resulting in a compilation error when enabling open loop. ◾Fixed a STM32H7 example compilation issue - missing files have been added. ◾Fixed a generation issue for some STM32G0 and STM32F0 devices where TIM2 does not exist but was referenced in the code anyway. This resulted in a compilation failure. ◾Fixed an issue with STM32F1 HD devices in single shunt configurations ◾In the workbench, the maximum PWM frequency can now be set as high as 500 KHz. ◾Fixed an issue due to the limited RShunt resolution. Now, values such as 0.00025 Ω are accepted. ◾Fixed an issue with NVIC configuration for IHM34V2 inverter boards. ◾Fixed a Workbench issue that resulted in a wrong pin assignment when creating new projects based on the NUCLEO-G431RB control board. See section Pin assignment with NUCLEO-G431RB for more details. ◾Fixed an issue that resulted in incorrect overcurrent settings with some power boards. See section Over current settings correction for some power boards ◾Enable users to select DAC channel 2 with STM32L452
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值