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

基于STM32WB55开发之监测STM32WB连接状态(1)

[复制链接]
攻城狮Melo 发布时间:2023-11-16 14:48
套件概述/ X1 U1 G9 A! y) ?/ }
STM32WB系列微控制器代表了STMicroelectronics在无线技术领域的新一代创新,集成了Bluetooth 5.0、Zigbee和Thread等多种无线通信协议。而在这些无线应用中,监测和管理连接状态显得尤为关键。确保可靠连接不仅对于数据的实时传输至关重要,而且在面对低功耗需求、设备管理和故障诊断时,都有着不可或缺的作用。
" P" j3 |5 N" }, d" a

  g0 M9 ]2 v& z8 n" g/ B7 q本文将深入探讨STM32WB的连接状态监测机制。我们首先会讨论为什么需要监测连接状态,然后介绍STM32WB提供的相关工具和技术。随后,我们会详细解释如何使用这些工具来实时跟踪和管理连接状态,以及如何解读和响应不同的连接状态事件。通过这些内容,读者将能够更好地理解和利用STM32WB的无线连接功能,为其应用带来更高的可靠性和效率。
9 z8 S3 ~% T) r6 a) D% I: h9 L6 \+ o, p! s) i' v! p. D
微信图片_20231116144815.png ' L+ {: U: b( p, ~/ z4 t  a0 S; g
: Y9 R" ?- F* Q4 W
/ o' E+ E8 p% ~6 C3 g
选择芯片型号 9 P/ z& z$ Z0 T! P4 ?/ m
, o1 Y' j& ^* i
微信图片_20231116144811.png
& H& ~) A& K* t3 Y, q: i' C' I, `7 q$ `. E! B( L
配置时钟源
$ _8 w5 e1 f# _/ z7 s+ P6 vHSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:( n7 H% K, n- }/ a
3 y2 P. y' T' b3 N- L
微信图片_20231116144807.png 0 l- k7 O: V% b0 F
/ |1 l; z4 T4 \* W/ J* }, l# C$ Z
配置时钟树
; P) y' \8 N6 h. Q, N3 ]
$ ]# q! F% ]. N# p+ ~
微信图片_20231116144804.png   q) a) F5 v9 g+ S# }
# \5 C- D1 x) z# Y# V/ O# G
RTC时钟配置
( |# C1 Y: {% e  j+ M( Z+ }- |' N/ ~! u
+ N- d+ Z' o- C$ e+ l  B. M5 d
微信图片_20231116144800.png
( L1 ]& A5 u7 s6 y- {# d3 I9 Y  J+ \, |7 t, j
RFWKP时钟配置9 d$ |' J. v7 }3 g

/ U4 \) m! @- w- h/ k7 h; `8 K
微信图片_20231116144757.png
- ^# o3 [& {- {9 s3 K. c. C/ S, N' k% L0 @* Y

6 Q  ~; B5 z( A2 S+ I3 {
* @$ o/ A. h4 v1 n$ }
查看开启STM32_WPAN条件
! B" {6 U% M8 y) {. T) Q- s5 F) K可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。2 J& _" T. c0 N8 C: k/ q" B

3 l! q/ x3 k0 s% S0 l0 E, a 微信图片_20231116144753.png 1 H/ u$ ?0 K) v5 q8 _; a

4 z: r0 r; R# _" {8 W+ _- F* L

4 R5 z# @" z7 i! _5 u1 g配置HSEM $ N3 R( f. `6 N- f% h( b% v5 S
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。
" D1 @( e9 [$ h4 E, v5 _开启HSEM如下。
& c( g& q% M, L. m& j8 A0 l
' K0 u) h  W( @1 [1 z& j  Y 微信图片_20231116144750.png $ }( s* d! N% M7 a: N+ K: Q" D4 l8 r( S

6 w5 ]. V) `1 H/ A9 e3 y配置IPCC
* z4 f- @3 A9 K/ P: S4 n通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
2 l( G" V$ z* [2 b7 g开启如下所示。+ a0 d5 a: H8 d9 o
) z5 [. H2 {3 ~. o
微信图片_20231116144746.png
; l, B$ h) d/ j* k! A
$ K+ U% U* C4 S6 q# q6 q  n* P配置RTC 4 s; r+ B% ^* T+ n* t/ M

4 U# f$ }7 x; C$ ~9 T6 u
微信图片_20231116144743.png ( w5 @: ^2 R& j2 g
9 Z; ^6 M. q8 a) V( b+ W
启动RF 3 u# a# r+ P7 Y2 n

8 M) h. F  v3 g
微信图片_20231116144740.png
( T7 c/ e; s8 {; g1 h2 Q
: D- a: d1 h# ~: d6 E
开启蓝牙 : Z! h4 B2 @/ y, M  c

2 A0 P1 A' P, [0 [5 h
微信图片_20231116144737.png ' l/ B, I! l+ I% |  |

; z; M7 T( ?4 U. A' U4 T配置为自定义模板。/ C& R% M* l; S2 h, |
, N7 n5 ]% Q5 S; h% t+ y( T
微信图片_20231116144727.png . P: @$ J& d$ I; L+ p2 }& L
: ~$ ?( r# _2 p
命名设备名
3 h( m! x2 w$ ~% y! F; N1 g+ L/ S0 e9 S2 G6 s
微信图片_20231116144723.png
, j  h' o+ O' q3 }" W7 i2 l, i5 X, |& V: H
配置BLE GATT
% s% U+ j8 o' m$ t- u
$ G  r/ }; ~1 i8 g
微信图片_20231116144718.png
4 W2 N, T# ?5 a5 L& b% E4 l( T
* R1 ~8 s! C6 Y9 Y. c% a3 h: T
配置SVC
- |2 _; [4 l' ?+ |7 D: I6 r: `, y0 u  }" Q0 m$ N9 F5 J  I
微信图片_20231116144715.png
1 N# E3 F. Y2 w, y. T( y$ D2 k  {4 i, [# d# i# V9 C
LED配置 * S1 C" B: G/ P% [( a
查看原理图可以得知PB0为蓝色LED,PB1为绿色LED。1 P' A6 j8 V5 G* d9 t; J; e

" Q- b- d8 ~# Y
微信图片_20231116144711.png
6 p) w6 H, \0 }! A$ X
$ @, Z( m/ u# r
) J. S, e# r* A
配置PB0、PB1为输出IO。
5 l, A7 @/ b+ z: k, ~8 h
$ Y' Y: F* s! S% a% g; q4 c
微信图片_20231116144708.png . F1 A0 C; ]# x# B+ X6 A
6 ^9 O0 ]. E5 [; y
设置工程信息
: f% U. \5 ?% u; l/ A. O/ v, u- @7 _6 w6 N$ z- }( u4 ^5 @" O( Q* {
微信图片_20231116144705.png 3 V! K! e. e% e* Y

( p& v6 c6 @9 O9 ~; T- k: U7 `* u) ~工程文件设置
& \  B1 z4 b" d3 v1 q5 t) j+ s# y5 {; H$ h* V# G" |
微信图片_20231116144655.png * {1 q: y) B0 t. Y" _, c
( b. ?9 \# h. n: Q  W$ i- M
SVCCTL_App_Notification ! t* K8 }% `! D# u
SVCCTL_App_Notification函数是一个蓝牙事件处理器,用于响应和处理STM32WB BLE堆栈中发生的各种事件。
* J& s! u# p! c: ?& ]: K4 }6 T2 f$ b6 M& l; y; s
事件处理的主要内容:' N+ C0 _8 r8 t0 R$ F
1.断开连接事件 (HCI_DISCONNECTION_COMPLETE_EVT_CODE)
4 ^. r( R. Q( c. g1 g% ~( ]2.元事件 (HCI_LE_META_EVT_CODE)
8 ], s: O. j+ ^. D3.这部分处理了几个子事件,如HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE(连接更新完成)和HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE(新的连接建立完成)。1 F, X5 M' w+ B) P# n+ H
4.厂商特定调试事件 (HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE)0 j/ Q  d+ f+ @' {( v
“在HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE事件中,我们能够判断Bluetooth Low Energy(BLE)设备是否已成功建立了一个新的连接。相反,在HCI_DISCONNECTION_COMPLETE_EVT_CODE事件里,我们可以确认是否一个已存在的连接已经被断开。这两个事件为我们提供了监控BLE连接状态的重要手段,从而使我们能够更好地管理设备的连接生命周期。”
/ N: v$ m/ C3 h' V5 Z& q
4 `. Y$ h6 @& D; Z, w+ X  ]
  1.       /* USER CODE BEGIN EVT_DISCONN_COMPLETE */: K. `0 p8 G& _1 q; d6 z+ H. ?
  2.       HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
    $ ~5 N7 C5 a3 ^4 _! y1 }+ T4 b6 e
  3.       /* USER CODE END EVT_DISCONN_COMPLETE */
复制代码
8 r" Z+ l& j) U. V  i( U- Q" o- C, L
微信图片_20231116144633.png
+ n) G+ i9 g9 u' h* x' w
( @+ T/ ?' H: A7 S! F! o

* D3 M# v+ @* X  @# v& t) m在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一个IO翻转函数。6 Z5 A" q* n: G$ r: Q$ @" S9 s1 s

) o; w5 p: B# K 微信图片_20231116144629.png 7 N# n" Q6 C& v- T& N
  y6 S7 f# L- f: Y# F7 s6 P
结果演示
4 B$ `! [/ E% g2 W' j通过手机和STM32WB建立连接和断开连接可以查看到IO扣电平变化。3 U' G# j+ U0 O3 {( e4 w2 U

0 S8 e! D+ Y" w: ]" v# s! p; ~# R
微信图片_20231116144626.png
3 {( x$ {* v/ i% B* O9 w) \# K2 x! ]
微信图片_20231116144622.png + b" d; F( d' P* r* l% P% r
% m, D& F9 B' J& D" q( e$ U8 G
转载自: 记帖如有侵权请联系删除
7 g0 [1 ?5 t% B4 Y. c+ p- e7 r8 a. g+ w9 y( S6 U

/ f$ u8 r, N2 b* S/ k6 b* Z1 \! y! {" Y' p' y" {: V
收藏 评论0 发布时间:2023-11-16 14:48

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版