|
套件概述 STM32WB系列微控制器代表了STMicroelectronics在无线技术领域的新一代创新,集成了Bluetooth 5.0、Zigbee和Thread等多种无线通信协议。而在这些无线应用中,监测和管理连接状态显得尤为关键。确保可靠连接不仅对于数据的实时传输至关重要,而且在面对低功耗需求、设备管理和故障诊断时,都有着不可或缺的作用。 * ]9 Y% |% k: C' k. s% A 本文将深入探讨STM32WB的连接状态监测机制。我们首先会讨论为什么需要监测连接状态,然后介绍STM32WB提供的相关工具和技术。随后,我们会详细解释如何使用这些工具来实时跟踪和管理连接状态,以及如何解读和响应不同的连接状态事件。通过这些内容,读者将能够更好地理解和利用STM32WB的无线连接功能,为其应用带来更高的可靠性和效率。0 }) R" ?0 p" @' w
* 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
配置时钟源 HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:7 D1 K( I/ F3 G$ G 7 j( A! \! O1 y. K1 S) W7 {
配置时钟树 ( [1 x2 v3 s$ Z
RTC时钟配置 2 f0 F; c4 Z. o; |& U/ M c - E9 k I. b8 A+ u# A5 v
y. l$ S4 v5 B7 s. c RFWKP时钟配置 ! G5 ^. [% Y4 q) Q- l: }: v
( y E# z$ |7 Y% J, r % `% p2 I' x" K6 C$ f 查看开启STM32_WPAN条件 5 e, x) f# {6 t 可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。1 C7 z8 H, T, t9 A: U) p
配置HSEM 硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。7 ?* [# o* |3 s8 H( G 开启HSEM如下。 % V) m; }. p' H/ }6 w
配置IPCC % ]5 U6 C0 i$ F1 \" ~8 K/ \) Q 通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。 开启如下所示。
配置RTC $ W& ~( E" [' }3 ]
启动RF 8 H" [7 A9 F2 o- B+ k! _4 f/ t u$ y+ d/ `
开启蓝牙 % G. x: a! V2 b) M( }' L2 [) k
: f4 i0 Q) D) }7 _! | _ 配置为自定义模板。 1 R l% C) v u/ J& b
( ~/ M- ]. i) O. Y- r 命名设备名6 e6 p* M, i% z( V: U; F5 F ' f2 A3 Q8 b% @* w b
配置BLE GATT 4 p' R T6 W; @
配置SVC
k5 [( t- B) d3 B LED配置 查看原理图可以得知PB0为蓝色LED,PB1为绿色LED。- I8 o6 O9 T2 `: L h' a. H
配置PB0、PB1为输出IO。 $ C1 z, Z- j6 ~! J+ a& c# @
& [$ |# _' B$ ?5 H 设置工程信息 7 F* L0 ^, p* W
& ~: a- G, p: n4 y8 E. M- ^ 工程文件设置 * T6 d" |) z @( W ~/ g% }4 n& } , K: U# n9 Y2 l; y1 u! w
SVCCTL_App_Notification SVCCTL_App_Notification函数是一个蓝牙事件处理器,用于响应和处理STM32WB BLE堆栈中发生的各种事件。 ) w5 K( D1 K% ^0 ^3 | 事件处理的主要内容: 1.断开连接事件 (HCI_DISCONNECTION_COMPLETE_EVT_CODE) 2.元事件 (HCI_LE_META_EVT_CODE) 3.这部分处理了几个子事件,如HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE(连接更新完成)和HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE(新的连接建立完成)。 4.厂商特定调试事件 (HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE) “在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
# _! [) D) y3 L2 o# h s; R4 K2 m 在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一个IO翻转函数。- v, c) y7 y4 @, w" B* U' U ! m1 W' y9 E% b6 p4 O& z- y7 r
结果演示 ! x( N; ^4 c4 ^* m$ _! P 通过手机和STM32WB建立连接和断开连接可以查看到IO扣电平变化。 0 s3 z V; r+ X$ _' y) f
: r9 ~3 O* X! y J! p 转载自: 记帖如有侵权请联系删除5 v) ~4 D+ l2 ^+ z* S; g / {9 p; K+ D7 M1 K $ Y. A. W F" R9 a' g2 A |
低功耗蓝牙无线升级:STM32WB OTA 固件更新技术解析
STM32WB Zigbee 自定义集群开发实战:AN5491 应用笔记深度解读
吃透:STM32WB 上 Zigbee 睡眠终端设备开发攻略
STM32 无线 MCU HSE 频率与启动时间精确调谐实战指南
深度解读:STM32WB 2.4GHz 低成本 PCB 蛇形天线设计实战指南
经验分享 | STM32WB 双核无线 MCU 开发全流程实战指南
STM32WB 基于 Custom Template 实现 BLE 私有协议 实操开发指南
详解STM32单片机的堆栈
STM32单片机进行除零运算,为何程序不崩溃?
从照明到楼宇:STM32WBx5 BLE Mesh 落地指南
微信公众号
手机版