当前位置:   article > 正文

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

st foc ad采样左对齐

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

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

werewrwe

前言

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

90cf1e917d639b531d39df2102988e90.png

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

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

d522cf8b1ab037a9067af2ba6e0aea0b.png

1.3芯片选择与配置

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

beba0f7a6202f10096e2b06ddf2aee96.png

1.4数字端口配置

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

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

7da8fe10f867e21bfc4a418d0c7e3757.png

1.5模拟端口配置

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

d7c47b8aedbddf85c448c4ed570fedb2.png

1.6生成代码

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

3bd848883d37d131564deff1a1ca8669.png

2

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

2.1新建STM32CubeMX工程

新建STM32G474RET6的工程

aa936e424bef6ff1c9cb1eb566791036.png

2.2配置ADC

配置ADC1配置引脚

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

75da59716e61c8fe137ce0539cb2bc8c.png

配置ADC1功能

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

e63a1b305932a250e6bc6452b190c765.png

使能ADC1/2中断

7b8a1d32a5d43aae22ba8b51fe94c741.png

配置ADC2引脚与功能

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

bac21ceecd34a5a7d7b3b76790825b81.png

配置ADC2功能

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

ea03e91723a5d1c8f8e90960819661af.png

2.3配置Timer1

配置TIM1输出管脚

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

76de230f1619b9af0c22902eb587f577.png

配置TIM1功能

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

de2df4b34148312045adfcd9069441df.png

使能TIM1的中断

fec6d13b68cc7f35dbbc8c486ac925e5.png

2.4配置调试串口

a881a585999ebd79f9dd9daf15bcd26f.png

2.5使能STM32G4特有的Cordic外设

745ec8adf3a4b6e74632d961cb2eab1d.png

2.6重新分配管脚

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

beae3e430d45ed2e0f3d96c8a02d3622.png

2.7管脚名称重定义

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

89f29e81bce46337bacb05a675ac035f.png

2.8规划NVIC的中断优先级

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

dd39991733782a9c36efd3bbfebcc27f.png

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

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

7727522ffcd2b348945923afa4f3b957.png

2.10系统其他的配置

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

90030d234fc163f6d780c74ce2aa03a8.png

2.11时钟配置

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

85a0b8ae5da455d02b6e82ff62471c6a.png

2.12生成工程

311ed1b04447f86c671b038f973141b6.png

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

3.1拷贝文件

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

93b6ea12d65d48f8e91936ec11679c1a.png

3.2添加电机FOC库

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

55246ea2be87593eff990c3ea8a212b2.png

cd642603b95926d10af9391506bdeec5.png

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

711f84b1ee2b51c32fb8fa9cc5b5201f.png

9baaa4f2bbfb2017d56a4e4c8d559154.png

3.4增加头文件包含目录

9114a44a14ae367c499d4455177a9c09.png

497d6816e652a421f9d006242fd6789a.png

3.5修改Main.c文件

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

2ae0766c73fea4c628683bbb7fec8c18.png

4 验证是否正常工作

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

16fa5f8ed6157e241187f1d214decb2a.png

f7b2b6e537737ce7189ea4152f89e95f.png

- End -

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/247931?site
推荐阅读
相关标签
  

闽ICP备14008679号