你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用STM32CubeMX结合MC Workbench生成FOC代码

[复制链接]
gaosmile 发布时间:2020-12-7 20:01
所选择的芯片未包含在MC Workbench中怎么办?
本文教你使用STM32CubeMX结合MC Workbench生成FOC代码
7 c% U* o: u0 U- s1 z% X3 [/ g& Q* u

' H) n3 m* W7 W7 z5 I# Q
* R. L) L+ Z6 D! k
& M& N/ R% q9 {( [, t
前言
当前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(电机)。
% n6 f3 e, U- ^
1
) o/ J' c5 @: G$ y+ m
MC Workbench操作

! {( [/ m/ a# F6 K2 n4 T0 C3 b
1.1新建工程
8 q8 Z4 X4 q- A3 v- a7 s3 M
如果有Demo板和电机,则选择对应的Demo板与电机型号;如果没有,直接选择customer board。这边我们看到没有Nucleo-STM32G474RET6,因此我们选择customer board。

) A' I: _3 i: H) M" V' Q; p- T2 I
微信图片_20201207195438.png

! M! W1 F4 L& j% O
1.2配置电机与功率板相关配置

) R; ^5 g* ^8 c6 g9 i8 L: Y
分别配置电源,电压保护,电机,电流采样,功率管。因为我们使用了现成的功率板与电机,这边我们使用默认参数即可。如果是自己的电机与功率板,请参考ST往期的技术培训。
7 {5 w. S2 U# y; N
微信图片_20201207195443.png

6 B* w, M* L. Q1 B4 v! N
1.3芯片选择与配置

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

+ R0 D8 `7 S9 M) X5 v% z
微信图片_20201207195447.png
7 ]9 g/ I$ ^& H+ v8 h
1.4数字端口配置

; C- W$ i  T4 c; _
这边我们使用的功率器件为单一PWM与控制使能方式,结合硬件连接为如下配置。
3 W1 b5 F: T  y( H
如果PWM互补的方式则还需要配置下桥控制引脚。
$ \& U$ `6 F; F
微信图片_20201207195450.png

$ _1 _& B' K( L! N2 J7 ?: x* z
1.5模拟端口配置

: a3 H% R3 T; t  l, U# G, F2 u
同样的配置与硬件采样相关的模拟端口。
微信图片_20201207195453.png

# C8 s. _( J6 R( I% W8 j
1.6生成代码

) z% @, g. h: Z+ W5 a
生成STM32G474QE的电机控制代码,用于参考配置STM32G474RET6的CubeMx配置。
微信图片_20201207195458.png
$ v- Q7 F. }( M; L
2+ ~& r3 Y; x. g
基于STM32CubeMX生成电机控制外设的初始化代码
' _& K; O) I9 w3 n' H+ Y& Q6 G, |
2.1新建STM32CubeMX工程

$ W: D0 K! D# _/ T6 P0 X* V5 o
新建STM32G474RET6的工程
微信图片_20201207195502.png
# L( X; X& q) [: M" L

& k  E* s; n2 e0 [
2.2配置ADC
% `( Q( e* i* j! Z& k& {
配置ADC1配置引脚

  q8 u( H9 U$ }4 W+ Q
可以直接打开MC Workbench生成的STM32G474QE的*.ioc文件做为参考。
  }/ W! U, D  H6 z$ N
微信图片_20201207195506.png

$ r7 V  \/ ]7 p
配置ADC1功能
- m1 Z/ F, _" y" r$ D
这边注意ADC1左对齐,触发信号为Tim1 Trigger Out Event,只有Inject模式没有Regular模式。
微信图片_20201207195512.png

# t5 d/ b$ b( c$ [
使能ADC1/2中断
微信图片_20201207195516.png
8 \4 M, k7 P' Z3 S1 V7 n
- M# y+ Q  P- K" l. \" B  t
配置ADC2引脚与功能
& h6 w* m6 F! F' ]9 f, ~* b5 b( ?
这边ADC2_IN14是复用在ADC1_IN14的引脚上。
微信图片_20201207195519.png

4 O9 A5 u$ a$ ]2 L
, }0 s* E4 F. U4 y0 |, U2 h
配置ADC2功能
6 s( c1 W# W& D; l* K
ADC2有两个通道用于电压与温度传感采样,使用Regular模式。用于电流采样的使用Inject模式,这点区别于ADC1的配置。
微信图片_20201207195522.png
) x/ u# Q* e4 m3 `( t7 G( Y/ }# ~" F
, ^/ ~+ m0 \+ ]- g" y
2.3配置Timer1

5 f1 O4 M0 [) U0 t1 G; I4 e+ D& z
配置TIM1输出管脚

$ A+ V7 D& M5 L9 Y
这边只使用上桥的PWM输出,因此只配置上桥输出PWM波,其中CH4用于ADC触发,无外部PWM输出。

# X. L; T3 v; R' M9 N% ~2 d7 R, ~8 ]
微信图片_20201207195525.png
- c9 W( ~* _9 |& Q$ g
配置TIM1功能
, S! a& ~( @' t7 W2 g7 q
这边有些宏定义,可以参考MC Workbench生成的工程,注意定义为相同名字。
微信图片_20201207195528.png

+ A0 [' T4 R( a) T# s
* i6 T! a# @* B/ k( G
使能TIM1的中断
微信图片_20201207195531.png
/ f, N' R! J( F: s4 ]
( F$ W, [! {: g6 E4 `# j6 i
2.4配置调试串口
/ U: @9 U2 z* B: t1 n
微信图片_20201207195534.png
6 M8 U' L  m9 D$ t+ R3 p
2.5使能STM32G4特有的Cordic外设

  h; ?. i! Q6 X# A+ F% z% \
微信图片_20201207195537.png
' A4 S( f: _" l3 i
2.6重新分配管脚
' Q2 i+ p$ X* ^6 a& e
将管脚定义为硬件控制的引脚,增加输入输出引脚。

% p" s' c( m; i& `2 T* Z$ ]6 T; R
微信图片_20201207195542.png

# t7 u5 [0 M1 k1 x. G/ u
2.7管脚名称重定义

% R9 z* u" w9 j* a/ e$ J
重新定义管脚名称,符合MC Workbench生成的命名。

! V& p" N9 p* B. \
微信图片_20201207195545.png

  [. s* t9 h% K& s6 O( f" W
2.8规划NVIC的中断优先级
4 F; Y; O, J7 R  c5 ^. b: ~, k. J
这边特别注意中断优先级别的设定,将影响到程序运行。

; w6 p# Z$ P3 }8 D/ F5 H& Q; j
微信图片_20201207195548.png

+ p9 B5 z3 {7 I* n
2.9不生成电机相关的中断程序

3 L" F2 h- m/ Z& u
因为电机相关的中断程序中电机库中已经有了,这边不使用STM32CubeMX生成中断代码。

) {- a" e. K) N, \
微信图片_20201207195551.png
; S+ g0 Y; s# U( E0 o% J
2.10系统其他的配置
! M6 P, X1 a! D) y0 K. h; `4 d
分别配置RCC为外部晶振,GPIO口的默认设置,Sys的调试部分。
微信图片_20201207195554.png
' M0 V0 E3 @$ r/ e+ w4 R" a3 S+ i

! a( h3 m! u$ ]3 S& L+ O
2.11时钟配置
5 R0 N& r* }' D4 A! u
这边我们外部晶振为24MHz,System时钟配置为170MHz。
微信图片_20201207195557.png
' ~' o) Z+ \9 `4 A- z; H- L" u

+ B  B1 p( {3 X, M
2.12生成工程
微信图片_20201207195600.png
5 \8 j9 @8 y6 @

  C  `7 y5 L, k' a  k
3
! p+ C  t, h2 n/ p7 g
对生成工程进行修改、添加

6 @; p5 a; p7 E/ W
3.1拷贝文件
- l3 j# `/ b9 T. O- U* h
将MC Workbench生成的文件夹下的MCSDK_v5.4.3拷贝到STM32CubeMX直接生成的G474_MC文件夹下,另外Inc与Src文件也同时拷贝进去,需要选择不覆盖同名文件。
9 ^( K1 J- F3 i4 L) B$ `
微信图片_20201207195604.png
8 \7 g7 w$ r1 ~: P$ w  n9 b
3.2添加电机FOC库

+ H- R! y9 U- P' E# B% y
打开STM32CubeMX生成的工程,在工程中添加Group以及增加文件到工程中。
+ X5 U: n0 y# i; x* a5 D
微信图片_20201207195607.png
微信图片_20201207195611.png
0 W! c# [  n  p) P$ {2 k' L, g
3.3增加API以及控制文件到工程中
! U& N5 [# U+ M6 p8 @9 D
微信图片_20201207195614.png
- o' b, O1 D( ^3 E5 }
微信图片_20201207195618.png
3.4增加头文件包含目录

/ S  L- H6 @$ y3 ]# Y/ O
微信图片_20201207195620.png

" x9 p) T' g+ v0 `! R' k0 V) O8 k
微信图片_20201207195623.png

/ u$ Y; g1 p  R: o+ e, v1 E0 o1 _4 W
3.5修改Main.c文件

1 C; s6 D- B6 n8 [0 x
包含头文件以及增加电机控制初始化函数。
( L0 @# \; y8 M1 c& @$ }# U0 }
微信图片_20201207195627.png
+ n: \) g8 |  s5 W& n. o
49 s3 u+ D$ F: |9 c/ ~
验证是否正常工作
' |- c2 ~% ~5 c  B  D; F) U: v% X* O
编译下载后,使用Workbench控制电机转动。
4 q, G- M* w+ N" ^" f
微信图片_20201207195629.png

( T; U/ s$ x+ F3 z. e+ E& p( @
微信图片_20201207195632.png
" r' e; \" }- a: B4 ]. g8 Z( P
收藏 评论0 发布时间:2020-12-7 20:01

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版