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

发布者:WanderlustHeart最新更新时间:2024-06-18 来源: elecfans关键字:CubeMx  Workbench  workbench  控制程序 手机看文章 扫描二维码
随时随地手机看文章

前言

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


关键字:CubeMx  Workbench  workbench  控制程序 引用地址:如何结合CubeMx与MC Workbench生成workbench中所未包含芯片的控制程序

上一篇:怎样去解决Keil编译的速度越来越慢的问题呢
下一篇:ESP8266烧写Gagent固件

推荐阅读最新更新时间:2024-11-16 23:08

使用stm32cubemx的usb-host-cdc库驱动EC20模块
开发环境: 开发板:正点原子F407探索者 代码生成工具:STM32CubeMX v5.4.0 IDE: eclipse + ac6工具链 实现功能: 单片机可以通过usb接口和EC20的AT指令虚拟串口通讯。 为了方便测试,配置串口2,将 模块- 单片机 方向的数据通过串口2发送到电脑,将电脑通过串口工具发送到单片机的数据,转发给模块。 开始 1、使用STM32CubeMX配置工程,生成基础代码 1.1.1 配置晶振 1.1.2 配置时钟 1.2.1 配置串口2 1.2.2 配置DMA 1.2.3 开串口中断 1.3.1 配置USB Host_Only,不使用VBUS SOF 1.3.2 在M
[单片机]
使用stm32<font color='red'>cubemx</font>的usb-host-cdc库驱动EC20模块
MC68HC705J1A实现超声波汽车倒泊防撞报警器的设计
超声波汽车倒泊防撞报警器是超声波测距的一个重要应用。在汽车倒泊时,利用超声波的反射可以探测汽车尾部与障碍物之间的距离,提供多级声光报警。本文介绍一种以MC68HC705J1A单片机为核心的低成本超声波汽车倒泊防撞报警器的设计方法,该报警器的感应时间小于0.5s,测距精度可达0.1m。 1 超声波测距原理 超声波测距原理是根据超声波遇到障碍物后可反射回来的特性,记录发射信号到收到第一个反射信号的时间t,利用公式s=c·t/2,计算出距离s。其中c是声速,标准状态下声速c=331.4m/s。超声波测距原理如图1所示。   2 超声波汽车倒泊防撞报警器的组成 超声波汽车倒泊防撞报警器的组成如图2所示。  
[嵌入式]
STM32F429 Cubemx配置Timer实现5ms一个中断
目的:在STM32F429实现一个5ms一个interrupt的中断,并且重复触发 我们选用TIM2,可以看到TIM2是在APB1总线上,也可以看到APB1总线的 Clock是90M 整个Cube的配置为: 其中我要来说下几个参数: 预分频器值(Prescaler value):此部分就是把clock source分频到一个你想要的频率,计数器时钟频率CK_CNT 等于fCK_PSC/ (PSC + 1) 比如我们APB1是90M,我们此部分设置90-1,得到的最终频率是90M/((90-1)+1) = 1MHz 定时器周期(Period):我们设置预分频后得到1MHz,此部分想得到5ms,就是1M Hz
[单片机]
STM32F429 <font color='red'>Cubemx</font>配置Timer实现5ms一个中断
STM32CubeMX串口接收数据(DMA方式,HAL库)
使用DMA方式可以减轻CPU负担,此例子相关配置可以参考 STM32CubeMX串口接收数据(中断方式,HAL库) (1)设置USART1中断,NVIC配置如下图 (2)设置USART1的DMA,如下图 注意:要将RX的模式设置为circular ,否则只能接收一次,如果这里不作设置,网上也有 其他方法 介绍代码实现多次接收的,但既然用到了STM32CubeMX就尽量发挥最大作用吧! (3)生成项目工程 (4)在main.c里设置变量以及启动DMA接收 /* USER CODE BEGIN PV */ /* Private variables ------------------------------------
[单片机]
STM32<font color='red'>CubeMX</font>串口接收数据(DMA方式,HAL库)
STM32CubeMX输出可调频率与占空比的PWM
1,新建工程,我选的是STM32F103ZET6芯片,选择定时器的PWM功能。 2、配置时钟,我这里配的是内部时钟,有需要的可以自己改。 3、配置定时器,默认就可以,因为代码里面需要对配置的初始化代码进行修改的,而修改后才可以实现该功能。 4、生成代码后,修改代码,找到PWM初始化函数,修改为如下,注意要把初始化函数前面的 static 关键字也去掉,而且函数声明也要跟着修改。 void MX_TIM4_Init(uint16_t pre,uint16_t pul) //修改初始化函数,改变频率与PWM{ //占空比=Pulse/Period;频率:f=48M/pre/per TIM_MasterConfigTypeD
[单片机]
STM32<font color='red'>CubeMX</font>输出可调频率与占空比的PWM
基于AVR的RGB彩灯控制芯片WS2801的控制程序
简介:本文主要介绍的是基于AVR的RGB彩灯控制芯片WS2801的控制程序 #include color.h #include delay.h // 0.18084us void Sbi_SDI() { sbi(PORTC,1); } void Cbi_SDI() { cbi(PORTC,1); } void Sbi_CKI() { sbi(PORTC,0); } void Cbi_CKI() { cbi(PORTC,0); } void Send_CKI() //WS2801 上升沿 { Cbi_CKI(); // 时钟 拉低 _delay_us(6); Sbi_CKI(); // 时钟
[单片机]
LED电脑电子钟电路及控制程序
        本例介绍一种用 LED 制作的 电脑电子钟 (电脑万年历)。其制作完成装潢后的照片如下图: 上图中,年、月、日及时间选用的是1.2寸共阳数码管,星期选用的是2.3寸数码管,温度选用的是0.5寸数码管,也可根据个人的爱好选用不同规格的数码管。原理图如下图所示: 上图中,CPU选用的是AT89C2051,时钟芯片选用的是Dallas公司的DS1302,温度传感器选用的是Dallas公司的数字温度传感器DS1820,显示驱动芯片选用的是德州仪器公司的TPIC6B595,也可选用与其兼容的芯片NC595或国产的AMT9595。整个电子钟用两个键来调节时间和日期。一个是位选键,一个是数字调节键。按一下位选键,头两位数
[嵌入式]
mc9s12 c语言,飞思卡尔mc9s12的prm文件详解之二
关于Codewarrior 中的 .prm 文件 要讨论单片机的地址映射,就必须要接触.prm文件,本篇的讨论基于 Codewarrior 5.0 编译器,单片机采用MC9S12XS128。 通过项目模板建立的新项目中都有一个名字为“project.prm”的文件,位于Project Settings- Linker Files文件夹下。一个标准的基于XS128的.prm文件起始内容如下: .prm文件范例: /* This is a linker parameter file for the MC9S12XS128 */ /*This file is setup to use the HCS12X core only.If
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved