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

STM32 生态系统|基于STM32WB的低功耗蓝牙应用(一)

[复制链接]
eefishing 发布时间:2019-10-2 12:15
1、基于STM32WB的低功耗蓝牙应用(二)RF协议栈的有线和无线更新:https://www.stmcu.org.cn/module/forum/thread-625173-1-1.html
2、基于STM32WB的低功耗蓝牙应用(三)用户应用程序的无线更新(OTA空中升级):https://www.stmcu.org.cn/module/forum/thread-625175-1-1.html

$ K$ W) @  \9 ]; s% M
, z3 t! T' x& c
$ W: z8 e( D( g3 H( S. |5 B. I6 j
6 p9 [( v" D$ I, c" C( j* Q5 P
从使用角度,我们有以下六类设计资源,提供给开发者,做基于STM32WB的低功耗蓝牙应用开发。
6 a. F7 P9 s5 b# f, D% {5 `技术文档、评估板、参考固件例程、配合低功耗应用的软件工具、中文培训材料、本地方案(ST本地支持团队和中国合作伙伴开发的方案,都会在这里向大家集中展示)
/ M2 H% a1 Z; p1 q
STM32WB生态系统
1.png
% g3 A0 n' d( z& L
! Z( l# _; r# Q) f# _& I0 J
STM32WB. 技术文档
STM32WB的基础文档,首先是芯片的参考手册。目前STM32WB家族里只有一个55系列,它的参考手册是RM0434。它有1500多页,分章节描述了STM32WB芯片架构、总线、片上RAM、Flash、以及各个外设的功能、寄存器说明。WB主要新增的外设有实现RSA、ECC等非对称加解密功能的PKA单元,即public key accelerator(公钥加速器),用于双核通信的IPCC(inter processor communication controller)和硬件信号量HSEM等。
6 F  V2 {( ~" L1 c( R- U. R9 M6 Q; e! }( Q  q
然后是数据手册,勘误手册。(这三篇是STM32WB的基础技术文档)
* L' h' L" v" ~  Q  e6 F$ r
! \/ Z+ |& F" B$ H- ]% @; c  m
这里的5个应用笔记,都和STM32WB的硬件设计使用有关。
3.jpg

  Y# c6 r: W  X. O
  • 因为WB集成了一颗支持低功耗蓝牙应用和802.15.4的RF收发器,相比以前的STM32,WB在硬件lay板子的时候,需要额外注意一些问题。【AN5165】是WB做射频应用时硬件开发方面总的指南。
  • STM32WB设计的目标之一就是高集成度,在保证优化的射频性能前提下,能让用户尽量减少外部器件的使用,降低BOM成本。【AN5290】就以QFN48引脚封装的WB55芯片为例,并给出了最小系统原理图。“高集成度” 主要体现在WB集成了开关电源,以提高2V以上供电时的电源转换效率。WB使用HSE外部高速晶振给RF模块提供时钟,可通过芯片内部集成的负载电容调节HSE精度,无需用户采用外部电容器件。另外两个应用笔记【AN5042】和【AN5246】就是对这两个特性展开的说明。为了进一步节约成本,还可以使用PCB天线,只要设计得当,它的性能可以和表贴陶瓷天线相当。【AN5129】对其进行了详细指导和说明。
    0 }" m1 G( g7 V' g$ y' D
8 M3 j- s8 M% j1 h6 q$ K& K. B
STM32WB的主要应用是低功耗蓝牙应用,低功耗是STM32WB的主要设计目标之二。STM32WB继承了STM32L4的低功耗特性,支持多种低功耗模式,以及每个模式下面的子模式选项;低功耗的模拟外设、BAM(批处理获取模式)、灵活的时钟系统。【AN5071】就是对STM32WB芯片的低功耗特性概览。
STM32WB的双核之一,M0+内核是专门跑射频协议栈的,对用户或者说对M4内核,是一个黑盒子。要更新M0+上运行的协议栈,无论是通过JTAG/SWD、USB/UART这样的近程有线,还是通过BLE空中升级方式,要烧写和更新射频协议栈,必须通过FUS,即firmware update service。这里的firmware,不是指跑在M4内核上的用户应用程序firmware,是专指跑在M0+内核上,对用户不可见的射频协议栈firmware。这是一段芯片出厂就已经固化在STM32WB的secure flash中的一段程序,永远擦除不掉。芯片出厂时,只有预装了FUS,没有任何协议栈。需要用户根据自己的应用,使用无线或者有线方式,来把对应的协议栈通过FUS写进去。然后才可以继续在M4+内核上开发应用程序。【AN5185】就是对FUS的详细说明;【AN5247】是STM32CubeWB固件包里的OTA例程说明文档。里面描述了这个ota样例程序的逻辑,用户使用步骤。这个ota程序,不仅可以空中升级M4上运行的用户应用程序,也可以空中升级M0+上运行的射频协议栈。由于FUS的存在,射频协议栈,一定是被ST公钥签名加密过的。关于FUS和OTA的使用,我们下期,会有更详细的介绍。
4.jpg

' k1 p7 s/ |# p; V& S" C% R. {
BLE Mesh应用,在STM32CubeWB中也有示例程序,这里的三个文档【AN5292】、【UM2180】、【UM2361】,分别是对BLE Mesh例程的说明,以及搭配例程使用的手机app的说明。& o8 z8 |$ C# ?: ]  z; X( |
2 B8 ?% X" p% d) k9 I
【AN5270】和【AN5289】,更偏向于开发者角度,详细列出了ACI层和HCI层的事件,比如连接完成,请求LTK这些LE META事件;比如配对完成、绑定丢失、数值比较这些ACI层的GAP事件;比如notification、server confirmation这样的ACI层GATT/ATT事件。以及所有协议栈使用的,私有的HCI层、GAP、GATT相关命令。

# u4 E4 z; m8 g: ]6 G+ G! f8 e! u  d
5.jpg
这里的前四个文档,是对三个例程的使用说明,分别是
- O3 w8 e1 m8 E& a: S
  • 使用STM32WB获取传感器参数,并通过BLE发送给手机
  • 使用STM32WB做全双工的音频传输
  • 基于STM32WB的SBSFU,即安全启动和安全固件升级。之前在STM32CubeWB固件包里的ota例程,对M4内核上运行的用户应用程序升级,是明文升级。如果对用户应用程序的升级有加密和认证需求,可以参考这个例程的实现。
    . T* L1 u: T" D2 V. g; e; Q3 W
; e( |% ?4 Q. V3 J0 q% }: `
STM32WB. 评估板
接下来,是ST官方出品的STM32WB55,目前唯一一款评估板:订购号,P-Nucleo-WB55 pack。这个套件里包含两块基于STM32WB55的板子,如图示:一个是Nucleo板,板载QFPN68引脚封装的STM32WB,和STLINKV2;一个是板载QFPN48引脚封装STM32WB的USB dongle板。
' S' X0 X$ o- u
* T3 U& I9 ~" |  k& A8 f
STM32CubeWB固件包里包含两个板子上的多个例程。Nucleo板,由于板载了STLINK,因此烧写程序比较方便;USB dongle板只能通过48引脚WB芯片上,系统memory里面集成的bootloader来烧写应用程序。USB dongle板通常搭配STM32CubeMonitor-RF使用。由于需要系统memory启动,USB dongle板引出了拨码开关,方便启动模式的切换。
; b1 B3 y0 B5 t* L0 N5 h. E  b! `
) P" W. T% K# F+ ^, x$ G下期介绍ota例程时,会详细说明。
6.jpg
& m6 J) j- O3 u( f" d
+ u) ?9 d/ w# C" u
STM32WB. 固件例程
介绍完了STM32WB的技术文档、评估板,我们接下来看一下,ST目前提供了哪些关于低功耗蓝牙应用的参考例程。
; h5 j& ]5 s$ C
beacon,和几个SIG协会定义的标准profile,例程都有支持。P2P通信基于自定义profile,我们给出了sever,client,router的实现例程。其中蓝色框中的三个例程演示了如何通过ota bootloader,把用户应用从p2p server更新到心跳profile。这个例程,Nucleo板作为OTA server,OTA server可以由手机上的app,ST BLE Sensor或者STM32CubeMonitor-RF来担任。使用后者的时候,需要搭配使用USB dongle板。
7.jpg

/ _5 R/ j1 z; g
STM32CubeWB固件包里还有大家最关心的BLE Mesh智能照明应用例程,对应的手机App是ST BLE Mesh。例程的使用,以及手机app的使用,都可以参考表格里的文档。

; O& f/ ~: f+ l& V* ~' }) ^
还有一个值得强调的是CKS加密这个例程。这不是BLE应用的标准场景,是STM32WB芯片特有的安全功能。STM32WB提供对用户应用key的安全存储。在安全环境中,用户把应用key放到STM32WB的安全存储区域内,之后M4的应用就可以使用这些key进行加解密运算。key的存储和使用都很安全,用户通过index来操作key,得到的是明文和密文,永远无法或者key本身。key的存储,可以通过M4上的用户存储调用FUS API,也可以通过STM32CubeMonitor-RF来把用户key传递给STM32WB,当然底层也是一样调用的FUS API。这个例子的讲解,也会在下次介绍来展开。
8.jpg

% M3 [8 J; f: W8 D0 {$ s
除了BLE协议栈,M0+内核还可以运行OpenThread,以及generic MAC,基于这两个RF协议栈的例程,ST也提供了若干,如表格中所列。
9.jpg

2 D" Z9 U# h# V% V7 _
4 O5 K0 `" P. Y5 K, e$ o& W5 F
STM32WB. RF协议栈:在STM32CubeWB 固件包中发布

5 o! O' W2 }6 c% {! F# E- f
这张图,大家之前一定多次看到。它展示了STM32WB芯片支持的多种RF 协议栈。即可以在M0+内核烧写不同的协议栈,图中蓝色部分;然后在M4+上运行不同类型的用户程序,图中绿色部分。每一列是一个使用场景,但是彼此独立。比如左边第二列,是最常见的应用,就是M0+里运行BLE full stack,然后M4上跑BLE应用,比如mesh啊,比如其他标准或者自定义的profile,service啊。也可以,采用第四列,M0+里运行Thread FTD,Full Thread stack,然后绿色的M4内核部分运行Full thread应用。但是这两种使用场景是不能同时存在的。
0 M$ j9 V1 Z- Y4 h- U! P$ U, [" X* n" i' ]
目前,6种RF 协议栈都已经支持,并且随STM32CubeWB固件包一起发布。Zigbee协议栈也会马上支持,预计在下一个版本STM32CubeWB 1.3.0中大家可以拿到。
11.jpg
" l+ f: b5 c- |# u. G4 _2 |  d
STM32CubeWB 固件包,当前最新版本是1.2.0,在Project目录下,有一个STM32WB coprocessor wireless binaries文件夹,下面就存放了最新版本的各种RF协议栈。
1 q3 C2 b5 U5 B5 x2 y2 ?# [( D
2 S3 V  |8 I4 q注意:所有随STM32CubeWB 固件包发布的协议栈,都是被ST私钥签名加密过的,必须搭配STM32WB中的FUS才能验签并且解密,然后烧写到M0+内核独享的secure flash中。
2 }  f% D6 o$ `1 p, f
& A5 ]! P: ^; A; f3 w$ R( I! }
表格中前6行是前一页说的目前支持的6种RF 协议栈。后面两个,不是RF 协议栈,一个是FUS本身,一个是用于配合STM32CubeMonitor-RF做STM32WB板射频性能测试使用的。
; p! N% j6 _7 o. o
: i0 d/ K9 G# W% P' FFUS在芯片出厂时已经固化在STM32WB中,但是版本默认都是0.5.3,要想使用CKS功能,FUS要进行版本升级。现在STM32CubeWB固件包里的FUS是v1.0.1。
12.jpg
$ }: b1 u& G$ Q
" x/ c" g5 j6 T( [3 b1 K3 Q
STM32WB. 固件例程:STM32Cube 功能扩展固件包
! j+ T/ P7 y9 K. E, R$ `$ T4 H
除了STM32CubeWB 固件包里包含的多个低功耗蓝牙和Thread应用的例程,在STM32CubeWB固件包之外,还有不少独立的固件例程,来展示STM32WB芯片的各种使用案例。
1 H' Z( T( U' g  t# ~
' w/ `: ^4 X. d% Z- q* X
  • 调整HSE精度以提供STM32WB的射频应用高精度时钟
  • 基于STM32WB的SBSFU,即安全启动和安全固件升级。之前在STM32CubeWB固件包里的ota例程,对M4内核上运行的用户应用程序升级,是明文升级。如果对用户应用程序的升级有加密和认证需求,可以参考这个例程的实现
  • 使用STM32WB做全双工的音频传输升级。之前在STM32CubeWB固件包里的ota例程,对M4内核上运行的用户应用程序升级,是明文升级。如果对用户应用程序的升级有加密和认证需求,可以参考这个例程的实现
  • 使用STM32WB获取传感器参数,并通过BLE发送给手机' Y0 _/ H, |! O# w( \" R0 M

    % j+ |7 f* [# B  w. B( e8 ]) C; b6 x7 U
    ! g5 d2 H  b/ z. p3 s' ?
它们分别搭配的说明文档,在之前讲STM32WB的技术文档时,都已经提到过。

" U' ^7 l% l9 t
13.jpg

3 B( z6 Z  ]! E) \4 {8 i2 I$ U7 S1 ]" T) @2 v; Z7 J
STM32WB. 软件工具
我们提供的丰富的基于STM32WB的低功耗蓝牙应用,有的是蓝牙板板子之间的通信,有的是蓝牙板和手机通信。
) h1 D& y; v4 l; q' F" M/ C; w( d
4 _6 Z* o& v! U/ P+ r$ h' s. @: ?1 E需要用到的手机端app,源码都公布在st github下;苹果版app在苹果商店可以下载,安卓版app在STM32中文网站可以下载。
, g2 i: O* Q" m
3 ^' `$ M& v( L- B  y# W5 t
在做OTA和FUS更新时候需要用到的STM32Cube PC端工具,也都在表格里列了出来。下期介绍,我们会结合具体使用案例,来展示如何使用。
) P. k4 f  C& P. Y+ o; c# \
14.png
+ }- T6 D) d* H" a

/ _& l2 H% J  B# k
STM32WB. 本地培训材料
自从2017年推出STM32WB芯片以来,STM32中国支持团队,做了很多技术资料的本地化工作。包括今年中在六个城市的线下培训,由STM32WB技术支持工程师撰写培训材料,并到现场做培训,和客户交流,解决问题。手机扫描胶片里的二维码,可以下载到2019年STM32WB线下培训的课件。
15.jpg

! r% R6 K9 _: R1 U0 `- n# }+ A2 P
STM32WB. 本地方案
我们还开发了基于STM32WB的智能锁方案。除了STM32WB作为主控芯片,方案里还集成了ST的安全芯片STSafe,直流马达驱动芯片STSPIN240,NFC读卡器芯片ST25,加速度传感器芯片LSM303AGR。通过安卓手机app连接、配置并管理智能锁,包括
向服务器注册用户、注册锁
绑定锁和用户,并使用户成为管理员
添加和删除 锁关联的用户, 等等

% Q& t( d7 j+ q: r. p% c$ L! b. d, T1 v
智能锁的控制包括
通过按键, 开、关锁
使用安卓手机app,通过蓝牙, 开、关锁
通过手机自带的NFC,开、关锁
通过事先关联的NFC tag,开、关锁
通过临时密码,开、关锁

  |1 V" H' X2 _$ A8 Y$ D: i: o9 i
整个方案都是开源的,包括原理图、手机app源码,MCU端固件,详情登陆链接http://club.stmcu.com.cn:8080/smartlock/  (复制链接粘贴到外部浏览器搜索),了解更多信息。
16.jpg
8 s* G3 r; M7 {" p
3 L5 }! D4 ?# J5 y: h. ]5 C; d
收藏 1 评论5 发布时间:2019-10-2 12:15

举报

5个回答
cpt 回答时间:2024-10-15 14:35:17

您好,开源的STM32WB的智能锁方案链接失效了,有新的下载地址吗?

zykzyk-93033 回答时间:2019-11-6 15:10:18
请问这个基于STM32WB的智能锁方案的源代码相关资料哪里可以下载?
qindaotang 回答时间:2021-2-28 23:15:08
WB的智能锁方案的源代码相关资料哪里可以下载
zsdonline 回答时间:2021-3-1 09:45:44
学习
ZJU_Tom 回答时间:2024-11-11 11:07:40

谢谢,学习

所属标签

相似分享

官网相关资源

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