色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

應用筆記 | STM32WB基于Custom Template實現(xiàn)客戶定制BLE私有協(xié)議

STM32單片機 ? 來源:未知 ? 2023-10-08 17:40 ? 次閱讀


關鍵字:STM32WB,BLE私有協(xié)議,定制



目錄預覽


1.引言

2.STM32CubeMx 實現(xiàn)步驟

3.測試平臺搭建及功能測試

4.小結(jié)



01

引言


STM32WB55是一款支持BLE5.x的雙核高性能MCU,針對BLE的應用固件包STM32Cube_FW_WB_V1.xx.xxProjectsP-NUCLEO-WB55.NucleoApplicationsBLE里面也提供了大量的例程,目前支持的標準GAP服務例程在STM32CubeMX中已有列出,或可以在固件包STM32Cube_FW_WB_V1.xx.xx MiddlewareSTSTM32_WPANlesvc中找到。然而,在實際的STM32WB意向客戶中,使用BLE私有協(xié)議來開發(fā)Profile非標產(chǎn)品的客戶占了絕大部分。讀者可以去查看BLE_p2pServer、BLE_Custom等例程,對于需要添加自定義ATT屬性和服務的應用,現(xiàn)有例程里面STM32CubeMX是無法自定義添加ATT屬性和服務。但筆者發(fā)現(xiàn),其實使用STM32CubeMX的Custom Template是能實現(xiàn)上述功能的。


本文的目的旨在使用STM32CubeMX以及Custom Template例程基于STM32WB55-Nucleo實現(xiàn)基于BLE私有協(xié)議的通用通信框架,使客戶快速上手進行產(chǎn)品開發(fā),且可以直接應用在產(chǎn)品上,應用框架的設計如下圖所示。另外,本文還對BLE協(xié)議棧的下載和升級注意事項做了詳細指導,如果讀者不熟悉這些內(nèi)容,可以先行閱讀。



如上圖所示,使用手機APP與STM32WB進行BLE私有協(xié)議通信,一共設計了4種類型的數(shù)據(jù)訪問:讀/寫、只寫、只讀、通知,這4種訪問類型基本可以覆蓋大部分數(shù)據(jù)訪問場景


02

STM32CubeMX實現(xiàn)步驟


2.1 創(chuàng)建BLE工程添加并配置外設


請在搭建工程之前,下載安裝最新的STM32CubeMX和STM32CubeWB


2.1.1 在STM32CubeMX中點擊“File”/“New Project”在彈出對話框中輸入“STM32WB55RG”創(chuàng)建一個新工程



2.1.2 工程配置如下圖所示,配置工程名字、保存路徑、選擇編譯工具、調(diào)整堆棧大小和選擇需要的STM32CubeWB的庫文件(缺省為已安裝的最新版本)。



2.1.3 系統(tǒng)配置:調(diào)試口



2.1.4 外設配置:添加外部高速晶振(HSE)和低速晶振(LSE)



2.1.5 外設配置:調(diào)試打印串口USART,手動將USART1引腳重映射到PB6/PB7



使能USART1的TX的DMA功能和USART1的全局中斷



2.1.6 外設配置:使能HESM,它完全由BLE stack管理



2.1.7 外設配置:使能RF,它完全由BLE stack管理。



2.1.8 外設配置:使能IPCC,它完全由BLE stack管理。只需同時使能它的RX/TX中斷即可。



2.1.9 外設配置:使能RTC,同時選擇WakeUp為“Internal WakeUp”和WakeUp中斷。



2.1.10 外設配置:配置時鐘



2.1.11 外設配置:NVIC的配置



至此,外設的配置和添加部分已經(jīng)完成。


2.2 BLE協(xié)議棧的添加及配置


2.2.1 協(xié)議棧配置:使能BLE協(xié)議棧



2.2.2 協(xié)議棧配置:禁止“Custom P2P Server”并使能“Custom Template”自定義GATT通用模板



2.2.3 協(xié)議棧配置:新建一個GATT服務,其名稱為“My_Data_Server"



2.2.4 協(xié)議棧配置:GATT服務基本配置



2.2.5 協(xié)議棧配置:配置GATT讀&寫 服務特征及屬性值



2.2.6 協(xié)議棧配置:配置GATT寫 服務特征及屬性值



2.2.7 協(xié)議棧配置:配置GATT讀 服務特征及屬性值



2.2.8 協(xié)議棧配置:配置GATT通知 服務特征及屬性值



2.2.9 協(xié)議棧配置:配置GATT廣播參數(shù)配置



2.2.10 協(xié)議棧配置:BLE配對參數(shù)設置



2.2.11 協(xié)議棧配置:BLE協(xié)議棧調(diào)試及打印配置(需依次序配置)



2.3 生成工程代碼并初步測試


2.3.1 點擊“GENERATE CODE”生成工程代碼



2.3.2 在生成的代碼中添加BLE Trace&Debug初始化代碼


2.3.3 在“main.c”文件中取消“MX_UART_Init(void)”的“static”屬性


2.3.4 在“app_entry.c”文件中增加“Debug”模塊的初始化代碼“APPD_Init()”。



2.3.5 下載代碼到STM32WB55-NUCLEO中運行。此時,在手機的藍牙列表中,已經(jīng)能成功地搜索添加的BLE設備。說明Debug和BLE協(xié)議棧已經(jīng)成功運行。



2.4 添加BLE Stack應用代碼


為了便于對后續(xù)添加代碼的理解,我們先將Central(手機)與STM32WB進行BLE通信的數(shù)據(jù)交互概括如下。所以需要將用戶代碼添加到Custom_STM_Event_Handler()、Custom_STM_App_Notification()中。



BLE應用代碼添加:定義用戶數(shù)據(jù)緩存。

在“custom_app.c”文件中定義4個用戶緩存區(qū)數(shù)組。



BLE事件驅(qū)動代碼添加:


在“custom_stm.c”文件中的“Custom_STM_Event_Handle r(void*Event)”中依次為WRITE_READ_DATA_BUF、WRITE_DATA_BUF、NOTIFY_DATA_BUF特征和屬性添加stack層的事件驅(qū)動代碼,以使BLE數(shù)據(jù)從stack層傳遞到app層。


添加特征1 Events:WRITE_READ_DATA_BUF(即User_Write_Read_Data[]對應的寫&讀操作句柄)請求驅(qū)動代碼。



上圖對應的代碼文本如下所示:




上圖對應的代碼文本如下圖所示:



添加特征2 Events驅(qū)動:WRITE_DATA_BUF(即User_Write_Data []對應的寫操作句柄)代碼。



上圖對應的代碼文本如下圖所示:



添加特征3 Events驅(qū)動:READ_DATA_BUF(即User_Read_Data[]對應的寫操作句柄)代碼



上圖對應的代碼文本如下圖所示:



添加特征4 Events驅(qū)動:NOTIFY_DATA_BUF(即User_Notify_Data[]對應的寫操作句柄)請求驅(qū)動已經(jīng)由STM32CubeMX自動完成了。NOTIFY_DATA_BUF不用再手動添加。



BLE應用數(shù)據(jù)代碼添加:


在“custom_app.c”文件中的Custom_STM_App_Notification(Custom_STM_App_Notification_evt_t*pNotification)”添加代碼,以將BLE數(shù)據(jù)上傳到4個User_xxx_Data[]緩沖區(qū),依次添加代碼如下。



2.5 修改BLE最大數(shù)據(jù)包傳輸長度


如果不修改,BLE單包長度最大僅為23字節(jié)


1. 在“app_conf.h”中修改BLE stack最大數(shù)據(jù)包長度(CFG_BLE_MAX_ATT_MTU)



2. 在“app_ble.c”文件SVCCTL_UserEvtFlowStatus_t_SVC CTL_App_Notification(void*pckt)中添加紅色部分代碼。



至此,所有代碼更改完成。


03

測試平臺搭建及功能測試


3.1 使用STM32CubeProgrammer BLE協(xié)議棧安裝(升級)


升級ST-LINK固件以保證與STM32CubeProgrammer驅(qū)動是匹配的



查看當前FUS版本,并將FUS升級到最新版本



如果當前FUS版本是0.5.3,F(xiàn)US固件使用“stm32wb5x_FUS_fw_for_fus_0_5_3.bin”,否則FUS固件使用“stm32wb5x_FUS_fw.bin”,強烈建議閱讀BLE協(xié)議棧及FUS升級詳細說明“STM32Cube_FW_WB_V1.13.3Projects STM32WB_Copro_Wireless_BinariesSTM32WB5xRelease_Notes.html”。



升級(安裝)BLE協(xié)議棧,根據(jù)MCU型號選擇相應的固件和下載地址



3.2 測試平臺搭建及驗證


3.2.1 在Android安卓應用市場下載安裝“BLE調(diào)試助手”



3.2.2 可發(fā)現(xiàn)設備“MY_STM32WB”,并點擊“CONNECT”后可以發(fā)現(xiàn)application特征和屬性訪問服務,如下圖所示。



3.2.3 設置BLE最大單包傳輸長度為256字節(jié),否則L2CAP層傳輸超過23字節(jié)將自動分包。



3.2.4 手機app寫數(shù)據(jù)訪問(User_Write_Read_Data[64])測試



3.2.5 手機App讀數(shù)據(jù)訪問(User_Write_Read_Data[64])測試



3.2.6 手機App寫User_Write_Data[64]測試



3.2.7 手機App讀User_Read_Data[64]測試。



3.2.8 通知數(shù)據(jù)訪問(User_Notify_Data[64])測試



至此,整個驗證和測試過程完成。


04

小結(jié)



BLE經(jīng)過多年的發(fā)展和迭代,BLE協(xié)議本身已是一個很復雜和龐大的協(xié)議族,如果希望開發(fā)自定義Service和GATT應用時,若對底層協(xié)議不熟悉的話還是較為困難的。但是由于STM32良好的生態(tài),特別是借助于我們的STM32CubeMX+STM32Cube_FW_ WB固件包,使得我們可以快速、高效地開發(fā)出各種BLE應用。



完整內(nèi)容請點擊“閱讀原文”下載原文檔。


訂閱號

關注STM32

視頻


B站賬號


原文標題:應用筆記 | STM32WB基于Custom Template實現(xiàn)客戶定制BLE私有協(xié)議

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

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

    關注

    6037

    文章

    44561

    瀏覽量

    635594
  • STM32
    +關注

    關注

    2270

    文章

    10901

    瀏覽量

    356196

原文標題:應用筆記 | STM32WB基于Custom Template實現(xiàn)客戶定制BLE私有協(xié)議

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

    STM32WB系列微控制器代表了STMicroelectronics在無線技術領域的新一代創(chuàng)新,集成了Bluetooth 5.0、Zigbee和Thread等多種無線通信協(xié)議。而在這些無線應用中
    的頭像 發(fā)表于 12-16 16:22 ?216次閱讀
    <b class='flag-5'>STM32WB</b>55RG開發(fā)(5)----監(jiān)測<b class='flag-5'>STM32WB</b>連接狀態(tài)

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

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

    stm32wb55使用Ble協(xié)議棧,進入stop模式后,運行一段時間后出現(xiàn)死機,為什么?

    stm32wb55使用Ble協(xié)議棧, 進入stop模式后,電流由7ma降低到50ua, 在50ua的stop模式運行一段時間(幾天的時間),出現(xiàn)死機。死機時發(fā)現(xiàn)電流變?yōu)?.8ma。如果機器不進
    發(fā)表于 05-24 07:56

    芯海通用 MCU 應用筆記 :CS32F103 系列 MCU IAP 升級指南

    本應用筆記旨在幫助指導用戶針對芯海 CORTEX-M3 MCU CS32F103 系列單片機 IAP 應用的快速開發(fā)。本應用筆記實現(xiàn)了 CAN 和 USART 兩種接口方式來開發(fā) IAP 應用,協(xié)議
    發(fā)表于 05-16 11:40

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

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

    Microchip TCP/IP 協(xié)議棧應用筆記

    電子發(fā)燒友網(wǎng)站提供《Microchip TCP/IP 協(xié)議棧應用筆記.pdf》資料免費下載
    發(fā)表于 04-17 14:16 ?1次下載

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

    STM32Cube_FW_WB_V1.3.0ProjectsP-NUCLEO-WB55.NucleoApplicationsBLE_ThreadBle_Thread_Static 硬件環(huán)境:STM32WB nucleo 使用SW2切換
    發(fā)表于 04-16 08:01

    P-NUCLEO-WB55.USBDongle開發(fā)板升級FUS和無線協(xié)議棧失敗的原因?

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

    STM32WB能否連接藍牙耳機?如果可以支持什么格式?

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

    項目開發(fā)時能不能同時用兩塊芯片,比如一塊stm32WB一塊stm32F4?

    請問項目開發(fā)時能不能同時用兩塊芯片,比如一塊stm32WB,一塊stm32F4?
    發(fā)表于 03-20 08:22

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

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

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

    請問,我現(xiàn)在需要開發(fā)一個項目,在這個項目中需要使用較多數(shù)量的傳感器(至少8個),這些傳感器需要進行信號采集,現(xiàn)在在使用STM32U5,STM32WBSTM32L4芯片的開發(fā)板中,哪些開發(fā)板擁有較多數(shù)量的ADC?
    發(fā)表于 03-20 08:01

    STM32WB55進入Stop2模式死機的原因?怎么解決?

    使用STM32WB55VGY開發(fā)應用,使用Ble協(xié)議棧,每4ms由外置ADC產(chǎn)生一次中斷,在中斷處理函數(shù)中通過SPI讀取ADC數(shù)值,每250次,在主程序中處理一次數(shù)據(jù),生成一包數(shù)據(jù)(1000字節(jié)
    發(fā)表于 03-15 06:28

    STM32WB的Zigbee終端在調(diào)用ZbStartupWait加入網(wǎng)絡時,選擇rejoin入網(wǎng)后終端會在15s后自動退網(wǎng)的原因?

    STM32WB系列的Zigbee終端在調(diào)用ZbStartupWait加入網(wǎng)絡時,選擇rejoin入網(wǎng)后,終端會在15s后,自動退網(wǎng),這個是什么原因造成的。
    發(fā)表于 03-15 06:25

    stm32wb55使用Ble協(xié)議棧進入stop模式后,長時間運行死機如何解決?

    stm32wb55 使用Ble協(xié)議棧, 進入stop模式后,電流由7ma降低到50ua, 在50ua的stop模式運行一段時間(幾天的時間),出現(xiàn)死機。死機時發(fā)現(xiàn)電流變?yōu)?.8ma。如果機器不進
    發(fā)表于 03-07 06:08
    主站蜘蛛池模板: xxxx老妇性hdbbbb| 印度老妇女bbbxxx| 老师你奶真大下面水真多| 国产精品久久久久久亚洲毛片 | 99婷婷久久精品国产一区二区| 永久免费观看视频| 亚洲欧美成人综合| 亚洲国产综合久久精品| 亚洲AV久久久噜噜噜噜| 亚洲黄色在线播放| 亚洲精品伊人久久久久| 亚洲 天堂 国产在线播放| 亚洲AV无码国产精品色午夜情| 亚洲VA天堂VA欧美VA在线| 午夜一级视频| 亚洲AV无码专区国产精品麻豆 | 成品片a免人看免费| xxx日本免费| 达达兔午夜一级毛片| 国产99久久九九免费精品无码| 囯产精品一区二区三区线| 国产 欧美 亚洲 日韩视频| 国产不卡视频在线| 国产毛片AV久久久久精品| 国产亚洲精品成人a在线| 国产真实女人一级毛片| 久久99影院| 伦理片在线线249| 欧美日韩国产在线一区二区| 人人舔人人爱| 素人约啪第五季| 亚洲精品午睡沙发系列| 在线自拍亚洲视频欧美| 999www成人免费视频| 超碰在线线公开免费视频| 岛国片免费看| 国产亚洲精品久久777777| 久久精品国产亚洲AV天美18| 免费人成视频X8X8国产更快乐 | 97免费视频在线| 成年黄网站免费大全毛片|