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

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

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

$ T8 \/ j" p' y4 }. ]! i本文将深入探讨STM32WB的连接状态监测机制。我们首先会讨论为什么需要监测连接状态,然后介绍STM32WB提供的相关工具和技术。随后,我们会详细解释如何使用这些工具来实时跟踪和管理连接状态,以及如何解读和响应不同的连接状态事件。通过这些内容,读者将能够更好地理解和利用STM32WB的无线连接功能,为其应用带来更高的可靠性和效率。
/ C) |, M/ c& u' ~2 m) Y: r/ ]
+ S* v+ n$ |& O2 G8 j
微信图片_20231116144815.png , ~3 y2 U$ A& T+ }% a% T

7 r7 z- R$ c% Q" \4 b" `* u: T0 N- x
选择芯片型号 8 M* S, W# D& j4 C. E' \  f, d
& v6 A" J7 ]5 F: Z3 V1 N
微信图片_20231116144811.png $ I4 w+ F* |+ _
5 N; D5 V; A! R
配置时钟源 2 Q2 C4 g* z  f8 y- J) U/ Y
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:) y: b* M* N1 R# D2 W* t+ [
9 W1 J# d" f. ]5 _5 |# w! H
微信图片_20231116144807.png 0 t8 P- `  k+ \0 ^

% m$ `& q% b* o配置时钟树 3 \1 p) K# W* d) B- ^7 s; s) M

; h4 ?- i0 T3 U8 F5 Z
微信图片_20231116144804.png 3 T! E) ]" I( C, ~8 u

2 _+ U1 n, Q- z. W0 cRTC时钟配置 ) m( e2 v3 V6 N

  Y" F* S7 Q- A# @. r% y
微信图片_20231116144800.png ! H/ W2 h" I) o, _
' N; I0 d4 G+ G7 u
RFWKP时钟配置# l, o2 T, Z9 I/ C$ g4 A9 J3 p$ {1 \; G
$ x- T7 o8 z3 ^9 y( s
微信图片_20231116144757.png
8 M) L7 p3 i+ m2 i! n0 p7 @) a* f8 y# G) z5 O3 X7 P

, q$ _0 F' R" j3 C
" C" l+ ~* y) w: k
查看开启STM32_WPAN条件
. _" x3 J. P* X% F% c可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。
& J6 w/ `1 I. |  X" D9 t
4 ?" Q. l6 a( j' j/ ~) V  L 微信图片_20231116144753.png
8 K5 W) I: n0 U9 O  G% a$ N4 M8 G* h/ n+ V% x# X
" x4 Z8 f- o+ o+ {# t
配置HSEM
5 W+ z! U5 _) Z6 ~硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。6 [, u) E  r6 y" J# D. ~& q
开启HSEM如下。
: U: V  s+ D+ T' p$ e; C% g' v9 \0 C
微信图片_20231116144750.png , w4 Z# q+ R& w5 G* l

* D# Y) q# f1 Q; `2 B配置IPCC
* H2 x1 t. c" Z通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
1 P' n( p4 ]# Y) V开启如下所示。
. N. ]6 {/ d$ ]# W' ^  r' v
, T4 k( Z9 x( p& u
微信图片_20231116144746.png ) P9 C. ?% }6 p  A+ s

) A; O. s/ \" H9 `" g; T配置RTC
( K4 J4 T8 M$ T. V9 K* \
  L& e/ o) u( N! U: S1 O
微信图片_20231116144743.png % R7 i" `, w6 T. M- S% Q) D4 S1 t
; J6 j. h& [$ O+ N& d" _  \. o
启动RF # A0 f0 N% X5 r! z
2 I5 A) \3 a' @/ i9 a
微信图片_20231116144740.png ! s8 H; B3 d: {
3 s# T: a9 Z1 S3 e+ L! t
开启蓝牙
* \1 w) W5 y4 G3 b$ a. y3 [) E4 [8 O
微信图片_20231116144737.png
2 Y, Z4 C3 p) N- `

2 i/ E1 G# n$ D! d3 l配置为自定义模板。
, l/ Z5 J6 o7 }9 [3 E7 w0 u* |5 c
- \# h4 j9 `* U  U 微信图片_20231116144727.png
: ?0 F' M, b7 z8 n& ^
2 L$ v, `( l6 f0 g: V1 k' O( w
命名设备名
) S. t( s! k. ^( ^- S$ ]8 D! z7 U0 Z7 w' O; Y! L  ?: U# r" r
微信图片_20231116144723.png 1 S' ?, C" K* f( V  z' _1 J
6 o7 O0 J7 w, [$ I) n) N. b
配置BLE GATT7 V6 b% G/ f! M; O9 m8 Q2 ~

* N$ u" h9 v# f8 j; m
微信图片_20231116144718.png
0 L( P1 d  {! @2 y# U
( ]- T9 P# l" h  `4 X* d
配置SVC+ c2 ~% t5 \: U$ n$ j7 K' h* P
! R) D5 q7 Y: o( T9 n9 ]
微信图片_20231116144715.png 7 G0 {! |. y$ X: e( y+ q7 \  T
6 _  S7 v: K6 b2 {* j9 B) t; U5 y- Z; Y
LED配置
; n. T8 b; S; n, C* L! R8 t查看原理图可以得知PB0为蓝色LED,PB1为绿色LED。7 t6 ^8 N; l* x$ c) o
# i! F. V4 X: \
微信图片_20231116144711.png
9 g/ ^% Q2 p% t1 m# {8 E! ?4 V+ d
5 {" C' q4 k& V% P; Y8 }

" t7 {* N3 k5 f2 {8 O0 A配置PB0、PB1为输出IO。
, |( \/ |( o) n) s% \2 n* q6 A& n  ~: J0 w& X: ?# i. R
微信图片_20231116144708.png % P' u" f. S7 J# [0 B- ]

7 x" j3 B3 X" ~% {* w设置工程信息
9 E! _. H0 k# w6 W
$ \! W$ j3 s" j3 w; M6 \' f' m
微信图片_20231116144705.png
8 G/ s  k; H" S+ t5 P" \0 _
  ^. c% f) X* G6 U+ H5 T工程文件设置
! s! O: f3 S* {+ }8 `* X* H6 r; l) B$ Q+ |
微信图片_20231116144655.png & e, S& t+ C7 i0 |
% p! v1 J& k  b5 r2 B8 }" \4 r" E# n
SVCCTL_App_Notification ' m, E4 U# a4 |* C" J+ [5 P4 F* F% @
SVCCTL_App_Notification函数是一个蓝牙事件处理器,用于响应和处理STM32WB BLE堆栈中发生的各种事件。
  x8 |0 v) U7 c" M* T# _$ [$ F: @* p7 h# L5 y+ k
事件处理的主要内容:* X2 }! c/ U" |$ V, `0 I  i8 u, G* n
1.断开连接事件 (HCI_DISCONNECTION_COMPLETE_EVT_CODE): q) F: l8 b6 L7 b4 p
2.元事件 (HCI_LE_META_EVT_CODE)
9 z; q; K/ i9 R3 T3.这部分处理了几个子事件,如HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE(连接更新完成)和HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE(新的连接建立完成)。5 y$ l6 `7 F7 ]) t: _
4.厂商特定调试事件 (HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE)' C4 Z7 o4 V& f8 U8 L
“在HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE事件中,我们能够判断Bluetooth Low Energy(BLE)设备是否已成功建立了一个新的连接。相反,在HCI_DISCONNECTION_COMPLETE_EVT_CODE事件里,我们可以确认是否一个已存在的连接已经被断开。这两个事件为我们提供了监控BLE连接状态的重要手段,从而使我们能够更好地管理设备的连接生命周期。”
4 A1 ~+ X) }2 j) c! n( ~4 r  L: ]
! D" J- Z  L# C- w6 l$ ]
  1.       /* USER CODE BEGIN EVT_DISCONN_COMPLETE */9 V2 I0 I5 k; x! Q4 W3 M. Q4 O1 }7 i
  2.       HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);* H( G6 \5 [3 f3 [! {
  3.       /* USER CODE END EVT_DISCONN_COMPLETE */
复制代码

6 p! ]2 t' \' `# r* q 微信图片_20231116144633.png
7 q; o: z2 E0 O' n0 W9 h/ N3 c+ }9 ~- u
- j) \$ ]) \) W5 Y# g  M- f0 X
在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一个IO翻转函数。# u% j6 G% }- [  ^4 S+ ]6 S( A

# j' _( R1 {8 u0 ~ 微信图片_20231116144629.png
* D; Z' ]$ V3 M' ?
4 _5 t3 \5 C5 e( X
结果演示 % k1 t. S3 L% S+ w* x
通过手机和STM32WB建立连接和断开连接可以查看到IO扣电平变化。4 _' T5 z# b( ~# o9 V. t9 x; F
: r; E: C2 L7 p( b9 s6 f3 A* r
微信图片_20231116144626.png 9 ]8 i5 k6 M1 ]  u( H

7 t- D9 i/ ^+ ?+ K& S9 g0 X4 @ 微信图片_20231116144622.png
9 i* F6 k$ r" L
4 U+ e/ \- [$ h, M1 L4 c3 T
转载自: 记帖如有侵权请联系删除
2 C! |# e1 X3 S, a- u( T6 }2 B1 V: Q' k1 r9 K; O2 ]& M3 n
% T& @0 x' Q) I3 ^4 R8 Z

/ d3 E: k. ]( _' g6 E% }
收藏 评论0 发布时间:2023-11-16 14:48

举报

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