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

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

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

$ S% O" O6 c' N本文将深入探讨STM32WB的连接状态监测机制。我们首先会讨论为什么需要监测连接状态,然后介绍STM32WB提供的相关工具和技术。随后,我们会详细解释如何使用这些工具来实时跟踪和管理连接状态,以及如何解读和响应不同的连接状态事件。通过这些内容,读者将能够更好地理解和利用STM32WB的无线连接功能,为其应用带来更高的可靠性和效率。# V, E  {9 z# b* v! C- m7 r9 ]" O

2 z/ K8 \7 I+ _
微信图片_20231116144815.png
, ?) o# E7 g4 u" C
- O- {. j; s9 h; \
; k' B! P0 a, y& a' l/ P选择芯片型号
2 ]" ]3 ], f( Q7 X; K( f& i$ _4 k# @9 Q; X, |  E& Z+ U
微信图片_20231116144811.png 4 L5 \& n4 A$ S3 W$ n
' m+ X' F8 U  a- a. @. x/ p
配置时钟源 * C6 Q0 k2 ~4 U  M9 E: Q
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:7 }- G4 g4 Z1 Z

2 u  b, ~8 q/ j' F. c/ @6 t 微信图片_20231116144807.png
- \6 p1 L. N1 o! ?
) n) T9 C6 g* {# C8 f# @3 u
配置时钟树
0 c& e! z- z5 D6 g6 M, z
7 j+ [& U, t, M# l; a, \0 c# T4 G
微信图片_20231116144804.png
, W+ \. R8 K7 X3 r3 W$ T* u

# j- p  w" e4 D* W) @0 zRTC时钟配置 5 m0 P/ u  x, T

! T8 M& \/ O" ]  q
微信图片_20231116144800.png
! n6 r0 x6 ~5 Q% T& U- j0 [! q( `
RFWKP时钟配置
, v; s3 P$ F, y* [
2 y5 o5 X% i$ S& `
微信图片_20231116144757.png # l# q/ u4 N/ o; P) _) n
/ Y: h/ x5 x( p+ p
, `5 k- Q2 W6 s8 l9 E
/ [9 h2 w8 ]6 [9 X2 W8 ^% [! S% i
查看开启STM32_WPAN条件 # ?# C9 d  S9 A/ _" A
可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。
' W3 W. ~3 W$ H: }% }) }  {3 K+ R- a6 `8 l8 _- u5 T. |
微信图片_20231116144753.png
6 `) a" ^5 o4 [+ q( l9 Y* g
7 h: Z. n/ u8 e' T# i; @
; K1 P" x5 p/ ]1 x" G( v! t. K2 r/ V+ l
配置HSEM 5 s, m8 j" M4 C
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。+ @  k" Z6 D8 [" T% v% A6 t
开启HSEM如下。
& _3 {' r- A  a- m6 D% ~( H
3 y" P8 N2 s) q( Y% d 微信图片_20231116144750.png . m. W- x: T0 S( A
( @) v; |' v2 E+ Y* F: [
配置IPCC
6 n; O' c: q. q- P% a1 S# u: _# X通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。6 b8 o) g! Q* x1 R3 }7 p
开启如下所示。& o! R+ Y/ A0 U: F% g

2 b* a: T- \1 d! g9 W
微信图片_20231116144746.png 2 m7 y1 [- |, J$ }7 o# t+ `% l5 E9 e

3 A9 v7 h5 Z3 {# c5 |+ w8 t6 v配置RTC , @) D" {# n* ]6 t5 U

! y) Q/ M3 n; O  l
微信图片_20231116144743.png
$ f. D5 B& A$ ]7 L, v) c
9 v( l  ?+ _; p8 G8 s启动RF 5 f1 E$ \' {9 `! K! n& S" W

/ U3 p  H5 H4 f  A# T4 k- K
微信图片_20231116144740.png
3 o9 i% D' X! G+ V
: z& V8 p1 @- {, |0 H% b
开启蓝牙 ) H  u7 `) a% Y% q4 N- [8 H- `9 z! e
" Q0 M  G& B6 B# Z1 M
微信图片_20231116144737.png , E1 {; K0 i" Y' @% ~8 b, D. L, [
4 g/ @+ r0 O2 \2 k1 Z4 Q, `
配置为自定义模板。) ?" d! t" g& A+ d9 D1 ~  ]
/ C' w6 W# X8 L7 K" _' f( i
微信图片_20231116144727.png
! O1 h  S6 R; u8 }" M& |; W/ x2 h) K
$ d+ b& ?! v8 n; F7 Y* f2 R" E9 a
命名设备名
7 g; j8 ^! S0 {* G1 g
1 p( ]  i- Y  C3 @' K
微信图片_20231116144723.png
7 a% t' c# t* ^1 `  E+ `" c
9 d* P: x% x3 E) n( G2 C; W配置BLE GATT( l6 _  ]2 i6 X$ i2 B) Z- I# s

5 W8 k7 h% T6 J' c' B
微信图片_20231116144718.png
' U& J- m4 n0 Q. \8 _" k2 v% }0 n0 p

& B- Y0 j  b. s) j, K4 @6 X! L5 |配置SVC
4 c% O# w, m8 n; A# H! j! k5 w7 k) C. ^1 ]: `: j. F
微信图片_20231116144715.png 0 z, s" w7 v3 I+ [# b

- ~5 n1 M$ E& N* ?* B/ _LED配置 1 {1 r' T$ b" |# A  h/ O$ c
查看原理图可以得知PB0为蓝色LED,PB1为绿色LED。
9 B* @7 F/ h2 z7 u) O
+ f2 ~3 u* g3 `: K
微信图片_20231116144711.png 4 \5 p2 z. ]1 x. G( L
1 P6 {  k$ k5 I* K$ J" T
6 y: `4 \7 w1 g; z. t& T
配置PB0、PB1为输出IO。( o" Z4 b$ W" x' a
" B/ _0 {2 {) `8 v' n6 i
微信图片_20231116144708.png 9 e& P% s, ~* ^  R/ L
/ S; n& B, f# ]' ]  i
设置工程信息 / K, K# M; b4 Q) L: h% s6 _8 N

+ z9 R6 e. Y- V& l- H* j  Z
微信图片_20231116144705.png
2 [" z/ B" N9 L  X9 t1 s0 @0 b
% W9 m/ W* X8 ?工程文件设置 3 P4 F  P  z: p

6 K0 t9 E% _% C
微信图片_20231116144655.png
( d' \- S& O3 j, c0 C7 Q9 _
# p* L# ]) J" p' \( C6 y" O( o
SVCCTL_App_Notification 1 @' v" P0 E8 d+ t- ~: L+ y0 [2 j
SVCCTL_App_Notification函数是一个蓝牙事件处理器,用于响应和处理STM32WB BLE堆栈中发生的各种事件。
( ^$ k$ L+ X5 ~3 G: X* H( e- e$ l; p1 ]% C% D4 Q/ _
事件处理的主要内容:  o9 T+ ~5 \9 u9 k# [
1.断开连接事件 (HCI_DISCONNECTION_COMPLETE_EVT_CODE)" `! H* N( a7 x8 M8 d
2.元事件 (HCI_LE_META_EVT_CODE)
6 {! ]# s* Q5 D  w6 G3.这部分处理了几个子事件,如HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE(连接更新完成)和HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE(新的连接建立完成)。1 w/ c) q& P4 |3 J# e- U; R
4.厂商特定调试事件 (HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE)+ O! }8 r1 X. k8 v
“在HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE事件中,我们能够判断Bluetooth Low Energy(BLE)设备是否已成功建立了一个新的连接。相反,在HCI_DISCONNECTION_COMPLETE_EVT_CODE事件里,我们可以确认是否一个已存在的连接已经被断开。这两个事件为我们提供了监控BLE连接状态的重要手段,从而使我们能够更好地管理设备的连接生命周期。”
* {5 i8 N; z: Y, E; u+ `( o" ^+ s5 g  X/ j. T
  1.       /* USER CODE BEGIN EVT_DISCONN_COMPLETE */2 O* ]# b2 R% M  \+ J0 D
  2.       HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
    9 T* }5 F! Q' u5 _
  3.       /* USER CODE END EVT_DISCONN_COMPLETE */
复制代码

6 v. E0 F+ ?7 d0 Y2 Z' {/ o. L& e 微信图片_20231116144633.png   M! n. x( y% {6 z% I; I

1 W: m. H5 L% Y$ q. V

$ M7 ^; b; F3 X0 E: T4 q; O在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一个IO翻转函数。7 p* s! }4 [/ d6 N6 S

! ]" m% Y8 @- [5 w, D  Q 微信图片_20231116144629.png
) A/ V/ S5 F0 f2 G7 ~- N

' T- G% o2 Q9 S7 g结果演示 ) O* H% g8 A9 b! E
通过手机和STM32WB建立连接和断开连接可以查看到IO扣电平变化。( k' \& L5 q; g+ r8 r5 h( E9 ]
9 S& T7 r- T- W' f
微信图片_20231116144626.png
. {; j* Z, G" l8 O, L" z9 a( d2 l
+ {  d5 R& I5 q  I 微信图片_20231116144622.png 9 Z# |. ?" z7 y$ ~

% _, C0 C+ U4 D8 d, Y( }
转载自: 记帖如有侵权请联系删除
% `, d+ N: x3 P  o! }8 C
2 f5 ^. ?' K( Y; X1 {" q2 g) M; e" {5 u2 J* A; i; d# }2 Q

( ~, S$ i9 ~2 a1 Y* C( Q) V6 K* A
收藏 评论0 发布时间:2023-11-16 14:48

举报

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