|
套件概述 STM32WB系列微控制器代表了STMicroelectronics在无线技术领域的新一代创新,集成了Bluetooth 5.0、Zigbee和Thread等多种无线通信协议。而在这些无线应用中,监测和管理连接状态显得尤为关键。确保可靠连接不仅对于数据的实时传输至关重要,而且在面对低功耗需求、设备管理和故障诊断时,都有着不可或缺的作用。 本文将深入探讨STM32WB的连接状态监测机制。我们首先会讨论为什么需要监测连接状态,然后介绍STM32WB提供的相关工具和技术。随后,我们会详细解释如何使用这些工具来实时跟踪和管理连接状态,以及如何解读和响应不同的连接状态事件。通过这些内容,读者将能够更好地理解和利用STM32WB的无线连接功能,为其应用带来更高的可靠性和效率。& ?( ^# c- c8 Y. Z$ k' e
, k% ] F# O, C$ ?) Q 选择芯片型号 1 J# K p; h. N& m
; `* m8 J: ]: E 配置时钟源 HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:' [) \' H$ V' R: E$ r ) W# `! W! M! x2 T7 e7 _
配置时钟树 , L, k; b1 x( |9 G8 @1 m
RTC时钟配置
RFWKP时钟配置
4 x E. f7 u+ Q ; 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
3 t! S. J. _# I4 e% t1 D# p 配置HSEM 硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。 开启HSEM如下。8 ]! n3 w7 n5 w
! \4 Q$ R# [! ]) ? 配置IPCC 3 [8 C, ` z; Z: j$ P i& x 通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。 开启如下所示。
/ e1 c" v3 h- i 配置RTC 7 i/ ~ i6 q! c/ y3 E2 c0 u
9 O+ n: i0 C! r# a 启动RF 7 s- q: q" }4 m! s& v3 d$ Q2 I
. r, h6 `* B: w) n. ] T6 k 开启蓝牙 ' L) n9 j9 ]- y* ?$ n
) E. X1 }9 _; Q! o2 H 配置为自定义模板。 ' P* y1 }4 y: e( q2 b5 q/ c8 D& M
1 l1 v G" n4 y0 J' `+ t9 H4 w 命名设备名% P4 A% u- o/ g) F \' }) m* y
7 h; E- p* l$ M R( d" S 配置BLE GATT4 Z+ m3 K% S4 q" {) R4 g& o% H
配置SVC
s* R# M- @: E( ? LED配置 ; J! \6 f. S% n& [6 Z: G 查看原理图可以得知PB0为蓝色LED,PB1为绿色LED。
! ^: B8 O5 I- f2 t 8 y9 R) v! a; O4 X' q 配置PB0、PB1为输出IO。 # }( C7 F p3 V% h4 r% l0 F. I6 S
设置工程信息 # t! u% @. {4 t
工程文件设置 % S/ Z3 Z* v! W7 K- d
SVCCTL_App_Notification 3 B2 ^ w4 T, M% ?# I. Q SVCCTL_App_Notification函数是一个蓝牙事件处理器,用于响应和处理STM32WB BLE堆栈中发生的各种事件。 事件处理的主要内容: 1.断开连接事件 (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(新的连接建立完成)。 4.厂商特定调试事件 (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
# | s- n: M* j: p" J / N7 f, u5 X+ A0 z6 W @ 在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一个IO翻转函数。 1 L. H: q1 _, F, V
( v+ Y7 l' J: X p3 n 结果演示 通过手机和STM32WB建立连接和断开连接可以查看到IO扣电平变化。
+ E4 I9 d. g( G: h$ |
转载自: 记帖如有侵权请联系删除 |2 h5 C, |4 o8 C8 r; j5 _( W 9 S0 g8 c8 H. A0 f5 ~5 V J# k 1 @* x* p0 s) [* e: m; Y6 { |
低功耗蓝牙无线升级: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 落地指南
微信公众号
手机版