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

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

[复制链接]
攻城狮Melo 发布时间:2023-11-16 14:48
套件概述
+ z  b+ K3 [+ D3 \% e% q8 y! |STM32WB系列微控制器代表了STMicroelectronics在无线技术领域的新一代创新,集成了Bluetooth 5.0、Zigbee和Thread等多种无线通信协议。而在这些无线应用中,监测和管理连接状态显得尤为关键。确保可靠连接不仅对于数据的实时传输至关重要,而且在面对低功耗需求、设备管理和故障诊断时,都有着不可或缺的作用。7 L1 {0 X0 W4 L# b  d1 z
% F. s4 h$ w/ e* \* C3 p
本文将深入探讨STM32WB的连接状态监测机制。我们首先会讨论为什么需要监测连接状态,然后介绍STM32WB提供的相关工具和技术。随后,我们会详细解释如何使用这些工具来实时跟踪和管理连接状态,以及如何解读和响应不同的连接状态事件。通过这些内容,读者将能够更好地理解和利用STM32WB的无线连接功能,为其应用带来更高的可靠性和效率。
: C0 @0 z0 Q: E( A* f9 @
. ^: N0 H. @" M+ l0 Z2 a
微信图片_20231116144815.png
5 ?' O: k0 x$ U) P: V: d
/ t+ z* B/ r- [8 U  U/ U' V3 ?, c. I
选择芯片型号
1 L! P8 E( g3 S4 b* D2 N3 U0 O  Q1 H; e' o$ _" C
微信图片_20231116144811.png
; u6 @- S6 p1 E! V8 P4 c! Q& G
配置时钟源 3 Z' f! h- T. T' N4 T8 S
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:6 n' @" I; d- ^+ ~, v" Y

( f) G" @5 ?, a' i+ ]7 ` 微信图片_20231116144807.png , S; T9 c+ ~& _! o+ D) V3 L* D

, I, T2 k7 w' N配置时钟树 2 w* n3 a6 C$ r; G8 D

0 N0 S: h( q9 k- w( x, \
微信图片_20231116144804.png " r9 N2 j# B/ v; {* v

: N2 `' b  O. _; @7 wRTC时钟配置
" [# }5 n- G" b# Y  x* D
: |4 X8 n1 e# j( I+ _5 W5 i, \
微信图片_20231116144800.png
( ?8 f* g) T- ]6 g# d5 t$ n5 m& I2 [( P
RFWKP时钟配置
: l& }: j: ^( M: ^9 b" Q( n2 h6 Q$ W# G$ A" _1 T* p" p+ g" M; e
微信图片_20231116144757.png
" ^* u# a2 H7 h, }7 ^; s- J" j3 M; a$ R! b% ^8 v
  t* i, q9 |$ B( N

( [% D+ ?! U/ S5 h  d查看开启STM32_WPAN条件
' y6 m" ?( Y  k. q& [% A# f; |可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。
  C. f( R, t) B4 P% ~4 T' S
' f4 ~6 t  n9 v4 X( N$ p- R& T6 I 微信图片_20231116144753.png , N' W0 W+ o- n  @. g$ [" x, X

! V5 E+ R* |! \" _8 d: ^
1 U+ k5 n' s) ^, C+ ?& \7 [4 b# F
配置HSEM " ]0 ]; n0 o+ w5 z! B) O% k
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。( d- L( n+ k/ o
开启HSEM如下。
% \3 q# B! W8 Q0 Z! j4 L' `
! R$ Z: w) l" x  S  X+ B% V+ o 微信图片_20231116144750.png 4 Z2 Q/ Z6 I8 [  |; [+ n8 g- W

0 K& K8 r6 s& d+ _! G配置IPCC $ k5 E/ N0 ~. P( _) J5 U- o3 `$ P; O
通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
  c! T5 X6 s$ P1 ]2 H% R$ }开启如下所示。
* ~# d3 H3 g9 r  c3 @5 H3 S, X" I
2 a" a7 h9 r* k: N9 k5 h
微信图片_20231116144746.png
& u' V: a$ W- E
8 n. k4 A& ?2 {0 g配置RTC
3 }; z) _% G- c: s5 x
4 r/ V- [7 w, z1 m( t( A
微信图片_20231116144743.png
- Z. m$ t% j9 i, S5 K
6 X, |4 G9 {( v  x% s7 F启动RF
3 o+ @1 c1 h- {0 g0 g( \' p, X! A  W# Q- n
微信图片_20231116144740.png
0 {( A7 o, @9 S- y3 u# Z7 k5 `

- s' }# \. \5 t9 i" ]开启蓝牙
; F: ~3 N# h. ?% U5 Q) Y5 Q3 t  I
: l) _) L4 e1 l# j* ~6 z7 J8 ^0 U9 T
微信图片_20231116144737.png
: r' b4 J; j$ E: S
/ y1 P1 `( Q; U9 C
配置为自定义模板。# ?' }6 g, O6 T4 Z
0 |# z# f9 \: o! @' A+ s! {+ R, y
微信图片_20231116144727.png
( P5 V# X# ]- t, R1 Z

( N) q9 X+ b" p3 [. x  ?$ ^命名设备名
" W  @3 V' P' d0 A- P" r
$ ~; G3 J) e$ c2 Z+ T& O
微信图片_20231116144723.png 5 s% _% F* L8 ?

+ b, L: O2 S. Q( w' W配置BLE GATT0 r/ S6 P9 x+ U3 P, k) l8 K0 \1 T
, d- n- n) B" X/ o3 C8 U2 n4 Z2 D
微信图片_20231116144718.png 5 i) b5 [- E1 E/ A8 b
! h8 _2 ~% y0 v* N  u9 ]" J2 R
配置SVC
. }& j6 @2 [* [/ Z% a. Z& s2 N: k9 e$ p, C5 V+ J! p
微信图片_20231116144715.png 5 Z1 D( m3 d( l% z+ W. L. K: _

# c5 s+ ?3 G" y+ fLED配置 7 M5 @) y8 l- ?% K+ d" H
查看原理图可以得知PB0为蓝色LED,PB1为绿色LED。
( S/ O& \4 T3 p0 b1 d' ]; r0 P
% P1 P/ ~) j; a8 Y
微信图片_20231116144711.png
3 A1 J. p$ }6 P. J' z  n* M  b" j" N  Y7 B3 u  S, @' D

( C* o, j6 u+ g) s/ p! ~配置PB0、PB1为输出IO。% ~6 y; ~' G% c- x+ f

* C1 W+ \4 K' C# T1 Q/ R
微信图片_20231116144708.png 7 v2 O1 L9 o& r

2 _$ [. _+ V  e! I2 {9 Q, C2 E! [设置工程信息 : Q) X* i: `( Z5 W0 d

8 b% k$ T% b; T& z
微信图片_20231116144705.png - K3 d9 \/ P0 R: ^

( ]& w8 `* L7 M) l( A9 ~, ~; G工程文件设置
) s) |, ~- ?0 Y% ?0 C* _# C( o
: H1 e/ P# G0 A8 X" ^* s9 x$ {
微信图片_20231116144655.png
4 s3 G5 l% B$ ^. r6 H$ f0 O& P

# K& p' i/ f3 `( P# }% {SVCCTL_App_Notification
7 u: a7 Q. l6 N9 O# |' H9 BSVCCTL_App_Notification函数是一个蓝牙事件处理器,用于响应和处理STM32WB BLE堆栈中发生的各种事件。
2 a: p! p% N+ k
1 m$ R' b% e4 n- ~; Y# p4 J4 A# K事件处理的主要内容:1 X4 V( X' h+ i. P& @
1.断开连接事件 (HCI_DISCONNECTION_COMPLETE_EVT_CODE)
7 l' {. [' @, N8 i$ H9 j, p2.元事件 (HCI_LE_META_EVT_CODE), K+ @& k$ w" U
3.这部分处理了几个子事件,如HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE(连接更新完成)和HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE(新的连接建立完成)。9 ]) L* J* `! X. H6 n
4.厂商特定调试事件 (HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE)& B. h$ |. u/ V% _1 |4 b+ f2 n" z
“在HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE事件中,我们能够判断Bluetooth Low Energy(BLE)设备是否已成功建立了一个新的连接。相反,在HCI_DISCONNECTION_COMPLETE_EVT_CODE事件里,我们可以确认是否一个已存在的连接已经被断开。这两个事件为我们提供了监控BLE连接状态的重要手段,从而使我们能够更好地管理设备的连接生命周期。”2 f% W" i! M$ V

. G5 Z7 o0 E( c% U% j. ]5 W
  1.       /* USER CODE BEGIN EVT_DISCONN_COMPLETE */
    8 T+ e% O$ k: i
  2.       HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
    1 p5 L  E; ~- Z( h
  3.       /* USER CODE END EVT_DISCONN_COMPLETE */
复制代码
5 ^. V% }6 g/ W* U$ {0 C1 _
微信图片_20231116144633.png   F& M7 ^! K& N0 V8 x
8 k7 O5 C. z& H8 ^; w" J* E6 X

& O; _# L; r9 B! o. I在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一个IO翻转函数。' O5 s  T  w# o' W1 {

3 F" d/ q2 n3 K/ Y' R. C/ j% l: d 微信图片_20231116144629.png
' d1 y+ C5 B; _& o9 c" A
! `! `. D: m7 \5 q) h6 ]6 O. k1 |
结果演示
6 G2 R+ S. q$ D( F通过手机和STM32WB建立连接和断开连接可以查看到IO扣电平变化。, g, {  }( Y" Q2 f  i- U! H( o
7 M" b- j2 C7 i; w+ u
微信图片_20231116144626.png
4 s( a( T" o/ e0 \* R
+ T9 q0 }( L% g) s  L 微信图片_20231116144622.png
0 W. l1 O& w2 t+ G6 m. X  A. r0 B+ Z8 Z5 ]
转载自: 记帖如有侵权请联系删除8 \( o" E6 o+ Y

8 \- h4 G1 [& X/ ?( D6 N- _
$ l0 I; K$ A1 e% }3 ~
  B+ z# g7 v0 [2 ?1 h  u+ L: G* ]
收藏 评论0 发布时间:2023-11-16 14:48

举报

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