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

STM32Cube工具,覆盖开发全过程

[复制链接]
STMCU-管管 发布时间:2020-5-27 10:19
STM32Cube 家族的软件工具,从选型到开发/调试,到代码二进制烧录,选项字节操作,到运行监测,覆盖了全部的开发过程。它们各自有功能侧重,也有功能重叠,但是合在一起,就提供给STM32开发者,一个无缝的开发平台。
: M  ?: g, ]2 H% p' Y
11.jpg
7 O1 }+ A( g/ [5 X# g
前面三个,STM32CubeMX,STM32CubeIDE、STM32CubeProgrammer,更加偏向开发的通用性。即,无论你的应用使用哪颗STM32系列,用于什么开发,都会用上的工具。
. G, _6 y8 M  c/ Q& i% |
其中STM32CubeMX年岁最久,也是被最广泛使用的。它集成了芯片选型、引脚分配和功能配置,中间件配置,时钟配置,初始代码和项目的功能。
STM32CubeIDE,是今年4月份最新推出的,ST原厂开发和支持的IDE。一方面它继承了以前Truestudio的那一套基于Eclipse CDT 开源框架的开发、调试环境,支持众多Eclipse插件、拥有更高级的代码检阅、调试功能;一方面,把STM32CubeMX给集成了进来,作为和其他厂家IDE最大的一个区别亮点。
虽然CubeIDE可以在开发过程中,把代码烧写到STM32中进行调试,但是对STM32的片上闪存、片外闪存,选项字节的各种读、写、擦除操作,支持最到位的还是属STM32CubeProgrammer。

" j5 j' V' f9 r6 T8 E6 w: C
其中STM32CubeMX和STM32Cubeprogrammer,出来对所有STM32芯片系列,和所有应用的通用支持之外,还有一些对特定应用的支持,比如STM32Cube.AI就是基于STM32CubeMX的插件功能,来把训练好的模型部署到STM32上;还比如在安全固件升级和安全固件安装,即SBSFU和SFI操作里,STM32CubeProgrammer就启动了代码加密,HSM实例化等功能。
- o* l4 ^" S% D* G7 C# i. y; Q
因此,前三个工具,除了它们的通用性外,还有应用相关的特性。

4 ~* K4 ^" W$ N, I2 Q
后面三个STM32CubeMonitor的变种,一个是RF,专门支持STM32的无线系列,现在是STM32WB产品。包括做用户应用、RF stack,FUS本身的OTA,测试两个WB板子之间数据收发误帧率,对BLE和OpenThread设备,收发ACI命令,进行快速的应用原型开发。
5 y( |- N0 m( {* C7 V. q
第二个,UCPD是专用于配置、监测、和分析TypeC和Power delivery应用

$ w7 J: M6 g' @* Y- c" X: ^6 d
第三个,Power,用于低功耗测量的,需要搭配ST的PowerShield板工作。显然后面三种PC工具,都是和具有应用相关。
我们在第一期的介绍中,不会具体来讲某个工具如何使用,而是给大家一个总的picture,让大家知道我们的STM32Cube 工具有哪些,分别是做什么。具体工具的使用,我们会结合具体芯片上的某个主推应用来在后续几期来讲解。
) h- D5 b& T$ K( K" {; ^
通用功能

/ k. D- ]$ m* P" k0 m
一、STM32CubeMX通用功能:从选型到初始工程建立
( I# e& w" t- B
我们先来回顾一下STM32CubeMX的通用功能。以2019年7月,刚刚推出的STM32CubeMX版本5.3为例。

, K1 R# w7 v+ ^9 A3 K& R
22.jpg
: @6 ?. W2 N& q  }# }
STM32CubeMX集成了STM32Finder,因此可以在此进行芯片的选型或者评估板的选择。在MCU/MPU选型的页面,除了经年常用的根据内核、产品线、外设、flash/ram存储空间大小,筛选目标芯片之外,随着STM32对GUI和AI的支持,根据所用AI模型,压缩比;根据GUI应用中要支持屏幕的像素尺寸、所采用的存储功能拓扑结构,都可以作为目标芯片筛选的输入参数。MCU交叉选型,是最近新添加的功能。     当要把手中存量的非STM32项目切换到STM32平台,这个功能可以帮助你选择合适的STM32芯片来替换当前芯片。
GUI和AI选型,我们会在对应的GUI和AI应用中,结合STM32CubeMX的使用来具体讲解。  
芯片选好后,要进行开发的下一步就是对芯片引脚的功能进行配置。由于STM32的每个GPIO都被多个外设功能复用,并且同一个外设功能还可以映射到不同GPIO,因此当引脚资源比较紧张,这里的引脚分配工具可以帮助用户在多个选择中进行分配。某个引脚用于什么功能分配好了,比如PD9用于UART3的接收引脚 ,那么UART3的具体配置,比如波特率、采用同步模式还是异步模式,以及相关中断、DMA都以在此以图形界面的方式进行配置。
STM32支持丰富的开源和ST自主知识产权中间件,比如来自开源社区的FreeRTOS,FatFS,mbedTLS;ST自己的USB主机和设备协议栈,TouchGFX等。
因此除了对外设各种功能的工作模式和参数进行配置, 当我现在的应用需用用到FreeRTOS,我不仅可以勾选并使能上该组件,还可以对FreeRTOS进行配置,比如内核配置可以设置是否支持抢占、系统嘀嗒的间隔;可以在这里以图形化界面的方式创建信号量、互斥量、创建任务等。所有这里的配置,都会影响到最后产生的初始化代码。
(如何使用和配置FreeRTOS、USB协议栈这样的中间件,根据大家的需求反馈,后续会考虑推出具体讲解课程)
STM32Cube不仅是一个包罗万象的配置工具,它也是一个开放的工具。在目前最新的5.3版本,我们可以看到它已经支持若干来自ST的功能插件,比如X-Cube-AI,X-Cube-MEMS。关于AI这个插件的使用,会在十月份推出相关技术视频,请大家留意。如何使用MEMS插件,在我们的STM32 IoT课程系列的第三部分:节点端项目开发,有详细介绍。
最后一切配置完成,就可以在用户指定的路径生成出初始化代码和项目工程。这就是胶片中左面部分的整个配置流程,从选型,到最后的初始化项目生成。
在进行芯片选型时,对应的数据手册、应用文档随着显示,可以一键下载到固定目录。同样,各STM32系列对应STM32Cube MCU固件包,ST自己的功能插件,甚至STM32CubeMX工具本身,它们的新版本,都可以在STM32CubeMX里设置来自动联网检查,并且提供给用户一键下载。这是非常便利用户的一个小功能。
% M& G; n! N! l5 R. Y! F
CubeIDE

) E% e/ R: s. _3 D% W; P8 w
二、STM32CubeIDE : 包罗万象 + 开放

- n/ B1 W# t" w  l% C
STM32CubeIDE,是ST今年,2019,4月份,推出的STM32Cube工具家族的最新成员。是ST开发、维护并支持的原厂IDE。一方面,它基于Eclipse的CDT框架,集成了GCC、GDB等免费的编译器、链接器;一方面它通过Eclipse插件接口,开放对众多第三方功能插件的支持。

# ?1 Q1 C2 E: }; J& G) J
33.jpg
: t9 N8 L& B/ z" C
STM32CubeIDE的前身来自被ST收购的TrueStudio,它在代码浏览、查看,高级调试、诊断分析上有很多好用的小功能。我们后续会结合具体的芯片,比如G0和L4上的具体应用案例来展开。
STM32CubeIDE目前集成了STM32CubeMX,未来还将把STM32CubeProgrammer集成进去。目前的STM32CubeIDE作为一个完整独立的集成开发环境,是可以烧录应用二级制到目标STM32芯片中的;未来STM32CubeProgrammer的加入,会从对STM32的选型字节、片内、片外闪存的便利读、写访问来进一步加强。因此我们说它是个包罗万象、all-in-open的原厂支持的开发环境。同时Eclipse插件接口又体现了它的开放性,即:胶片里从插件接口出来的三条示意性的箭头。
举个例子,现在我安装了IAR的插件管理器,然后由此再导入IAR的编译和链接功能。这样我就可以在项目开发的时候,一方面使用STM32CubeIDE更加好用的代码浏览、查看功能;一方面使用IAR专业的高效编译、链接服务。Eclipse生态圈里还有很多好用的功能,我们鼓励大家把自己喜欢的插件集成进来,并分享使用心得给到大家。

4 N8 J& @/ r+ l1 O9 U" d
软件下载
• STM32CubeMX
• STM32CubeIDE
• STM32CubeProgrammer
• STM32CubeMonitor-PWR
• STM32CubeMonitor-RF
• STM32CubeMoitor-UCPD
( C1 X7 n, E  N. F, K" L" n0 U
CubeProgrammer
8 d3 A1 t- o2 W" k6 J
三、STM32CubeProgrammer通用特性:不仅仅是四合一
: e7 x2 s' V  y1 E! b* p
44.jpg
( P+ j/ l; x  W1 t* d
STM32CubeProgrammer在STM32Cube工具家族里,资历比不上STM32CubeMX这个老大,但是也推出了快两年时间。它的推出是为了一站式解决STM32烧片需求。首先要澄清一下,这里说的“烧片”,不是专业的一拖几的量产烧录工具,另外这里的烧片,也不仅仅是烧写STM32的片上闪存。
( x( F& F9 n. B9 g. k/ s" J
首先,它集合了以前若干年他们用到的几个分散工具:STVP,STLINK-Utility,Flash Loader,DFUSE Demonstrator。也就是说,它可以通过目标STM32的JTAG/SWD等调试接口,也可以通过UART、USB通信接口来烧录目标芯片。通过调试接口,可以烧写空片;通过通信接口烧写,需要目标STM32里面有对应的bootloader,可以是来自系统闪存里的出厂固化好的bootloader,也可以是来自用户闪存上自己编写的bootloader。 选项字节的设置、修改,也可以在这里通过图形化界面,直观地操作。片外flash的烧写,STM32CubeProgrammer支持ST原厂评估板上的各种板载存储器,也通过开发的接口,可以让用户自己编写flashloader来控制自己定制版上的各种闪存。
9 c. ^  S, R1 W8 \7 P; i9 t
STM32出厂就固化在系统闪存里的bootloader,除了刚才提到的uart和usb,还支持i2c、spi、can等通信接口。但是之前除了AN2606文档里列出了通信API,没有支持I2C、SPI的上位机,需要客户自己根据通信API来开发。现在的STM32CubeProgrammer就集成了支持i2c、spi、can通信的上位机功能。STM32CubeProgrammer是运行在PC机上,PC机器并没与i2c、spi、uart这些端口啊,如何和目标STM32通信?这就要请出我们下一个工具,STLINKV3。在此之前,关于STM32CubeProgrammer再多说一句,除了在这里列出的以图形界面提供给用户的通用烧片功能,它的命令行提供更多的功能,比如对STM32WB的FUS、RF stack的烧写、更新;对STM32WB中特殊功能CKS的秘钥安装。在后续专门的蓝牙应用中,我们会来具体介绍。
, k. x6 p4 F: u2 w
STLINKV3
- V2 z$ u( q5 t0 ~& s
四、STLINKV3:STLINK家族新生代

7 O9 ~9 `, w6 b
STLINK大家已经很熟悉了,从最早的stlink,到增加了SWV和带隔离功能的v2,然后是v2-1,-A,-B等变种。它们出现的形式,一个是单独模具的小白盒子,更多的是集成在ST原厂出品的各个STM32评估板上。
; H& L/ K: O3 W' S# t  N
55.jpg
: T1 g4 D4 h5 u8 _$ W
去年推出的STLINKV3是V2的升级版,是前者的一个超集。v2有的功能它都有,v2没有的功能,它也有。
首先是下载速度更快。stlink和PC是通过usb连接,以前stlinkv1、v2都是使用F103实现,采用的是F103的全速USB模块;现在stlinkv2使用STM32F7实现,采用的是高速USB模块,从而实现了更快速度的传输。

" Y5 ^0 @' R. a2 B& G! X2 j% p
另外,以前的stlinkv1/v2,逻辑上除了调试功能外,还兼具USB转串口的uart bridge功能,stlinkv3在uart bridge的基础上,增加了i2c/spi/can bridge,这样搭配STM32CubeProgrammer,就是一个现成的i2c/spi/can/uart/上位机,和出厂固化在STM32系统闪存里的i2c/spi/can/uart/usb bootloader可以无缝完美对接。
1 _" _8 `" A) s. x0 i" s6 t$ n' x
当然,用户还可以实现自己的上位机,不一定使用ST的STM32CubeProgrammer。因此,我们也提供了操作STLINK v3上各种bridge的C++源文件,以及相应例程;方便用户集成到自己开发的上位机中。
- [' q% A0 X5 K
最后,stlinkv3也有多种物理形式出现,一个是胶片中这种单独磨具的小盒子,一种是直接集成在开发板上的F7芯片形式;还有一种是带1.27毫米间距14引脚规格连接器的STLINKv3-mini。

* T: w4 Z! {" ?' g4 y
五、STLINKV3 + STM32CubeProgrammer
6 A2 r/ C1 |3 `3 O7 |% f  D. \
这里是把STLINKV3和STM32CubeProgrammer搭配起来使用,作为i2c接口上位机的例子。
稍微说明一下,bridge功能在STLINK-v3的扩展板上实现,把对应跳线和nucleo-L452板子上L452 I2C接口连接;STM32CubeProgrammer上选择I2C连接,就可以和L452上的i2c bootloader通信了。

: `/ V0 }$ y* L6 h2 _: ~
66.jpg

' n7 f" u, j1 n, [1 [% ^; l
CubeMonitors

$ h! |3 b( P- h
六、STM32CubeMonitors:应用开发和分析的好帮手

& e$ j3 |5 ]3 z: b# E6 M
作为应用在STM32里面运行时的监测工具,STM32CubeMonitor家族,目前有三个,Pwr是用来测量低功耗应用下功耗的,动态测量范围可以低至100nA到50mA;RF是用于带无线模块的STM32应用调试的,现在支持的是STM32WB 套件板,可以用作STM32WB设备的OTA,作为上位机发送BLE、thread命令,做快速原型开发;UCPD是用于typeC上PD应用的配置和监测。
这三个PC端工具,和STM32CubeProgrammer一样,除了用户图形界面外,还支持命令行,并且它们都搭配ST的硬件板来使用。由于它们都偏向于特定应用,我们会后续根据大家的反馈和要求,做详细介绍。

9 |$ \$ Z/ O( h- z
77.jpg

) t& E" k9 ]% C- G
软件下载
• STM32CubeMX
• STM32CubeIDE
• STM32CubeProgrammer
• STM32CubeMonitor-PWR
• STM32CubeMonitor-RF
• STM32CubeMoitor-UCPD
; g9 A& g) e* |) t! T, u% e1 ~
! u+ |% \- u* B. F0 Z' C
收藏 9 评论10 发布时间:2020-5-27 10:19

举报

10个回答
慎微 回答时间:2020-5-27 10:49:02
值得收藏
jason-366967 回答时间:2020-5-27 18:24:28
不错不错
dbg3 回答时间:2020-5-30 10:11:00
很好!再改进点更好。
jys201801 回答时间:2020-5-30 13:44:25
非常不错  
老牛洋车 回答时间:2020-5-30 18:31:59
好资料,收藏备用。
李康1202 回答时间:2020-5-30 19:37:25
赞一个
wyxy163@126.com 回答时间:2020-6-2 13:54:01
提示: 作者被禁止或删除 内容自动屏蔽
lenghanbing444 回答时间:2020-6-8 11:17:13
好资料,收藏备用。
网络孤客 回答时间:2020-6-8 14:33:12
前面三大件还是比较清晰的。
! T' q, W& v% U3 J后续众多的插件介绍得少多了。
薯条大叔 回答时间:2020-6-8 20:38:04
支持支持。CubeMx用着越来越方便了

所属标签

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