0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32WB55RG開(kāi)發(fā)(5)----監(jiān)測(cè)STM32WB連接狀態(tài)

嵌入式單片機(jī)MCU開(kāi)發(fā) ? 來(lái)源:嵌入式單片機(jī)MCU開(kāi)發(fā) ? 作者:嵌入式單片機(jī)MCU開(kāi) ? 2024-12-16 16:22 ? 次閱讀

概述

STM32WB系列微控制器代表了STMicroelectronics在無(wú)線(xiàn)技術(shù)領(lǐng)域的新一代創(chuàng)新,集成了Bluetooth 5.0、Zigbee和Thread等多種無(wú)線(xiàn)通信協(xié)議。而在這些無(wú)線(xiàn)應(yīng)用中,監(jiān)測(cè)和管理連接狀態(tài)顯得尤為關(guān)鍵。確??煽窟B接不僅對(duì)于數(shù)據(jù)的實(shí)時(shí)傳輸至關(guān)重要,而且在面對(duì)低功耗需求、設(shè)備管理和故障診斷時(shí),都有著不可或缺的作用。

本文將深入探討STM32WB的連接狀態(tài)監(jiān)測(cè)機(jī)制。首先會(huì)討論為什么需要監(jiān)測(cè)連接狀態(tài),然后介紹STM32WB提供的相關(guān)工具和技術(shù)。隨后,會(huì)詳細(xì)解釋如何使用這些工具來(lái)實(shí)時(shí)跟蹤和管理連接狀態(tài),以及如何解讀和響應(yīng)不同的連接狀態(tài)事件。通過(guò)這些內(nèi)容,能夠更好地理解和利用STM32WB的無(wú)線(xiàn)連接功能,為其應(yīng)用帶來(lái)更高的可靠性和效率。

最近在弄ST的教程,需要樣片的可以加群申請(qǐng):615061293/925643491 。

硬件準(zhǔn)備

首先需要準(zhǔn)備一個(gè)開(kāi)發(fā)板,這里我準(zhǔn)備的是自己繪制的開(kāi)發(fā)板,需要的可以進(jìn)行申請(qǐng)。 主控為STM32WB55RGV6

視頻教學(xué)

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

樣品申請(qǐng)

[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]

選擇芯片型號(hào)

配置時(shí)鐘

HSE與LSE分別為外部高速時(shí)鐘和低速時(shí)鐘,在本文中使用外置的時(shí)鐘源,故都選擇Crystal/Ceramic Resonator選項(xiàng),如下所示:

配置時(shí)鐘樹(shù)

RTC時(shí)鐘配置

RF wakeup時(shí)鐘配置

查看開(kāi)啟STM32_WPAN條件

可以看到,需要開(kāi)啟RF、RTC、RCC、IPCC、HSEM。

配置HSEM

硬件信號(hào)量(HSEM)模塊用于管理多個(gè)進(jìn)程之間共享的訪(fǎng)問(wèn)權(quán)限和資源同步。

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

開(kāi)啟HSEM如下。

配置IPCC

通信控制器(IPCC)模塊的主要用于cpu之間的信號(hào)消息交換。

資料下載鏈接: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

開(kāi)啟如下所示。

配置RTC

啟動(dòng)RF

開(kāi)啟藍(lán)牙

配置為自定義模板。

命名設(shè)備名,輸入myDevice

配置BLE GATT,輸入mySVC

配置mySVC,輸入myCharWrite

LED配置

查看原理圖,對(duì)應(yīng)LED分別為PB0,PB1,PB5。

配置如下所示。

設(shè)置工程信息

工程文件設(shè)置

參考文檔

下圖展示了 BLE 協(xié)議棧中的事件回調(diào)函數(shù) 以及這些事件的作用和觸發(fā)位置,特別是在處理 BLE 應(yīng)用中的 ACI 事件時(shí),用戶(hù)可以選擇兩種不同的方法來(lái)處理事件:

使用“switch case”事件處理程序
使用事件回調(diào)框架
圖中列出了幾個(gè)主要事件回調(diào):
● hci_disconnection_complete_event():連接結(jié)束事件,適用于 GAP 中的中央設(shè)備或外設(shè)。
● hci_le_connection_complete_event():建立連接完成事件,表示兩個(gè)設(shè)備之間的連接成功建立,適用于 GAP 中的中央設(shè)備或外設(shè)。
● aci_gatt_attribute_modified_event():當(dāng) GATT 客戶(hù)端修改了服務(wù)器端的某個(gè)屬性時(shí),服務(wù)器端會(huì)觸發(fā)該事件,適用于 GATT 的服務(wù)器端。
● aci_gatt_notification_event():當(dāng) GATT 服務(wù)器端發(fā)送通知給客戶(hù)端時(shí),在客戶(hù)端生成該事件,適用于 GATT 的客戶(hù)端。
● aci_gatt_indication_event():當(dāng) GATT 服務(wù)器端向客戶(hù)端發(fā)送指示(Indication)時(shí),在客戶(hù)端生成該事件,適用于 GATT 客戶(hù)端。
● aci_gap_pass_key_req_event():在配對(duì)過(guò)程中需要提供密鑰時(shí)觸發(fā),安全管理器應(yīng)用層應(yīng)在接收到事件后調(diào)用 aci_gap_pass_key_resp() 進(jìn)行密鑰的反饋,適用于 GAP 中的中央設(shè)備或外設(shè)。
● aci_gap_pairing_complete_event():配對(duì)過(guò)程成功或失敗后觸發(fā),適用于 GAP 中的中央設(shè)備或外設(shè)。
● aci_gap_bond_lost_event():當(dāng)設(shè)備的綁定關(guān)系丟失時(shí)觸發(fā),通常是由于遠(yuǎn)端設(shè)備刪除了綁定信息。應(yīng)用層在接收到該事件后,可以調(diào)用 aci_gap_allow_rebond() 以允許設(shè)備重新綁定,適用于 GAP 外設(shè)。
● aci_att_read_by_group_type_resp_event():當(dāng)客戶(hù)端請(qǐng)求讀取組類(lèi)型時(shí),返回包含符合讀取條件的屬性句柄和類(lèi)型的響應(yīng),適用于 GATT 客戶(hù)端。
● aci_att_read_by_type_resp_event():當(dāng)客戶(hù)端請(qǐng)求讀取指定類(lèi)型的屬性時(shí),返回包含符合讀取條件的屬性值和類(lèi)型的響應(yīng),適用于 GATT 客戶(hù)端。
● aci_gatt_proc_complete_event():表示 GATT 流程已完成,適用于 GATT 客戶(hù)端。
● hci_le_advertising_report_event():在掃描過(guò)程中發(fā)現(xiàn)設(shè)備時(shí)觸發(fā),報(bào)告掃描到的設(shè)備信息,適用于 GAP 中的中央設(shè)備。

這些事件為 BLE 應(yīng)用中的配對(duì)、綁定、安全管理和 GATT 操作提供了重要的反饋機(jī)制。開(kāi)發(fā)者可以通過(guò)這些事件在應(yīng)用層實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)邏輯。

SVCCTL_App_Notification

SVCCTL_App_Notification函數(shù)是一個(gè)藍(lán)牙事件處理器,用于響應(yīng)和處理STM32WB BLE堆棧中發(fā)生的各種事件。
該代碼實(shí)現(xiàn)了一個(gè) BLE 事件回調(diào)函數(shù) SVCCTL_App_Notification,用于處理 STM32WB BLE 應(yīng)用中的各種 BLE 事件。主要邏輯分為以下幾個(gè)部分:

斷開(kāi)連接事件 (HCI_DISCONNECTION_COMPLETE_EVT_CODE):
○ 當(dāng)連接斷開(kāi)時(shí)觸發(fā)該事件。
連接事件 (HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE):
○ 當(dāng) BLE 連接成功建立時(shí)觸發(fā)該事件。
連接更新事件 (HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE):
○ 當(dāng)連接參數(shù)更新完成時(shí)觸發(fā),打印更新后的連接參數(shù)。
廠(chǎng)商特定事件 (HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE):
○ 處理各種 GAP 和 GATT 相關(guān)的自定義事件:
■ 按鍵通知 (ACI_GAP_KEYPRESS_NOTIFICATION_VSEVT_CODE)
■ 密碼請(qǐng)求 (ACI_GAP_PASS_KEY_REQ_VSEVT_CODE):當(dāng)需要密碼時(shí),通過(guò)調(diào)用 aci_gap_pass_key_resp 提供固定的 PIN。
■ 數(shù)字比較 (ACI_GAP_NUMERIC_COMPARISON_VALUE_VSEVT_CODE):進(jìn)行數(shù)字比較并確認(rèn)。
■ 配對(duì)完成 (ACI_GAP_PAIRING_COMPLETE_VSEVT_CODE):檢查配對(duì)狀態(tài)并打印結(jié)果。
■ GATT 指示 (ACI_GATT_INDICATION_VSEVT_CODE):當(dāng)服務(wù)器發(fā)送指示時(shí),確認(rèn)接收。
在HCI_DISCONNECTION_COMPLETE_EVT_CODE中添加一個(gè)LED控制函數(shù)。

/* 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中添加一個(gè)LED控制函數(shù)。

/* 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 */

結(jié)果演示

通過(guò)手機(jī)和STM32WB建立連接和斷開(kāi)連接可以查看到LED電平變化。

連接上LED1亮燈,LED2滅燈。

斷開(kāi)藍(lán)牙鏈接。

連接上LED1滅燈,LED2亮燈。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7551

    瀏覽量

    151403
  • 藍(lán)牙
    +關(guān)注

    關(guān)注

    114

    文章

    5821

    瀏覽量

    170287
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    355923
  • BLE
    BLE
    +關(guān)注

    關(guān)注

    12

    文章

    660

    瀏覽量

    59405
  • STM32WB55
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    1324
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32WB55RG開(kāi)發(fā)(3)----生成 BLE 程序連接手機(jī)APP

    本項(xiàng)目旨在利用 STM32WB55 微控制器的藍(lán)牙低功耗(BLE)功能,實(shí)現(xiàn)與手機(jī) APP 的無(wú)線(xiàn)連接。通過(guò)配置時(shí)鐘源、啟動(dòng)關(guān)鍵模塊(如 RCC、RTC、RF、IPCC 和 HSEM),以及啟用藍(lán)牙功能,用戶(hù)可以創(chuàng)建一個(gè)穩(wěn)定的 BLE
    的頭像 發(fā)表于 12-16 16:06 ?171次閱讀
    <b class='flag-5'>STM32WB55RG</b><b class='flag-5'>開(kāi)發(fā)</b>(3)----生成 BLE 程序<b class='flag-5'>連接</b>手機(jī)APP

    STM32WB55RG開(kāi)發(fā)(2)----STM32CubeProgrammer燒錄

    STM32CubeProgrammer (STM32CubeProg) 是一款用于編程STM32產(chǎn)品的全功能多操作系統(tǒng)軟件工具。 它提供了一個(gè)易用高效的環(huán)境,通過(guò)調(diào)試接口(JTAG和SWD)和自舉
    的頭像 發(fā)表于 12-16 15:52 ?190次閱讀
    <b class='flag-5'>STM32WB55RG</b><b class='flag-5'>開(kāi)發(fā)</b>(2)----<b class='flag-5'>STM32</b>CubeProgrammer燒錄

    STM32WB55RG開(kāi)發(fā)(1)----開(kāi)發(fā)板測(cè)試

    STM32WB55 & SENSOR是一款基于STM32WB55系列微控制器的評(píng)估套件。該套件采用先進(jìn)的無(wú)線(xiàn)通信技術(shù),支持Bluetooth? 5.3規(guī)范、IEEE
    的頭像 發(fā)表于 12-16 15:39 ?472次閱讀
    <b class='flag-5'>STM32WB55RG</b><b class='flag-5'>開(kāi)發(fā)</b>(1)----<b class='flag-5'>開(kāi)發(fā)</b>板測(cè)試

    stm32WB有可以驅(qū)動(dòng)聲卡的驅(qū)動(dòng)程序嗎?

    聲卡是PCM2704,使用的開(kāi)發(fā)板是STM32WB55RG,想實(shí)現(xiàn)如下過(guò)程: PCM2704聲卡將開(kāi)發(fā)板上USB傳出的PCM格式的音頻轉(zhuǎn)為模擬信號(hào),通過(guò)PAM8406功率放大器將該信號(hào)放大后接喇叭
    發(fā)表于 05-27 07:15

    請(qǐng)問(wèn)STM32WB55RG怎么配置GPIO輸入模式?

    在CubeMX中配置STM32WB55的GPIO輸入模式時(shí),在下拉選擇中為何沒(méi)有輸入模式選擇?
    發(fā)表于 05-23 07:58

    STM32WBSTM32L4/L4+的區(qū)別和優(yōu)劣勢(shì)是什么?

    STM32WBSTM32L4 / L4+的區(qū)別,和優(yōu)劣勢(shì)
    發(fā)表于 04-26 08:07

    STM32WB thread啟動(dòng)錯(cuò)誤是什么原因?qū)е碌模?/a>

    STM32Cube_FW_WB_V1.3.0ProjectsP-NUCLEO-WB55.NucleoApplicationsBLE_ThreadBle_Thread_Static 硬件環(huán)境:STM32WB nucleo 使用SW2切換協(xié)議為thread , 顯示失敗
    發(fā)表于 04-16 08:01

    P-NUCLEO-WB55.USBDongle開(kāi)發(fā)板升級(jí)FUS和無(wú)線(xiàn)協(xié)議棧失敗的原因?

    按照官網(wǎng)提供的下面步驟 升級(jí)P-NUCLEO-WB55.USBDongle單板的FUS和無(wú)線(xiàn)協(xié)議棧后,單板在sw2 to boot0下,stm32cubeprogrammer選擇usb模式無(wú)法再識(shí)別
    發(fā)表于 04-16 06:59

    STM32WB能否連接藍(lán)牙耳機(jī)?如果可以支持什么格式?

    STM32WB能否連接藍(lán)牙耳機(jī)?如果可以支持什么格式?如果能得到回答將非常感謝!
    發(fā)表于 03-27 07:11

    項(xiàng)目開(kāi)發(fā)時(shí)能不能同時(shí)用兩塊芯片,比如一塊stm32WB一塊stm32F4?

    請(qǐng)問(wèn)項(xiàng)目開(kāi)發(fā)時(shí)能不能同時(shí)用兩塊芯片,比如一塊stm32WB,一塊stm32F4?
    發(fā)表于 03-20 08:22

    STM32WB配置SMPS模塊具體步驟是什么?

    想要降低STM32WB的功耗,查找手冊(cè)發(fā)現(xiàn)開(kāi)啟SMPS模塊可以降低功耗。配置SMPS模塊具體步驟是什么有大佬知道嗎?是開(kāi)啟SMPS宏定義,然后寫(xiě)PWR的寄存器就可以了嗎?怎么證明自己的SMPS模塊-配置正確了呢?
    發(fā)表于 03-20 08:18

    STM32U5,STM32WBSTM32L4開(kāi)發(fā)板,哪個(gè)開(kāi)發(fā)板擁有較多數(shù)量的ADC?

    請(qǐng)問(wèn),我現(xiàn)在需要開(kāi)發(fā)一個(gè)項(xiàng)目,在這個(gè)項(xiàng)目中需要使用較多數(shù)量的傳感器(至少8個(gè)),這些傳感器需要進(jìn)行信號(hào)采集,現(xiàn)在在使用STM32U5,STM32WBSTM32L4芯片的
    發(fā)表于 03-20 08:01

    STM32WB55RG使用USB ST-LINK連接電腦顯示未知USB設(shè)備,更新驅(qū)動(dòng)后也沒(méi)有變化是什么原因?

    STM32WB55RG使用USB ST-LINK連接電腦顯示未知USB設(shè)備,更新驅(qū)動(dòng)后也沒(méi)有變化,這大概是哪里的問(wèn)題?
    發(fā)表于 03-15 07:07

    請(qǐng)問(wèn)STM32WB55怎么配置藍(lán)牙到低功耗廣播狀態(tài)?

    使用STM32WB55RGV6作為主控設(shè)計(jì)了一款智能鎖應(yīng)用,請(qǐng)問(wèn)怎么配置藍(lán)牙到低功耗廣播狀態(tài)?目前根據(jù)例程,藍(lán)牙運(yùn)行期間cpu1進(jìn)入stop2之后仍有4mA左右的電流,如何配置可以達(dá)到更低的功耗?或者臨時(shí)關(guān)閉藍(lán)牙之后再根據(jù)需要重新打開(kāi)?
    發(fā)表于 03-15 07:00

    STM32WB55RG是否可以使用j-flash通過(guò)j-link燒錄協(xié)議棧和FUS bin文件?

    硬件基于STM32WB55RG是否可以使用j-flash通過(guò)j-link燒錄協(xié)議棧和FUS bin文件?
    發(fā)表于 03-12 07:14