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

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

[复制链接]
攻城狮Melo 发布时间:2023-11-16 14:48
套件概述
9 O  u( M7 f4 Z+ |' s3 YSTM32WB系列微控制器代表了STMicroelectronics在无线技术领域的新一代创新,集成了Bluetooth 5.0、Zigbee和Thread等多种无线通信协议。而在这些无线应用中,监测和管理连接状态显得尤为关键。确保可靠连接不仅对于数据的实时传输至关重要,而且在面对低功耗需求、设备管理和故障诊断时,都有着不可或缺的作用。
( ~: B1 e$ [- J

5 J  h% H+ R9 F: ~% Y4 d/ y本文将深入探讨STM32WB的连接状态监测机制。我们首先会讨论为什么需要监测连接状态,然后介绍STM32WB提供的相关工具和技术。随后,我们会详细解释如何使用这些工具来实时跟踪和管理连接状态,以及如何解读和响应不同的连接状态事件。通过这些内容,读者将能够更好地理解和利用STM32WB的无线连接功能,为其应用带来更高的可靠性和效率。& ?( ^# c- c8 Y. Z$ k' e

4 c2 g; j- r0 O7 M) J% N# M
微信图片_20231116144815.png $ n: G# L! L% k2 m, T
, k% ]  F# O, C$ ?) Q

/ h1 z2 P8 r% x2 q- ]1 Y选择芯片型号
- X! ]: X$ N" g+ h8 O* [" u& O1 J# K  p; h. N& m
微信图片_20231116144811.png
6 e% z" D+ E% I$ e5 L6 r7 c; `* m8 J: ]: E
配置时钟源
/ l6 c9 @, k* ]0 i- q; M0 [HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:' [) \' H$ V' R: E$ r
) W# `! W! M! x2 T7 e7 _
微信图片_20231116144807.png 6 b3 I9 v. K: g$ p7 U1 T; D+ {0 g

# Z& F: Z, g- [+ C  H0 q) M配置时钟树
* O3 B9 ?4 s% N8 C. B4 [4 m, L, k; b1 x( |9 G8 @1 m
微信图片_20231116144804.png
4 s) Z( t3 o, k

; c/ f8 a( Z. h- I7 aRTC时钟配置
. g) F6 R3 K8 w! d
+ p6 w+ u( Y; K. ?7 N. D/ k6 L& Y
微信图片_20231116144800.png 2 c+ N8 a  V6 c& k$ ?( T

1 y3 t: g' t. s8 @1 }6 FRFWKP时钟配置
: s1 G+ e8 ~  c) Q  J
$ v0 c. K2 Q5 u9 ]  C, V
微信图片_20231116144757.png * W+ R4 X$ W  K  M; J
4 x  E. f7 u+ Q

5 z- z' a( Q# Z7 H! ^# y6 E
; b' T: i& T0 b; B
查看开启STM32_WPAN条件 6 w& L! o3 {. \+ }$ z
可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。2 q- t3 Y5 R3 o$ }( G
9 c- a# F, x* ~1 Y
微信图片_20231116144753.png
" L  X6 {& z6 h- A* b
  ]8 H7 T3 ]/ k; k
3 t! S. J. _# I4 e% t1 D# p
配置HSEM
$ B) p1 w+ K0 H' q硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。
4 G9 [* G8 J1 K& h, o开启HSEM如下。8 ]! n3 w7 n5 w

, ~) R* |$ H+ d+ P 微信图片_20231116144750.png 6 Y5 c! R7 |' h' z* |
! \4 Q$ R# [! ]) ?
配置IPCC 3 [8 C, `  z; Z: j$ P  i& x
通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
3 j) A' ?& ]8 T, Q0 @开启如下所示。
& s( T- _  I, u! O, |2 O
6 w* b6 ?7 d" S. r( G7 k, C# o* }0 a
微信图片_20231116144746.png
; s/ R" f: [) ?# u- s: ?% p/ e1 c" v3 h- i
配置RTC 7 i/ ~  i6 q! c/ y3 E2 c0 u

+ ^0 F4 u2 Z9 F$ x" h
微信图片_20231116144743.png $ P5 \9 z$ X: [
9 O+ n: i0 C! r# a
启动RF
: ^; L7 W! \4 a9 C7 s- q: q" }4 m! s& v3 d$ Q2 I
微信图片_20231116144740.png
, B8 c" L5 _8 @& Z7 b" ~  w# L
. r, h6 `* B: w) n. ]  T6 k
开启蓝牙
+ N6 L; z* c) s" Q' L) n9 j9 ]- y* ?$ n
微信图片_20231116144737.png
1 D& b$ O5 P- i
) E. X1 }9 _; Q! o2 H
配置为自定义模板。
( K$ Q& t) W  F% V% ]$ O' P* y1 }4 y: e( q2 b5 q/ c8 D& M
微信图片_20231116144727.png , R# ^' {( S1 T& z0 \+ E- _% Z
1 l1 v  G" n4 y0 J' `+ t9 H4 w
命名设备名% P4 A% u- o/ g) F  \' }) m* y

: {3 C3 X' G' @3 M
微信图片_20231116144723.png
# r' k: H! F$ M  f, L7 h; E- p* l$ M  R( d" S
配置BLE GATT4 Z+ m3 K% S4 q" {) R4 g& o% H

+ C1 a6 C( D& B; h/ H! r
微信图片_20231116144718.png
0 f: p8 a  X& I

2 r! [/ t7 i  {+ q) q9 P配置SVC
2 L  K7 {# Y5 N" B' x' x. X
: a' I% Y' a; k! X" e 微信图片_20231116144715.png
7 ?4 Q- _# @' h9 O, M$ \  s* R# M- @: E( ?
LED配置 ; J! \6 f. S% n& [6 Z: G
查看原理图可以得知PB0为蓝色LED,PB1为绿色LED。
+ U2 o4 s! s( N& g' o7 H" T
- e. j) n9 ?8 x# V
微信图片_20231116144711.png " h6 m/ O& R4 {: Q. h& ~* i3 d
! ^: B8 O5 I- f2 t
8 y9 R) v! a; O4 X' q
配置PB0、PB1为输出IO。
: A" Y" E7 R" ~& y# }( C7 F  p3 V% h4 r% l0 F. I6 S
微信图片_20231116144708.png " g+ b0 r8 F  m4 i

' W1 e  }' ]! @: ?/ m设置工程信息 # t! u% @. {4 t

# {9 c7 U8 R9 U
微信图片_20231116144705.png # }! |  K# l7 M4 a0 N$ F( [$ F

: A8 N7 S; \8 h# A8 _/ j工程文件设置
* Y% D4 W/ n' k6 {6 K5 O% S/ Z3 Z* v! W7 K- d
微信图片_20231116144655.png
+ ~  P2 W/ |; h% N/ y6 Z

8 Y' I2 ~/ c4 O& z, LSVCCTL_App_Notification 3 B2 ^  w4 T, M% ?# I. Q
SVCCTL_App_Notification函数是一个蓝牙事件处理器,用于响应和处理STM32WB BLE堆栈中发生的各种事件。
" I. B. x! `3 G+ n& o7 s
5 U. U: \3 C8 c- f事件处理的主要内容:
% I, {: {" c9 I8 w, @7 ~' ^6 V+ j1.断开连接事件 (HCI_DISCONNECTION_COMPLETE_EVT_CODE)5 B6 p  W/ @$ `- i+ {$ p/ V
2.元事件 (HCI_LE_META_EVT_CODE)# O8 k" H9 E! H4 x2 i/ g. @; m
3.这部分处理了几个子事件,如HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE(连接更新完成)和HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE(新的连接建立完成)。
' X; M& C9 w+ k& }# V; X4.厂商特定调试事件 (HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE)4 B" v1 ]- N/ `7 J8 ]7 ]7 ^
“在HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE事件中,我们能够判断Bluetooth Low Energy(BLE)设备是否已成功建立了一个新的连接。相反,在HCI_DISCONNECTION_COMPLETE_EVT_CODE事件里,我们可以确认是否一个已存在的连接已经被断开。这两个事件为我们提供了监控BLE连接状态的重要手段,从而使我们能够更好地管理设备的连接生命周期。”$ R9 C# P; E6 g9 s5 p6 B

; E( u) i) h4 z: L/ L
  1.       /* USER CODE BEGIN EVT_DISCONN_COMPLETE */
    + i- [- y  l  h2 S5 Z- ^2 e/ x4 Y
  2.       HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);% s6 Y% \* c) u( o
  3.       /* USER CODE END EVT_DISCONN_COMPLETE */
复制代码
( k( }0 g( ?6 A  y% `. x
微信图片_20231116144633.png
& d8 ?2 C1 G8 T# |  s- n: M* j: p" J
/ N7 f, u5 X+ A0 z6 W  @
在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一个IO翻转函数。
$ n% r# n7 h. R9 k9 Y5 [1 L. H: q1 _, F, V
微信图片_20231116144629.png
- _- k/ p# |! S; E
( v+ Y7 l' J: X  p3 n
结果演示
9 Z* V3 E# _' k" N) p0 c! {" a通过手机和STM32WB建立连接和断开连接可以查看到IO扣电平变化。
+ J/ [( ^; R4 P3 m, F
  a  q0 W1 a/ Y5 ?' l
微信图片_20231116144626.png
) {- o9 C1 y2 E+ E4 I9 d. g( G: h$ |
微信图片_20231116144622.png 6 T2 C% ~/ O: b+ v

( t5 K7 _, O9 A) z6 z
转载自: 记帖如有侵权请联系删除  |2 h5 C, |4 o8 C8 r; j5 _( W
9 S0 g8 c8 H. A0 f5 ~5 V  J# k

# S3 h5 z$ ?% k8 J# ^7 X1 @* x* p0 s) [* e: m; Y6 {
赞 收藏 评论0 发布时间:2023-11-16 14:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版