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

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

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

( x6 M* w9 _# m5 Y& z2 T: t* @4 T

6 D$ Z0 t9 Q& w3 U2 o
+ O$ t6 u- T8 W8 C6 X* G& w. t
0 _6 m/ ]0 x. X. L
前言
当前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 h' }0 s' p/ f" f: P
10 S# M. k3 U& l, w( D
MC Workbench操作
& ^$ S* d" l3 E+ m1 w! Q4 I
1.1新建工程

- J0 s! E( [9 t) `, G
如果有Demo板和电机,则选择对应的Demo板与电机型号;如果没有,直接选择customer board。这边我们看到没有Nucleo-STM32G474RET6,因此我们选择customer board。

4 m4 R  L/ [, v! _2 B
微信图片_20201207195438.png
; g8 P8 e* M- q+ U
1.2配置电机与功率板相关配置
& X% x  l2 q* N/ t8 |
分别配置电源,电压保护,电机,电流采样,功率管。因为我们使用了现成的功率板与电机,这边我们使用默认参数即可。如果是自己的电机与功率板,请参考ST往期的技术培训。
% c8 r) z) K* Z2 b5 x5 |0 a3 G" {
微信图片_20201207195443.png

3 d) ]5 [: P1 |- G! J
1.3芯片选择与配置
% M' [% U5 n; U, p
首先我们看到在MC workbench中并没有STM32G474RET6这个芯片型号,因此我们需要选择与之相近的单片机。原则是Flash大小相同优先选择,型号相似次之,同一系列最后。这边我们可以选择STM32G474QE作为参考型号。
1 x5 r- H, r' Q, i
微信图片_20201207195447.png
1 I: o( s$ C9 w0 i
1.4数字端口配置
! O3 q- N% x, V4 Y. K2 ^
这边我们使用的功率器件为单一PWM与控制使能方式,结合硬件连接为如下配置。

5 O( T* ?0 o8 S# d7 @) X
如果PWM互补的方式则还需要配置下桥控制引脚。

8 r( d& D! f9 y: {: @$ C5 Y+ s- m- g
微信图片_20201207195450.png
" a  l/ P# \1 l! {$ V  N
1.5模拟端口配置
, Q) [  Z. H3 t' g- C
同样的配置与硬件采样相关的模拟端口。
微信图片_20201207195453.png

) }9 L$ u4 s5 x
1.6生成代码

* W5 p; n7 y* v/ @
生成STM32G474QE的电机控制代码,用于参考配置STM32G474RET6的CubeMx配置。
微信图片_20201207195458.png

2 S' C7 ]# _1 N7 {" \; Q
2
( ?- V. t1 O, Z5 d+ J: e( p
基于STM32CubeMX生成电机控制外设的初始化代码
; o8 F5 o3 T$ I0 G) i( Z6 P
2.1新建STM32CubeMX工程
( d, Y0 }' E# l( y( Z3 i0 S& a
新建STM32G474RET6的工程
微信图片_20201207195502.png

7 ]. H& M& j4 l+ }0 G7 X) o

# k+ o5 s" r4 J  Q
2.2配置ADC

2 C9 o: h$ F, w/ X* Y1 Y9 H
配置ADC1配置引脚

, `* z9 D' r, ?) g4 b
可以直接打开MC Workbench生成的STM32G474QE的*.ioc文件做为参考。
7 A0 o8 Z2 d' Q5 ~0 ?
微信图片_20201207195506.png
1 M+ w9 k) N, ~( W' Q! y4 o# d9 T
配置ADC1功能

9 e: w' {: f. S% M+ R8 k9 A
这边注意ADC1左对齐,触发信号为Tim1 Trigger Out Event,只有Inject模式没有Regular模式。
微信图片_20201207195512.png

; N- B! j/ ~0 r2 n
使能ADC1/2中断
微信图片_20201207195516.png
6 a# f6 Y$ J, j8 n! m$ e1 e, _9 }+ e

6 F/ h# D& P. x8 U3 `$ @, @
配置ADC2引脚与功能
% k5 ~* a) T: S* J" Z7 g- d
这边ADC2_IN14是复用在ADC1_IN14的引脚上。
微信图片_20201207195519.png
  Z4 K. k+ Q6 E: T
% b5 n4 D- B6 X! ?3 F! G+ `
配置ADC2功能
/ ?/ U* X) l# B5 y# f
ADC2有两个通道用于电压与温度传感采样,使用Regular模式。用于电流采样的使用Inject模式,这点区别于ADC1的配置。
微信图片_20201207195522.png

9 i) [% H7 w6 K: H7 `5 [: r9 l/ K

: T6 w! m( ?$ Q& r& K, R
2.3配置Timer1

& Z! c& Z) z& j
配置TIM1输出管脚
! x$ o0 s- w4 a0 D
这边只使用上桥的PWM输出,因此只配置上桥输出PWM波,其中CH4用于ADC触发,无外部PWM输出。
" V& u# t4 p9 {7 R/ e
微信图片_20201207195525.png

: p# C: Y9 M+ V2 G; i% c/ T
配置TIM1功能

: _: E2 G% e& Y. a
这边有些宏定义,可以参考MC Workbench生成的工程,注意定义为相同名字。
微信图片_20201207195528.png
/ G) i8 B+ o! n5 H

' Y* B6 z# _6 X  N
使能TIM1的中断
微信图片_20201207195531.png

0 t2 d5 a& i( ?; Y6 Z

7 z% R; Z5 O$ u
2.4配置调试串口
7 i: i1 m6 C, S( W9 g, w
微信图片_20201207195534.png

, [- J  F- P! k2 d: S: T; i2 e$ P
2.5使能STM32G4特有的Cordic外设

% \0 z$ o1 s8 D" Y! M
微信图片_20201207195537.png
8 m6 f3 [* }- S8 ~6 `/ L
2.6重新分配管脚
. }# Y5 T4 w* o6 w
将管脚定义为硬件控制的引脚,增加输入输出引脚。
* j) W3 j3 O* J, K( e/ Q6 B0 k
微信图片_20201207195542.png
$ O) J/ c/ r# r) q. t( v& y/ Q: @
2.7管脚名称重定义
$ T2 n9 s$ A" m7 @# M& u
重新定义管脚名称,符合MC Workbench生成的命名。

% M6 N7 q6 m& ?+ c6 }8 P3 e1 }+ l* C
微信图片_20201207195545.png

& X" K+ n' k9 n0 u1 U
2.8规划NVIC的中断优先级

% D0 R& H- g2 H8 [' q. r% l
这边特别注意中断优先级别的设定,将影响到程序运行。

6 e0 \* Q* X* J6 M" W* z$ ^; Z+ N
微信图片_20201207195548.png

( Y7 U% g; z0 `( c7 \) w
2.9不生成电机相关的中断程序
3 q/ X4 o5 j1 A5 o* v4 a
因为电机相关的中断程序中电机库中已经有了,这边不使用STM32CubeMX生成中断代码。
4 ?% i* l5 h( R; `) h
微信图片_20201207195551.png

- X  \& e* C) `+ p/ L! e
2.10系统其他的配置
( X! @, ^4 E& r4 @/ d
分别配置RCC为外部晶振,GPIO口的默认设置,Sys的调试部分。
微信图片_20201207195554.png
8 N0 t+ f" U& a2 ~: w

7 J2 v0 I7 b" ^4 K. C
2.11时钟配置

  U# T/ O4 {+ `4 r
这边我们外部晶振为24MHz,System时钟配置为170MHz。
微信图片_20201207195557.png

: z& D9 y7 Q2 [7 h; u7 I

& d' |( u3 R# O$ A& {
2.12生成工程
微信图片_20201207195600.png

0 j" F5 x5 A/ `$ ~3 j

3 g/ I8 Y* b: H2 E& [# G
3/ E7 h$ A0 s$ p7 n1 X
对生成工程进行修改、添加

. s+ U  g* @# Y8 P( S
3.1拷贝文件
7 J5 p; h4 S1 L; N. X
将MC Workbench生成的文件夹下的MCSDK_v5.4.3拷贝到STM32CubeMX直接生成的G474_MC文件夹下,另外Inc与Src文件也同时拷贝进去,需要选择不覆盖同名文件。

- o/ P$ b5 D2 }
微信图片_20201207195604.png
' D: E  h$ \. J2 l, }; H
3.2添加电机FOC库

: p$ z8 F+ L) Y3 K& h1 R1 y2 n
打开STM32CubeMX生成的工程,在工程中添加Group以及增加文件到工程中。
6 `4 e& r! l5 Z7 K( C3 [
微信图片_20201207195607.png
微信图片_20201207195611.png

% n8 H0 m. N! C% v9 ~
3.3增加API以及控制文件到工程中

  m1 L3 n" ~5 t! q  K% l
微信图片_20201207195614.png
" Y* L2 G! ?2 {/ }
微信图片_20201207195618.png
3.4增加头文件包含目录
( M  T% J; e' v) X5 @
微信图片_20201207195620.png
" |% U8 O. x8 K0 q
微信图片_20201207195623.png
/ ]5 z5 j4 m: F4 Z, W6 m+ d
3.5修改Main.c文件

4 Z0 {, [$ K8 B+ K
包含头文件以及增加电机控制初始化函数。
$ c% r3 e% e& `6 ?9 e+ z! ^
微信图片_20201207195627.png
$ @: a! q- N/ i# W0 k) j
4
* u/ x7 V4 B% L! [' y7 v& @9 x
验证是否正常工作

0 h7 Q) [. C' @4 D# N
编译下载后,使用Workbench控制电机转动。

- }! g7 F5 D% P# [& m7 N
微信图片_20201207195629.png
. E- h8 X( d; @- ~! ?
微信图片_20201207195632.png

5 w; W4 x& ?. G! ^% o
收藏 评论0 发布时间:2020-12-7 20:01

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版