0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32WB55RG开发(5)----监测STM32WB连接状态

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2024-12-16 16:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

STM32WB系列微控制器代表了STMicroelectronics在无线技术领域的新一代创新,集成了Bluetooth 5.0、Zigbee和Thread等多种无线通信协议。而在这些无线应用中,监测和管理连接状态显得尤为关键。确保可靠连接不仅对于数据的实时传输至关重要,而且在面对低功耗需求、设备管理和故障诊断时,都有着不可或缺的作用。

本文将深入探讨STM32WB的连接状态监测机制。首先会讨论为什么需要监测连接状态,然后介绍STM32WB提供的相关工具和技术。随后,会详细解释如何使用这些工具来实时跟踪和管理连接状态,以及如何解读和响应不同的连接状态事件。通过这些内容,能够更好地理解和利用STM32WB的无线连接功能,为其应用带来更高的可靠性和效率。

最近在弄ST的教程,需要样片的可以加群申请:615061293/925643491 。

硬件准备

首先需要准备一个开发板,这里我准备的是自己绘制的开发板,需要的可以进行申请。 主控为STM32WB55RGV6

视频教学

[https://www.bilibili.com/video/BV1ENmpYREfu/]

样品申请

[https://www.wjx.top/vm/OhcKxJk.aspx#]

源码下载

[https://download.csdn.net/download/qq_24312945/90044072]

参考程序

[https://github.com/CoreMaker-lab/STM32WB55_SENSOR]

[https://gitee.com/CoreMaker/STM32WB55_SENSOR]

选择芯片型号

配置时钟

HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:

配置时钟树

RTC时钟配置

RF wakeup时钟配置

查看开启STM32_WPAN条件

可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。

配置HSEM

硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。

资料下载链接:https://www.stmcu.jp/wp/wp-content/uploads/files/presentation-ja/STM32WB/17_STM32WB-System-Hardware-Semaphore-(HSEM)_J.pdf

开启HSEM如下。

配置IPCC

通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。

资料下载链接:https://www.st.com/content/ccc/resource/training/technical/product_training/group0/d3/17/dc/8a/bf/ef/4f/10/STM32WB-System-Inter-Processor-communication-controller-IPCC/files/STM32WB-System-Inter-Processor-communication-controller-IPCC.pdf/jcr:content/translations/en.STM32WB-System-Inter-Processor-communication-controller-IPCC.pdf

开启如下所示。

配置RTC

启动RF

开启蓝牙

配置为自定义模板。

命名设备名,输入myDevice

配置BLE GATT,输入mySVC

配置mySVC,输入myCharWrite

LED配置

查看原理图,对应LED分别为PB0,PB1,PB5。

配置如下所示。

设置工程信息

工程文件设置

参考文档

下图展示了 BLE 协议栈中的事件回调函数 以及这些事件的作用和触发位置,特别是在处理 BLE 应用中的 ACI 事件时,用户可以选择两种不同的方法来处理事件:

使用“switch case”事件处理程序
使用事件回调框架
图中列出了几个主要事件回调:
● hci_disconnection_complete_event():连接结束事件,适用于 GAP 中的中央设备或外设。
● hci_le_connection_complete_event():建立连接完成事件,表示两个设备之间的连接成功建立,适用于 GAP 中的中央设备或外设。
● aci_gatt_attribute_modified_event():当 GATT 客户端修改了服务器端的某个属性时,服务器端会触发该事件,适用于 GATT 的服务器端。
● aci_gatt_notification_event():当 GATT 服务器端发送通知给客户端时,在客户端生成该事件,适用于 GATT 的客户端。
● aci_gatt_indication_event():当 GATT 服务器端向客户端发送指示(Indication)时,在客户端生成该事件,适用于 GATT 客户端。
● aci_gap_pass_key_req_event():在配对过程中需要提供密钥时触发,安全管理器应用层应在接收到事件后调用 aci_gap_pass_key_resp() 进行密钥的反馈,适用于 GAP 中的中央设备或外设。
● aci_gap_pairing_complete_event():配对过程成功或失败后触发,适用于 GAP 中的中央设备或外设。
● aci_gap_bond_lost_event():当设备的绑定关系丢失时触发,通常是由于远端设备删除了绑定信息。应用层在接收到该事件后,可以调用 aci_gap_allow_rebond() 以允许设备重新绑定,适用于 GAP 外设。
● aci_att_read_by_group_type_resp_event():当客户端请求读取组类型时,返回包含符合读取条件的属性句柄和类型的响应,适用于 GATT 客户端。
● aci_att_read_by_type_resp_event():当客户端请求读取指定类型的属性时,返回包含符合读取条件的属性值和类型的响应,适用于 GATT 客户端。
● aci_gatt_proc_complete_event():表示 GATT 流程已完成,适用于 GATT 客户端。
● hci_le_advertising_report_event():在扫描过程中发现设备时触发,报告扫描到的设备信息,适用于 GAP 中的中央设备。

这些事件为 BLE 应用中的配对、绑定、安全管理和 GATT 操作提供了重要的反馈机制。开发者可以通过这些事件在应用层实现相应的业务逻辑。

SVCCTL_App_Notification

SVCCTL_App_Notification函数是一个蓝牙事件处理器,用于响应和处理STM32WB BLE堆栈中发生的各种事件。
该代码实现了一个 BLE 事件回调函数 SVCCTL_App_Notification,用于处理 STM32WB BLE 应用中的各种 BLE 事件。主要逻辑分为以下几个部分:

断开连接事件 (HCI_DISCONNECTION_COMPLETE_EVT_CODE):
○ 当连接断开时触发该事件。
连接事件 (HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE):
○ 当 BLE 连接成功建立时触发该事件。
连接更新事件 (HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE):
○ 当连接参数更新完成时触发,打印更新后的连接参数。
厂商特定事件 (HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE):
○ 处理各种 GAP 和 GATT 相关的自定义事件:
■ 按键通知 (ACI_GAP_KEYPRESS_NOTIFICATION_VSEVT_CODE)
■ 密码请求 (ACI_GAP_PASS_KEY_REQ_VSEVT_CODE):当需要密码时,通过调用 aci_gap_pass_key_resp 提供固定的 PIN。
■ 数字比较 (ACI_GAP_NUMERIC_COMPARISON_VALUE_VSEVT_CODE):进行数字比较并确认。
■ 配对完成 (ACI_GAP_PAIRING_COMPLETE_VSEVT_CODE):检查配对状态并打印结果。
■ GATT 指示 (ACI_GATT_INDICATION_VSEVT_CODE):当服务器发送指示时,确认接收。
在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一个LED控制函数。

/* USER CODE BEGIN HCI_EVT_LE_CONN_COMPLETE */
            HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);
            HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET);
          /* USER CODE END HCI_EVT_LE_CONN_COMPLETE */

在HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE中添加一个LED控制函数。

/* USER CODE BEGIN HCI_EVT_LE_CONN_COMPLETE */
                    HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);
                    HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET);
          /* USER CODE END HCI_EVT_LE_CONN_COMPLETE */

在主程序中添加LED初始化程序。

/* USER CODE BEGIN 2 */
    HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);
    HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET);
  /* USER CODE END 2 */

结果演示

通过手机和STM32WB建立连接和断开连接可以查看到LED电平变化。

连接上LED1亮灯,LED2灭灯。

断开蓝牙链接。

连接上LED1灭灯,LED2亮灯。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    49

    文章

    8830

    浏览量

    165578
  • 蓝牙
    +关注

    关注

    119

    文章

    6381

    浏览量

    179250
  • STM32
    +关注

    关注

    2312

    文章

    11189

    浏览量

    374514
  • BLE
    BLE
    +关注

    关注

    13

    文章

    801

    浏览量

    66554
  • STM32WB55
    +关注

    关注

    0

    文章

    26

    浏览量

    2215
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AN5289 使用 STM32WB 系列微控制器构建射频应用笔记

    本文档一步一步地指导设计人员基于 STM32WB 系列微控制器构建特定 Bluetooth低功耗或802.15.4 应用。它汇集了最重要的信息,并且列出了需要处理的方面。为了充分利用本文档中的信息
    发表于 01-09 14:13 0次下载

    LAT1215+如何让 STM32WB 在没有 LSE 时运行 BLE 应用程序

    首先 LSE 可作为 STM32WB RF Wakeup 和 RTC 的时钟源。STM32WB RF Wakeup 和 RTC 的时钟源可配置为 LSE,LSE 时钟相对比较稳定且准确,不需要校准
    发表于 01-09 10:55 0次下载

    STM32WB 系列微控制器 OTA 和无线固件更新应用笔记

    本文档介绍了通过低功耗蓝牙连接STM32WB 设备上进行 OTA 固件更新的过程。它讲解如何使用 STM32Cube 固件包中提供的 OTA 应用程序,实现用户应用程序、无线固件和固件升级服务的更新。
    发表于 01-08 14:50 0次下载

    MLPF-WB55-01E3:2.4 GHz低通滤波器的卓越之选

    STM32WB55Cx/Rx、STM32WB50Cx、STM32WB35Cx和STM32WB30Cx系列微控制器设计的2.4 GHz低通滤波器。它集成了阻抗匹配网络和谐波滤波器,旨在最
    的头像 发表于 12-31 17:20 2034次阅读

    MLPF - WB55 - 01E3:2.4 GHz低通滤波器的深度解析

    的是STMicroelectronics推出的一款2.4 GHz低通滤波器——MLPF - WB55 - 01E3,它专为匹配STM32WB系列微控制器而设计,具有诸多出色特性。 文件下载: MLPF-WB55-01E3.pdf
    的头像 发表于 12-17 17:35 794次阅读

    MLPF-WB-02D3低通滤波器技术解析与应用指南

    STM32WB5x和STM32WB1x的射频性能。该器件在非导电玻璃衬底上采用STMicroelectronics IPD技术,优化了射频性能。
    的头像 发表于 10-27 15:21 692次阅读
    MLPF-<b class='flag-5'>WB</b>-02D3低通滤波器技术解析与应用指南

    STM32WB1MMC蓝牙低功耗模块技术解析与应用设计

    微控制器,具有出色的接收器灵敏度和高输出功率信号,因此可提供同类最佳的射频性能。其低功耗特性可延长电池寿命、小纽扣电池或能量采集。STMicroelectronics STM32WB1MMC无需射频专业知识,是加快应用开发和降低相关成本的理想方法。该模块完全免协议堆栈版税
    的头像 发表于 10-25 16:20 1734次阅读
    <b class='flag-5'>STM32WB</b>1MMC蓝牙低功耗模块技术解析与应用设计

    ‌MLPF-WB-04D3 低通滤波器技术解析与应用指南

    STMicroelectronics MLPF-WB-04D3 2.4GHz低通滤波器集成有阻抗匹配网络和谐波滤波器,可增强STM32WBA52的射频性能。 STMicroelectronics
    的头像 发表于 10-23 14:15 780次阅读
    ‌MLPF-<b class='flag-5'>WB</b>-04D3 低通滤波器技术解析与应用指南

    STM32WB连接扩展板技术解析:从硬件架构到开发实践

    STMicroelectronics B-WB1M-WPAN1连接扩展板设有板载STM32WB1MMCH6。STMicro B-WB1M-WPAN1
    的头像 发表于 10-23 09:40 802次阅读
    <b class='flag-5'>STM32WB</b><b class='flag-5'>连接</b>扩展板技术解析:从硬件架构到<b class='flag-5'>开发</b>实践

    STM32WB09xE蓝牙低功耗MCU技术解析

    无与伦比的电池寿命。STM32WB09符合蓝牙低功耗SIG内核规范5.4版,可管理点对点连接和蓝牙网状网络,并支持可靠地建立大规模设备网络。STM32WB09还非常适合用于2.4GHz专有无线电无线通信,以满足超低延迟应用的需求
    的头像 发表于 10-20 09:29 811次阅读
    <b class='flag-5'>STM32WB</b>09xE蓝牙低功耗MCU技术解析

    STM32WB09KE评估板技术解析与应用指南

    。Arduino® Uno V3连接支持和ST morpho排针可轻松扩展STMicroelectronics STM32 Nucleo开放式开发平台的功能。这些平台配有各种专用扩展板。
    的头像 发表于 10-17 18:07 1267次阅读
    <b class='flag-5'>STM32WB</b>09KE评估板技术解析与应用指南

    STM32WB07CC开发板技术解析与应用指南

    STMicroelectronics NUCLEO-WB07CC STM32 Nucleo-64射频开发板采用基于Arm® Cortex®M0+内核的STM32WB07CC微控制器
    的头像 发表于 10-17 17:11 1534次阅读
    <b class='flag-5'>STM32WB</b>07CC<b class='flag-5'>开发</b>板技术解析与应用指南

    STM32WB5MMG模块能否支持Thread转WIFI?

    请帮忙推荐一款可以WIFI转Sub-G/Zibber协议的芯片,希望做了无线认证。非常感谢。 1.STM32WB5MMG模块能否支持Thread转WIFI; 2.Nucleo-WBA55RG(主控
    发表于 06-04 07:21

    STM32WB5MMG模块能否支持Thread转WIFI?

    请帮忙推荐一款可以WIFI转Sub-G/Zibber协议的芯片,希望做了无线认证。非常感谢。 1.STM32WB5MMG模块能否支持Thread转WIFI; 2.Nucleo-WBA55RG(主控
    发表于 04-24 06:12

    STM32WB5MMG模块能否支持Thread转WIFI?

    请帮忙推荐一款可以WIFI转Sub-G/Zibber协议的芯片,希望做了无线认证。非常感谢。 1.STM32WB5MMG模块能否支持Thread转WIFI; 2.Nucleo-WBA55RG(主控
    发表于 04-22 08:22