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

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

[复制链接]
攻城狮Melo 发布时间:2023-11-16 14:48
套件概述
9 q5 Z$ m' J+ [; j" U7 a+ \STM32WB系列微控制器代表了STMicroelectronics在无线技术领域的新一代创新,集成了Bluetooth 5.0、Zigbee和Thread等多种无线通信协议。而在这些无线应用中,监测和管理连接状态显得尤为关键。确保可靠连接不仅对于数据的实时传输至关重要,而且在面对低功耗需求、设备管理和故障诊断时,都有着不可或缺的作用。
- V; @" C3 K  G+ I; r& p
* ]9 Y% |% k: C' k. s% A
本文将深入探讨STM32WB的连接状态监测机制。我们首先会讨论为什么需要监测连接状态,然后介绍STM32WB提供的相关工具和技术。随后,我们会详细解释如何使用这些工具来实时跟踪和管理连接状态,以及如何解读和响应不同的连接状态事件。通过这些内容,读者将能够更好地理解和利用STM32WB的无线连接功能,为其应用带来更高的可靠性和效率。0 }) R" ?0 p" @' w

0 M  K4 u' ]+ [
微信图片_20231116144815.png
! T7 U/ \  j6 L2 c% _* X# M% B0 K+ F  V
" X' T/ {2 S# y! z  ~7 u, U2 e
选择芯片型号 $ n$ C# j$ H; b4 o. [  x" m- Q8 n

6 a% J/ \2 w+ b9 t' I 微信图片_20231116144811.png - w1 d( j% [, P* \: d# w# d: A

; |& x+ y( F" s! X! f配置时钟源
7 ]  b, ?+ j7 C  ^! S/ \HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:7 D1 K( I/ F3 G$ G
7 j( A! \! O1 y. K1 S) W7 {
微信图片_20231116144807.png , M" K" U+ D( M  F8 K4 F3 v1 q; e

( {4 `# E5 ~" e# V# F- D1 ?  F配置时钟树
3 q- c! G% {- ]7 P( [1 x2 v3 s$ Z
微信图片_20231116144804.png 3 U: e& c9 v: M# R% A- e6 L) u

8 q/ I* R. b( w' Q9 _# i" L2 r$ G( A$ i% NRTC时钟配置 2 f0 F; c4 Z. o; |& U/ M  c
- E9 k  I. b8 A+ u# A5 v
微信图片_20231116144800.png % O- t7 a) r4 N6 [
  y. l$ S4 v5 B7 s. c
RFWKP时钟配置
5 |4 z1 d9 u% i" _6 v0 ]- X# {! G5 ^. [% Y4 q) Q- l: }: v
微信图片_20231116144757.png
6 b/ x. I+ u! N7 ?% B# ^( y  E# z$ |7 Y% J, r
% `% p2 I' x" K6 C$ f

& U. J& r) d) t. m4 [查看开启STM32_WPAN条件 5 e, x) f# {6 t
可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。1 C7 z8 H, T, t9 A: U) p

# h: d2 g* n0 Q! b; r/ F: [ 微信图片_20231116144753.png 2 N, r; H: D, y4 U3 Z1 t

! ^! ]$ X7 q2 _( O

. ]: F, @4 e- p# ?, @配置HSEM
( O* |. s( X1 I+ O/ Y, e) K硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。7 ?* [# o* |3 s8 H( G
开启HSEM如下。
5 i; G! ^% O4 l" @9 j% V) m; }. p' H/ }6 w
微信图片_20231116144750.png 4 h9 |. g' q' \9 j0 G8 f# b* I

6 V  O: C" d' @) t配置IPCC % ]5 U6 C0 i$ F1 \" ~8 K/ \) Q
通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
6 \, o) A+ D3 ~9 y7 d# P: t开启如下所示。
2 Q9 m& c! J, P! M# W
9 m5 q2 ?1 g. y
微信图片_20231116144746.png ; x1 I9 s1 D% C2 }2 V+ M' C

$ H5 Y+ ~# N, E' T& K& @, m& ~) h" m配置RTC $ W& ~( E" [' }3 ]

. X0 {: M+ h; [/ J
微信图片_20231116144743.png
+ u  W- D0 Q2 @0 Q$ B' q
; i' m. g, |+ C$ a# |) m启动RF 8 H" [7 A9 F2 o- B+ k! _4 f/ t  u$ y+ d/ `

$ C2 z' W  T& u, R/ d
微信图片_20231116144740.png 7 o$ ^* q) I8 R5 L  Y

- n* |( H$ E" u: f2 P开启蓝牙
, A% S; p  t# w" N3 Q% G. x: a! V2 b) M( }' L2 [) k
微信图片_20231116144737.png : j/ }! u+ m5 v3 Z" T
: f4 i0 Q) D) }7 _! |  _
配置为自定义模板。
" P2 P4 d, ~; H1 R  l% C) v  u/ J& b
微信图片_20231116144727.png
5 E* ?4 J+ K9 z% e: x& `4 v
( ~/ M- ]. i) O. Y- r
命名设备名6 e6 p* M, i% z( V: U; F5 F
' f2 A3 Q8 b% @* w  b
微信图片_20231116144723.png / m: [" w& v7 B+ w. }5 j( _

5 ]4 E) d4 r6 H配置BLE GATT
7 f5 Q& n% \1 Q" i  f) y8 L4 p' R  T6 W; @
微信图片_20231116144718.png
" D( O+ `/ c- V: g% |

, N; W( S- Z+ z配置SVC
! U" G% I5 L4 C! s' N
3 c6 o  E8 k0 ^8 |6 x 微信图片_20231116144715.png 5 g4 {- Y$ h6 \* _! n
  k5 [( t- B) d3 B
LED配置
8 v, _* G/ v6 `, y4 i查看原理图可以得知PB0为蓝色LED,PB1为绿色LED。- I8 o6 O9 T2 `: L  h' a. H

4 q5 N* B8 P* T- v
微信图片_20231116144711.png
# d7 S7 [* h2 K6 N% ]
/ r% ]5 b% [# O" l$ t2 q6 X- E% @

. e0 I% A0 S9 P( |3 W2 z6 B配置PB0、PB1为输出IO。
+ R% I" Z* j5 a: m8 T! s$ C1 z, Z- j6 ~! J+ a& c# @
微信图片_20231116144708.png
2 m2 w6 I0 T5 V7 {
& [$ |# _' B$ ?5 H
设置工程信息
) L; e1 w* y5 Y$ \) E# w% {6 t7 F* L0 ^, p* W
微信图片_20231116144705.png
: \: }3 a2 g. f( h- n) F- h& ~: a- G, p: n4 y8 E. M- ^
工程文件设置 * T6 d" |) z  @( W  ~/ g% }4 n& }
, K: U# n9 Y2 l; y1 u! w
微信图片_20231116144655.png
! O8 \" ]+ `1 U' u

. y& P. E! }# Y# c, ySVCCTL_App_Notification
8 ?$ l( r+ e, j5 D5 wSVCCTL_App_Notification函数是一个蓝牙事件处理器,用于响应和处理STM32WB BLE堆栈中发生的各种事件。
" `+ L) o6 Q: \5 o2 x$ r* V) w5 K( D1 K% ^0 ^3 |
事件处理的主要内容:
8 `" I( [! ]2 i, i8 J2 Q1.断开连接事件 (HCI_DISCONNECTION_COMPLETE_EVT_CODE)
( N2 N& r* d! S( p" |4 F. s2.元事件 (HCI_LE_META_EVT_CODE)
  X; f( Z+ G: \3.这部分处理了几个子事件,如HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE(连接更新完成)和HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE(新的连接建立完成)。
2 x' f) _" L- f) z4.厂商特定调试事件 (HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE)
& H6 G8 |7 \8 p+ X& W1 D) L“在HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE事件中,我们能够判断Bluetooth Low Energy(BLE)设备是否已成功建立了一个新的连接。相反,在HCI_DISCONNECTION_COMPLETE_EVT_CODE事件里,我们可以确认是否一个已存在的连接已经被断开。这两个事件为我们提供了监控BLE连接状态的重要手段,从而使我们能够更好地管理设备的连接生命周期。”6 \7 T: \# W) B2 z
. h' u7 K$ U; ]2 W. x# t
  1.       /* USER CODE BEGIN EVT_DISCONN_COMPLETE */! ~, m+ \$ N) G* z* h8 t( e
  2.       HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
    % Z7 m+ A# ]" L4 W  ]
  3.       /* USER CODE END EVT_DISCONN_COMPLETE */
复制代码

& I) [6 P5 w* n, I9 ]- y 微信图片_20231116144633.png ) g. t; H, i% I3 W, P( w% X
# _! [) D) y3 L2 o# h  s; R4 K2 m

- W' {0 O7 L8 r! l0 w0 k$ z7 q在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一个IO翻转函数。- v, c) y7 y4 @, w" B* U' U
! m1 W' y9 E% b6 p4 O& z- y7 r
微信图片_20231116144629.png
8 V3 l7 o9 x( l% K! j( I) E; z0 e9 \

7 h8 A0 X9 e+ j+ p结果演示 ! x( N; ^4 c4 ^* m$ _! P
通过手机和STM32WB建立连接和断开连接可以查看到IO扣电平变化。
  \2 W% {. K% a3 a" O4 z+ ]! w0 s3 z  V; r+ X$ _' y) f
微信图片_20231116144626.png
" m" s0 Y5 ]8 I( `) N4 {" u
# n3 A6 Y1 M* S0 I 微信图片_20231116144622.png
$ @% Y; F( A( b9 O) {: r9 ~3 O* X! y  J! p
转载自: 记帖如有侵权请联系删除5 v) ~4 D+ l2 ^+ z* S; g

/ d% I; s4 |0 a$ o# H1 u3 Z  }8 ^/ {9 p; K+ D7 M1 K
$ Y. A. W  F" R9 a' g2 A
收藏 评论0 发布时间:2023-11-16 14:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

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