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

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

[复制链接]
gaosmile 发布时间:2020-12-7 20:01
所选择的芯片未包含在MC Workbench中怎么办?
本文教你使用STM32CubeMX结合MC Workbench生成FOC代码
2 D3 L! j; @) s; Y

% A; M# ^+ H8 n/ W% m
7 c6 u* Y2 f  z" N( N3 u) q8 W6 f( K  U
0 |) {9 @+ J& E9 E5 M4 M; r
前言
当前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(电机)。

# i+ }5 T5 f' ]7 P# q& p
15 v+ b: n1 z2 f' P: O
MC Workbench操作
& B: X; E. q! `+ i2 ?7 q' \
1.1新建工程
$ q! ]5 h1 c$ E# U9 l- p$ r% L
如果有Demo板和电机,则选择对应的Demo板与电机型号;如果没有,直接选择customer board。这边我们看到没有Nucleo-STM32G474RET6,因此我们选择customer board。
, I8 V8 n( o6 A' V
微信图片_20201207195438.png
  p8 s7 E6 P, r5 W/ W" \( a, W8 ]
1.2配置电机与功率板相关配置

3 L' |7 N  l+ Z) L: S3 x6 Z& m
分别配置电源,电压保护,电机,电流采样,功率管。因为我们使用了现成的功率板与电机,这边我们使用默认参数即可。如果是自己的电机与功率板,请参考ST往期的技术培训。
5 r+ ~' [" M6 i8 U( b2 a
微信图片_20201207195443.png

  l; v2 R' @4 O! \$ f- W
1.3芯片选择与配置
3 w8 ~# m% ~, t% {
首先我们看到在MC workbench中并没有STM32G474RET6这个芯片型号,因此我们需要选择与之相近的单片机。原则是Flash大小相同优先选择,型号相似次之,同一系列最后。这边我们可以选择STM32G474QE作为参考型号。

; l0 ~# g+ H; X$ f
微信图片_20201207195447.png

( F' Z+ T7 W! [) k; p! i" R
1.4数字端口配置

5 _) A# Z5 C+ g. ?: v) P' a) q
这边我们使用的功率器件为单一PWM与控制使能方式,结合硬件连接为如下配置。
( M$ _& A% s1 v0 ]1 \/ _
如果PWM互补的方式则还需要配置下桥控制引脚。

# X7 M# U( O" h
微信图片_20201207195450.png
! G/ O9 I/ I' r7 b2 s
1.5模拟端口配置

9 V9 A9 S! F: y( o6 R" c4 a+ p
同样的配置与硬件采样相关的模拟端口。
微信图片_20201207195453.png

4 w/ Z* m9 g  i: S2 N( k# i
1.6生成代码
8 `# m; F7 Z; a$ [5 K5 V& l
生成STM32G474QE的电机控制代码,用于参考配置STM32G474RET6的CubeMx配置。
微信图片_20201207195458.png
7 H) x5 c3 ~- G& B% H: e
2
1 r+ x4 S3 Z2 M1 u
基于STM32CubeMX生成电机控制外设的初始化代码

1 p2 S; M+ F  H. v& E) K5 y
2.1新建STM32CubeMX工程

4 V7 ^2 q$ D- R6 i" y- O
新建STM32G474RET6的工程
微信图片_20201207195502.png

( ?  z' `9 P$ e+ Z5 ?3 m4 B

: G- a( \9 x; g7 e0 Q" ^8 }
2.2配置ADC
3 G/ X5 V) e5 {6 ^  k# \
配置ADC1配置引脚
. W" \) ~. U% X
可以直接打开MC Workbench生成的STM32G474QE的*.ioc文件做为参考。
& O/ ?7 @, u$ F0 m
微信图片_20201207195506.png
) z6 v1 R9 Z" F% o
配置ADC1功能

2 ?  e$ A) G' Y0 |6 I( \
这边注意ADC1左对齐,触发信号为Tim1 Trigger Out Event,只有Inject模式没有Regular模式。
微信图片_20201207195512.png
! T# @* K6 ~( d6 ^% `: O4 l
使能ADC1/2中断
微信图片_20201207195516.png

; K. P$ e3 U0 I  ?! ?

, i5 _3 R8 y/ \$ [& D; H
配置ADC2引脚与功能
4 u. a% L5 S' U
这边ADC2_IN14是复用在ADC1_IN14的引脚上。
微信图片_20201207195519.png

: B- |' ?& B. C- h- F/ x
& V5 F$ ?% r4 g8 w7 U! i
配置ADC2功能
( g( O* m- {$ A! ^. x6 b5 D
ADC2有两个通道用于电压与温度传感采样,使用Regular模式。用于电流采样的使用Inject模式,这点区别于ADC1的配置。
微信图片_20201207195522.png
' `0 t9 k$ g  L; i, O# i( ?
. B2 x) k6 E$ {, ?- c
2.3配置Timer1

. e: _, Z1 P9 _
配置TIM1输出管脚
4 K" @5 Q5 s6 B6 j$ F) @7 ~
这边只使用上桥的PWM输出,因此只配置上桥输出PWM波,其中CH4用于ADC触发,无外部PWM输出。
. G# e" f) d, g5 r- |5 S- Y: A% h; {
微信图片_20201207195525.png
4 S+ r- K5 e; N1 z# Z
配置TIM1功能

' X4 O* I3 R  G9 I
这边有些宏定义,可以参考MC Workbench生成的工程,注意定义为相同名字。
微信图片_20201207195528.png
! k# ?, V7 U! j/ H, L+ R

; J1 w& ]4 Q6 t* ^* z0 B; H
使能TIM1的中断
微信图片_20201207195531.png
# }* P  l+ v: B; }6 u" X, p

# X2 o  a. b4 b8 H
2.4配置调试串口

! H; c8 Z( l! ^: A; Y
微信图片_20201207195534.png
5 H: |. ]' @+ K, j- R
2.5使能STM32G4特有的Cordic外设

( _: W; U  }' O, t: I$ [
微信图片_20201207195537.png

& S" L6 m4 e+ A8 @0 J# E& d
2.6重新分配管脚
6 ~, i$ v5 |$ I
将管脚定义为硬件控制的引脚,增加输入输出引脚。
, l, X6 [- [8 F3 v
微信图片_20201207195542.png
0 U( w/ T  F6 b! p5 o. [
2.7管脚名称重定义

8 L+ |% f( Q7 G
重新定义管脚名称,符合MC Workbench生成的命名。
/ q  ~  _& D0 k) k# U6 h" p
微信图片_20201207195545.png
4 m8 x! {( Q3 K* ~3 v7 m
2.8规划NVIC的中断优先级

: L( I3 w9 p, P' t9 f/ o. z  `
这边特别注意中断优先级别的设定,将影响到程序运行。

6 Y0 N) g7 v3 w  J9 I& @9 i
微信图片_20201207195548.png
  w1 e( V9 A/ I0 G8 t8 A3 i
2.9不生成电机相关的中断程序

. n0 F. i6 d5 T/ |/ X- q
因为电机相关的中断程序中电机库中已经有了,这边不使用STM32CubeMX生成中断代码。
; y7 Z4 o, e; |6 E" ]5 e* i( l8 p
微信图片_20201207195551.png
% |8 P3 C% X7 L7 T8 u
2.10系统其他的配置

6 j  F3 F* p+ O/ f  E0 h: o) s( }
分别配置RCC为外部晶振,GPIO口的默认设置,Sys的调试部分。
微信图片_20201207195554.png

# y. r) j: L6 Y" A$ H- u

# |5 G  p* z4 p& ]2 h
2.11时钟配置

9 Z) X+ L) b5 Q( F
这边我们外部晶振为24MHz,System时钟配置为170MHz。
微信图片_20201207195557.png

$ O6 w" u" G) Z) ?- `& b
8 Y  d0 r, e( v+ o
2.12生成工程
微信图片_20201207195600.png
4 f5 V( r  M6 D
: q  S  x$ d/ X- p9 u2 M9 g: ~
35 r5 P( g: V& i# u& X. Q0 M/ q
对生成工程进行修改、添加

! ?, I) ?4 @) z% F) |5 A1 N' c) o! V
3.1拷贝文件

! B; Y8 L$ @& t1 b+ K( m
将MC Workbench生成的文件夹下的MCSDK_v5.4.3拷贝到STM32CubeMX直接生成的G474_MC文件夹下,另外Inc与Src文件也同时拷贝进去,需要选择不覆盖同名文件。
, O/ u! ?4 E% \6 p- `  W
微信图片_20201207195604.png

: t4 p$ v" V: A3 B
3.2添加电机FOC库

. {3 X: S) B" Y5 `) C% F! n# ]$ l
打开STM32CubeMX生成的工程,在工程中添加Group以及增加文件到工程中。

' ^" L' W# I  Y  L
微信图片_20201207195607.png
微信图片_20201207195611.png
5 F3 x% e. h) q3 {( v0 b+ x% {
3.3增加API以及控制文件到工程中

  M4 g( c: N8 A" y
微信图片_20201207195614.png

4 V/ ]' e1 G, X% l" ?8 L# q
微信图片_20201207195618.png
3.4增加头文件包含目录
2 T. _7 [. i! C4 L2 C" A
微信图片_20201207195620.png

' l2 D( s7 I4 l! V4 v: Y# E
微信图片_20201207195623.png

2 D5 C# b( m5 _" r1 T5 K7 B, T
3.5修改Main.c文件
3 T! k- P; ^4 ?: m3 t
包含头文件以及增加电机控制初始化函数。

4 q2 L3 y' E6 J! O
微信图片_20201207195627.png

$ _/ s0 ~0 T: T; [2 h/ i
4
' Y. H8 r! V) Q. i
验证是否正常工作
8 z+ |' ~, K0 ?
编译下载后,使用Workbench控制电机转动。

, G* }; w0 D, ]4 v6 x
微信图片_20201207195629.png
1 P! ?+ M6 Q! x
微信图片_20201207195632.png

/ y2 ^: F7 E- |* x* Q
收藏 评论0 发布时间:2020-12-7 20:01

举报

0个回答

所属标签

相似分享

官网相关资源

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