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

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

[复制链接]
攻城狮Melo 发布时间:2023-11-16 14:48
套件概述
$ D7 L- ~3 \) p, c! D0 @3 |8 bSTM32WB系列微控制器代表了STMicroelectronics在无线技术领域的新一代创新,集成了Bluetooth 5.0、Zigbee和Thread等多种无线通信协议。而在这些无线应用中,监测和管理连接状态显得尤为关键。确保可靠连接不仅对于数据的实时传输至关重要,而且在面对低功耗需求、设备管理和故障诊断时,都有着不可或缺的作用。
3 [- x9 ~" J3 Q3 |
8 |( P6 Z$ |8 F% M, G9 s
本文将深入探讨STM32WB的连接状态监测机制。我们首先会讨论为什么需要监测连接状态,然后介绍STM32WB提供的相关工具和技术。随后,我们会详细解释如何使用这些工具来实时跟踪和管理连接状态,以及如何解读和响应不同的连接状态事件。通过这些内容,读者将能够更好地理解和利用STM32WB的无线连接功能,为其应用带来更高的可靠性和效率。
$ Q( }, e- L. @4 |% F0 E# z. y
+ ?1 j, W9 x! s/ \7 S/ k
微信图片_20231116144815.png 2 m0 z, l& e* N6 G4 H
/ p! Q( H) v% A5 d
8 Z! ~( K, l4 z3 l  ?
选择芯片型号
8 f' R( k1 y4 J$ ?0 l# ^1 u- h9 I, K  d; j6 m4 F2 `
微信图片_20231116144811.png
) \$ e4 j6 j9 R- r1 Z( ?0 R9 |
( Y+ y. M4 |+ O配置时钟源
7 y) s# @& \: A7 GHSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:0 Q+ T0 p0 p' f
. d" o( W3 l$ A6 u, l
微信图片_20231116144807.png
( w- O# }% |/ Q. n2 r+ o
3 g: s$ U4 D2 H" R7 p7 }% `' s! y
配置时钟树
' j# h; [$ B4 n0 ?# J) ?
( A, Y2 h' R7 ]8 _& ~6 u7 U0 l
微信图片_20231116144804.png
& r. s& Z  ]4 u! |
0 i6 L/ L+ ^* X
RTC时钟配置 * d0 X& J8 c4 f+ x9 H* d/ ~# j

  H  p- I! U- M( u
微信图片_20231116144800.png 0 L; |% i7 u6 z+ P) e6 i

! n  O" x$ ], Z& A5 wRFWKP时钟配置7 g" x, N' V& P
: L$ [6 P6 L, }. U% X, s
微信图片_20231116144757.png
: o* m2 R& f+ z
; [% q5 k2 w/ G9 _% y# L3 L% B
$ H* q1 O, L- A

' d6 H" \' i8 M7 U查看开启STM32_WPAN条件
0 K1 a! s* G2 Y4 ~7 p; I可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。
: ~) S$ k4 Q: J# O0 b7 O# f  D. I& i  |
微信图片_20231116144753.png
6 W* @# R& d/ |6 I: U
$ d3 ~- v! k& w# T9 _
3 `1 _1 h6 k( ~- T& e  x* z0 F
配置HSEM
4 x! V8 d% [6 m( K  u( l硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。" u( w; V# \* M- b$ C; V
开启HSEM如下。
" d+ k! L/ `1 }! H7 M
! H( X; K" [9 G& a 微信图片_20231116144750.png
: I6 i4 B+ X0 S' U
9 E' d# g% J5 L" E( i$ k配置IPCC 8 O" C+ U( c# {& v
通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。2 y5 d" i9 Q8 K( P8 R& h: p
开启如下所示。; s5 Y( q' B7 e( L; d

* r! n, A9 H/ m9 L) C
微信图片_20231116144746.png ' a  n2 j2 ?6 S3 }) l& e
% G9 Q, q5 R$ c- ]/ e) m6 A: `
配置RTC
* l% u* u$ i4 u
, G4 C3 b* r! c0 }6 [, q' w8 K
微信图片_20231116144743.png
7 A: |/ O9 L3 f6 K
+ }8 y: W* S/ A' N启动RF
/ h- H/ `" T2 k# U# W! b: u& N; p6 H- Z$ F
微信图片_20231116144740.png
4 r2 J" Q& A3 S7 o2 ~

7 Q/ i6 `* E3 N7 |0 E; d4 ]开启蓝牙 1 A. w+ |0 `" |; W( e6 `
8 G% ]# f4 g( v6 f2 N( B
微信图片_20231116144737.png
# Z( o2 g/ u% X4 v  |; ^

& A. b! d! B# f# p配置为自定义模板。
6 ~# Z3 Q# W) V6 S5 G
& V$ O7 A/ p/ s3 Y) C+ [ 微信图片_20231116144727.png 3 q/ s, c; `- H& G" N8 F
3 z- u5 X$ k) R4 t
命名设备名
( k' y3 G% h% _0 `4 o4 x! B; r1 O3 _
微信图片_20231116144723.png
9 v7 r7 m- Q# y; `: L& T* P0 W/ |* i" t6 K; [8 r+ k; y; h0 \
配置BLE GATT
( R5 `- G$ ~2 r1 U/ a
7 d1 X  h! W: J" g' _! A2 Y
微信图片_20231116144718.png - A9 T) Q) \2 ?& p2 B. u
, b% M- h. U' j7 ~
配置SVC; E& |' \+ ^* J

3 ~5 N: y4 U- K3 w. k3 _2 o' U' v9 { 微信图片_20231116144715.png
. V* A; S3 ?  s  W, C% f4 l
3 o4 W9 b2 J* J( YLED配置 ' n. u8 T7 I$ D5 j4 g
查看原理图可以得知PB0为蓝色LED,PB1为绿色LED。! W9 V# h6 f+ p' E
  P8 ~  o, E3 m) h8 z/ ]
微信图片_20231116144711.png
' N* J% {# u% K0 J7 E, y3 M' h3 O
4 X- ?7 q9 W4 }' }! o

: M  E( Q4 Z) c9 j" H  B$ h. V配置PB0、PB1为输出IO。5 I! f" E5 Q1 m
; a9 e3 s, S0 O& F+ Y  }2 T2 w1 I
微信图片_20231116144708.png / `8 s5 C# T0 w1 m0 e

' A- `% B$ B0 G. b2 E& O7 l. I" n设置工程信息
: K5 u9 r9 u: `0 Q( o- w
2 f3 k! v5 l7 Y& j( d# d2 Y
微信图片_20231116144705.png
6 T- i, ~+ \) `* j( F
. [  O7 s! m. m$ X1 Y! F* [. y% X工程文件设置 ! Y. X" |0 U# i' f
/ W. @9 v4 S& F$ L* r+ c! j" [
微信图片_20231116144655.png
; v% _1 w" t$ o/ S

/ Y8 D3 V& h( o8 MSVCCTL_App_Notification
2 R! A* A: T" s7 K$ j7 L) USVCCTL_App_Notification函数是一个蓝牙事件处理器,用于响应和处理STM32WB BLE堆栈中发生的各种事件。
" A( b0 Q+ X$ K' N4 `; x* p/ J
% D. ]8 F3 }  x事件处理的主要内容:
" [( G: W$ w$ V8 {+ U1.断开连接事件 (HCI_DISCONNECTION_COMPLETE_EVT_CODE)% f& d# |' [( Q: X- m
2.元事件 (HCI_LE_META_EVT_CODE)
0 T$ X% ]) T! k9 H3.这部分处理了几个子事件,如HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE(连接更新完成)和HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE(新的连接建立完成)。. b4 z" {' {" J4 x4 B0 R
4.厂商特定调试事件 (HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE)2 O9 P- _5 L- B/ E) X& F! D& Z1 |9 A
“在HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE事件中,我们能够判断Bluetooth Low Energy(BLE)设备是否已成功建立了一个新的连接。相反,在HCI_DISCONNECTION_COMPLETE_EVT_CODE事件里,我们可以确认是否一个已存在的连接已经被断开。这两个事件为我们提供了监控BLE连接状态的重要手段,从而使我们能够更好地管理设备的连接生命周期。”, c( g7 M5 ?0 ~7 K
0 [8 h1 e, ~" U4 V9 W
  1.       /* USER CODE BEGIN EVT_DISCONN_COMPLETE */; B& ?( P  s* y  ~3 l5 _* o4 i  U
  2.       HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
    % p3 B0 T& W! Q5 R1 V& q
  3.       /* USER CODE END EVT_DISCONN_COMPLETE */
复制代码
" y" g5 |: o% ?9 w( D; u) [
微信图片_20231116144633.png + R- _6 S7 {( ?% {. ^* j

* F9 q7 B2 c1 a
3 _% c! \2 O! q; S* L* N, f( o
在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一个IO翻转函数。) M4 [/ P7 v9 F/ |  S$ [6 j
4 `  w, P/ j* P- t+ ~
微信图片_20231116144629.png
/ ]9 r) J% W. C' R0 ?+ k- l
8 r$ B) L( Q* W" P+ L: D
结果演示
. A; D4 Q7 |6 w# O6 _) G9 O通过手机和STM32WB建立连接和断开连接可以查看到IO扣电平变化。
' I/ e! i7 y. o0 K' l6 E' l- T2 ]5 p# S. b  j% k( w9 h. e) y/ K
微信图片_20231116144626.png
2 f! u/ `# \' ^2 t: j; K+ M, u/ ~* L4 [6 P5 d5 R, D! C7 A0 P" s6 r
微信图片_20231116144622.png % ?$ [- h2 \9 ~
8 X5 Z$ T# q+ ~5 G
转载自: 记帖如有侵权请联系删除( U1 }4 D9 r$ R
: {0 E: W: E5 u# I& }8 N

: G% z, B' }+ l4 I; X7 ?) U# m5 l) p
收藏 评论0 发布时间:2023-11-16 14:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

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