type=file 把默认的未选择文件换成别的_工程师笔记:如何结合STM32CubeMX与MC Workbench生成修改未包含的芯片程序...

本文介绍了当所选芯片不在MC Workbench中时,如何利用STM32CubeMX生成电机控制代码。通过选择相近型号的STM32G474QE,配置ADC、TIM1等外设,并在STM32CubeMX中进行相应的工程设置,最终将MC Workbench的文件与STM32CubeMX生成的工程结合,实现对未包含芯片的FOC控制。
摘要由CSDN通过智能技术生成

f035a54829175988af81817f5a8b0759.png

所选择的芯片未包含在MC Workbench中怎么办?

本文教你使用STM32CubeMX结合MC Workbench生成FOC代码

前言

当前ST的产品丰富多彩,多达1000多种的料号可供客户选择,同时ST针对电机FOC控制,推出了MC SDK V5.x的马达控制软件系统。该软件结合STM32CubeMX生成马达控制代码。由于MC Workbench软件的芯片选择有限,不可能包含所有ST的产品料号,因此有些客户需要使用该软件时,会发现选择的芯片未包含在workbench中。本文针对这种场景,详细说明如何结合STM32CubeMX与MC Workbench生成未包含的芯片程序。客户通过该文档可以使用全系列ST产品用于电机的FOC控制,为客户带来便利。本文使用Nucleo-STM32G474RET6(控制板) + X-Nucleo-IHM16M1(功率板)+ GBM2804H-100T(电机)。

1 MC Workbench操作

1.1新建工程

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

212c6ec20e8888e6e3b5d3592e9256c2.png

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

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

aabb19232936fa0728159bb1cb919d8b.png

1.3芯片选择与配置

首先我们看到在MC workbench中并没有STM32G474RET6这个芯片型号,因此我们需要选择与之相近的单片机。原则是Flash大小相同优先选择,型号相似次之,同一系列最后。这边我们可以选择STM32G474QE作为参考型号。

433caf3c84f79f8843a93deb13d697a6.png

1.4数字端口配置

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

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

293fdcb0a4c4f900b207bcc1e00b60a5.png

1.5模拟端口配置

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

0f56fa2bdf9f5a4a17e899a8950ba0a4.png

1.6生成代码

生成STM32G474QE的电机控制代码,用于参考配置STM32G474RET6的CubeMx配置。

c6d4dba8c3d1047f0773f4efbef752a2.png

2

基于STM32CubeMX生成电机控制外设的初始化代码

2.1新建STM32CubeMX工程

新建STM32G474RET6的工程

c4d26f47547f2390554177be06167323.png

2.2配置ADC

配置ADC1配置引脚

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

c3a0a02251055f228dfbe333e9b7932e.png

配置ADC1功能

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

68e857d3c013089d73ff5097406fb085.png

使能ADC1/2中断

a509232433c865ea3181b2fd07cb0434.png

配置ADC2引脚与功能

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

b98ffd196f44d7ec6cf916e2203ace91.png

配置ADC2功能

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

cb0fc88cc4cdcacd901a5850dc34c9f9.png

2.3配置Timer1

配置TIM1输出管脚

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

57ffb2fd48dcdc5010e2631966cb7f36.png

配置TIM1功能

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

201c316b45bafc9847393eefa92941d6.png

使能TIM1的中断

c0de833fb549935c3d51beabf0a31995.png

2.4配置调试串口

4934f2e1623edc3f49157a3c06a8c836.png

2.5使能STM32G4特有的Cordic外设

7d0e1c889cefcc819a3b7e9c1c91df27.png

2.6重新分配管脚

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

a1fdba0b0dea38e60a4211607e2cabbb.png

2.7管脚名称重定义

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

77ab16a262a9dcd1bc46e6075e151552.png

2.8规划NVIC的中断优先级

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

06947f04b26db98af13fb5a8607dee50.png

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

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

32761eeb9e4ffc367f0b6fecfd08e397.png

2.10系统其他的配置

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

7d836714b7a316be186feca980814dd1.png

2.11时钟配置

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

4ee4c3fb9c7e26d94bc69cb474f53d08.png

2.12生成工程

2cdc72c10a14ef9057d06c4ad5fc8828.png

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

3.1拷贝文件

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

e073218cc6a44dafd81c4b614f8e6e2f.png

3.2添加电机FOC库

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

1a1a6f402eb548224e96aca2ffc0e57d.png

48dd3216b6271a477c4b918909b55ef1.png

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

64acdb827ca34fc469f48ee20d64dc2d.png

9b3558ae066ae41417350345f7bad430.png

3.4增加头文件包含目录

c8680dab93ef81040efcd3fe4a26c4ef.png

74d1dfafd865290e372ad6795bf10a43.png

3.5修改Main.c文件

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

d4bb12a9cf5b1f41d9957479e3ef1235.png

4 验证是否正常工作

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

57fa141c73dfd197f2799a753b2ceaa5.png

ecce7888bc6dff53f07b77e157d82cb1.png

END 来源:STM32公众号
版权归原作者所有,如有侵权,请联系删除。 ▍ 推荐阅读

飞机上一般是什么操作系统?

高速CAN、容错CAN、LIN总线有什么区别?

大佬终于把鸿蒙OS讲明白了,收藏了!

571ca06f3fa993e880d50e1bcb63df4b.gif

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值