![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHduAQ_ABAAHUHXdxAL4496.gif)
關(guān)鍵詞:STM32WBA,BLE,定制化
目錄預(yù)覽
1、介紹
2、使用CubeMX在STM32WBA上構(gòu)建 Bluetooth Low Energy 應(yīng)用
3、服務(wù)和特征配置
4、工具
5、NUCLEO-WBA52CG 的 CubeMX 初始化
6、驗證藍牙基本連接
7、使能串口日志追蹤
8、小結(jié)
01
介紹
STM32WBA 是 ST 最新一代的 BLE 芯片。該芯片已經(jīng)獲得 STM32CubeMX 工具的支持,用戶可使用 STM32CubeMX 的圖形化界面、快速生成具備 IO 配置、時鐘配置、外設(shè)配置、中間件使用配置、BLE 服務(wù)配置等內(nèi)容的基礎(chǔ)源碼工程。
本文檔將指導(dǎo)用戶如何使用 STM32CubeMX 軟件一步步生成基于 STM32WBA52MCU 的一個源碼工程;該工程實現(xiàn)了 BLE 外設(shè)功能、并具有定制化的 BLE 服務(wù)。使用STM32WBA 系列其他芯片也可以參考此文檔的步驟構(gòu)建對應(yīng)的基礎(chǔ)源碼工程。
02
使用CubeMX在STM32WBA上構(gòu)建 Bluetooth Low Energy 應(yīng)用
將 STM32CubeMX 生成的源碼工程進行簡單修改后,便可運行在 STM32WBA Nucleo 板上、實現(xiàn) BLE 外設(shè)功能。
BLE 外設(shè)充當(dāng) GATT 服務(wù)器角色,手機 APP(ST BLE ToolBox)充當(dāng) GATT 客戶端角色,他們之間可以進行數(shù)據(jù)收發(fā)。
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHduAe5qIAACjlP0AHoY888.jpg)
圖1.通信示意圖
03
服務(wù)和特征配置
該 GATT 服務(wù)器公開了一個定制化的服務(wù)(SerialPortService)并包含三個特征:
特征 1 具有 Notify 屬性,可發(fā)送數(shù)據(jù)給手機
特征 2 具有 Write without response 屬性,可接收手機的數(shù)據(jù)
特征 3 具有 Read 屬性,可接受手機的讀請求并發(fā)送響應(yīng)數(shù)據(jù)包
服務(wù)器的服務(wù)和特征配置列舉如下 :
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHduAcUPpAAC1nCV_ikQ841.jpg)
表1. 服務(wù)和特征配置
04
工具
4.1. 軟件工具
要制作和使用這個項目,完成應(yīng)用程序所需的軟件工具是:
? STM32CubeMX 軟件 (v6.8.0 以上)
? STM32CubeWBA MCU Package (v1.0.0 以上)
? IDE: STM32CubeIDE or IAR
? 串口終端 (TeraTerm)
? 手機應(yīng)用程序 STBLEToolbox
4.2. 硬件工具
還需要一個 STM32WBA Nucleo 板和一個 micro-B 到 Type-A USB 電纜。
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHduAMiOeAABPkWwE_VI626.jpg)
圖2.硬件工具
05
NUCLEO-WBA52CG 的 CubeMX 初始化
5.1. CubeMX 初始化
打開 CubeMX 軟件及 MCU 選擇器,打開的過程可能會進行數(shù)據(jù)庫更新,耐心等待更新完成即可。另外,確保 CubeMX 是 6.8.0 以上版本,否則將找不到 STM32WBA 系列芯片。
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHduANGYXAAC8wTYtlf0599.jpg)
圖3.芯片開始一個工程配置
進入 MCU 選擇器頁面后,按照下圖的步驟選中我們需要的開發(fā)板。
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHdyAc47bAADaURgvnLM127.jpg)
圖4.選擇對應(yīng)的芯片型號
選擇系列分類
選擇 STM32WBA 系列
選擇對應(yīng)的 STM32WBA 芯片型號
選擇 Start Project
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHdyAMnuWAADxlh9vrbI556.jpg)
圖5. 根據(jù)應(yīng)用需求選擇是否使能 TrustZone
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHdyAPfGtAAEBRHPkIdU272.jpg)
圖6. 切換到“Project Manager”頁,命名工程和選擇工程保存路徑和設(shè)置堆棧
用戶可以根據(jù)自己的應(yīng)用需求對工程名稱路徑,IDE 類型以及堆和棧等進行設(shè)置,上圖給了一個參考示例。配置完成后,選中 File > Save Project 以保存工程配置(保存為.ioc 文件)。
5.2. 基本外設(shè)的配置
5.2.1. 切換到配置 SW 調(diào)試口
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHdyAFqwFAADE01Rf0Fo413.jpg)
圖7. 配置 SW 調(diào)試口
5.2.2. 配置基本 RCC
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHdyAQ92aAADy7hvFzrY853.jpg)
圖8. 配置 RCC
5.3. STM32_WPAN BLE 依賴的外設(shè)的配置
STM32WBA 的 STM32_WPAN(BLE)的依賴項比較多。在配置的時候,我們無需死記需要配置的項目,可以將鼠標(biāo)移到 STM32_WPAN 模塊中,停留 2 秒鐘,則會出現(xiàn)提示信息,用戶可根據(jù)這些提示信息來依次配置 STM32_WPAN BLE 需要的模塊。
STM32_WPAN BLE 模塊依賴的模塊包括:ADC、CRC、RAMCFG、ICACHE、RNG、RF、和 RTC。當(dāng)用戶完成一個模塊的配置后,鼠標(biāo)光標(biāo)回到 WPAN 模塊時,提示信息會繼續(xù)指導(dǎo)用戶仍然需要配置的模塊,直到全部模塊配置完畢。
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHdyAeTpcAAFF6YnlBl8653.jpg)
圖9. 根據(jù)提示信息來依次配置 STM32_WPAN
5.3.1. 配置 ADC
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd2ASDJlAAE7h1g4b0s295.jpg)
圖10. 配置 ADC
5.3.2. 配置 CRC
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd2AW7bZAAFSDV_ZVG8761.jpg)
圖11. 根據(jù)提示配置下一個模塊(CRC)
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd2AA9ktAAEWue1lZp4048.jpg)
圖12. 配置 CRC
5.3.3. 配置 RAMCFG
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd2ALzaZAAEL9_SbDA4743.jpg)
圖13. 配置 RAM
5.3.4. 配置 ICACHE
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd2AQ6JiAADPoq47yfU283.jpg)
圖14. 配置 ICACHE
5.3.5. 配置 RNG
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd6ATw3IAADokm5oaqk556.jpg)
圖15. 配置 RNG
5.3.6. 配置 RF
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd6AUPi7AADPdqxAtEM416.jpg)
圖16. 配置 RF
5.3.7. 配置 RTC
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd6AD-bQAAEDobTl6h4110.jpg)
圖17. 配置 RTC 部分 1
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd6AKMRoAAEcQoqeNSM720.jpg)
圖18. 配置 RTC 部分 2
5.3.8. 配置 STM32_WPAN
當(dāng) WPAN 依賴的模塊全部配置完畢,我們便可以開始 WPAN 的配置:
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd6AVkW_AADKgYmpUDw872.jpg)
圖19. 配置 STM32_WPAN
5.4. BLE GAP 和 GATT 配置
5.4.1. 配置 GAP
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd-AXCLAAAEiBCjCWoQ990.jpg)
圖20. 配置廣播數(shù)據(jù)
5.4.2. 配置 GATT 服務(wù)
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd-ATwH0AADlR879qbQ646.jpg)
圖21. 配置 GATT(添加服務(wù))
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd-AGEjRAAEeHaTZpfY819.jpg)
圖22. 配置 GATT(對服務(wù)進行定制化配置)
5.4.3. 配置自定義服務(wù)的特征 1(上報數(shù)據(jù)特征)
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd-AGEQRAAFRgX499AY598.jpg)
圖23. 配置上報數(shù)據(jù)特征
5.4.4. 配置自定義服務(wù)的特征 2(寫數(shù)據(jù)特征)
![](https://file1.elecfans.com//web2/M00/B3/AD/wKgZomVoHd-AEONGAAGMfheZZrM080.jpg)
圖24. 配置寫數(shù)據(jù)特征
5.4.5. 配置自定義服務(wù)的特征 3(讀數(shù)據(jù)特征)
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHd-ADhTtAAF_QOS9WF8703.jpg)
圖25. 配置讀數(shù)據(jù)特征
5.5. 其他配置與代碼生成
5.5.1. 進入“Clock Configuration”頁面,按下圖進行時鐘配置
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeCAFk2tAAEboII6mD0337.jpg)
圖26. 配置時鐘
5.5.2. 配置初始化函數(shù)
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeCAE99wAADhTdexGDc858.jpg)
圖27. 配置初始化函數(shù)
5.5.3. 根據(jù)配置生成工程代碼,點擊“GENERATE CODE”按鈕,并等待源碼工程的生成。點“Open Folder”后,可看到如下代碼工程目錄:
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeCADMKGAAEiDXgsZ6o309.jpg)
圖28. 根據(jù)配置生成工程代碼
06
驗證藍牙基本連接
本文演示的是 IAR 工程的生成,用戶也可生成 CUBEIDE 工程。
打開 IAR 工程、用戶還需要手工增加代碼以開啟廣播,具體為:在 STM32_WPAN > App > app_ble.c > void APP_BLE_Init(void) 函數(shù)的尾部增加下圖所示的函數(shù):
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeCAagQ8AABaKmUUCRk488.jpg)
然后編譯、下載并復(fù)位,使代碼運行起來。
使用 ST BLE ToolBox 掃描,并連接該外設(shè),可驗證我們上面的服務(wù)配置是否正確:
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeCAY9ATAACKWhiwWKo989.jpg)
圖29. 驗證基本連接
07
使能串口日志追蹤
7.1. 當(dāng)用戶需要使能串口 LOG 輸出功能時,可重新回到 CubeMX 的界面,進行串口的配置:
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeGAV1gMAADw-934q6o500.jpg)
圖30. 配置串口
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeGAOdADAAD3YX_FYfI992.jpg)
圖31. 配置串口 DMA
7.2. 為串口配置 GPDMA
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeGAPrXsAAE5MC8L14g828.jpg)
圖32. 給串口配置 GPDMA TX
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeGALtfxAAE4fAsRHxw784.jpg)
圖33. 給串口配置 GPDMA RX
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeGAVPA5AAFBwOcfk-k424.jpg)
圖34. 配置串口追蹤 1
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeGAONZYAAD9mD7Eyig102.jpg)
圖35. 配置串口追蹤 2
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeKAKs00AADxBuJS5Gg034.jpg)
圖36. 使能串口中斷
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeKAcTmiAADZ8aSM2_8004.jpg)
圖37. 配置串口注冊 callback
完成以上配置后,可再次點擊“GENERATE CODE”生成新的代碼。新的代碼會覆蓋掉工程中舊的代碼,但不會覆蓋工程中的用戶代碼部分。
7.3. 添加代碼、開啟串口日志追蹤
新的代碼生成后,還要再手工添加一些代碼:
在 app_conf.h 中添加宏定義“CFG_DBG_SUPPORTED”以及在 main.c 中添加函數(shù)RNG_KERNEL_CLK_OFF()
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeKAEiNJAAB_b8UMvaA567.jpg)
7.4. 驗證串口日志追蹤功能
驗證串口日志的方法比較簡單,直接打開串口助手,選擇好對應(yīng)的串口,然后設(shè)置波特率為 115200,無奇偶校驗,數(shù)據(jù)為 8bit,1 位停止位。
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeKAHKBMAAE01BWLFew673.jpg)
圖38. 配置串口終端
7.4.1. 驗證讀特征
驗證讀特征可以在代碼中添加如下代碼(每次讀取數(shù)據(jù),將數(shù)值加一后發(fā)送出去)
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeKATycuAAA9Ub5h5UA339.jpg)
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeKAJ2q0AAA3ZGpnooE056.jpg)
7.4.2. 驗證寫和 Notify(上報數(shù)據(jù))特征
驗證寫特征和上報數(shù)據(jù)特征可以一起進行。當(dāng)收到寫特征的數(shù)據(jù)時,直接將數(shù)據(jù)更新到上報數(shù)據(jù)特征中提交給 Client 端,如下圖所示,其中主要修改了兩個 case:
一個是允許寫,一個是將收到的數(shù)據(jù)寫回去。
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeOATRwKAAEUA6KiEqI698.jpg)
7.4.3. 驗證日志追蹤
![](https://file1.elecfans.com//web2/M00/B3/AE/wKgZomVoHeOAY7_QAAF-NuQRD-o054.jpg)
圖39. 驗證藍牙功能串口日志
08
小結(jié)
本文介紹了如何從芯片開始一步一步配置一個 BLE 工程,實際用戶在配置自己的項目時可以自行根據(jù)自己的項目需求而做相應(yīng)的修改。
原文標(biāo)題:實戰(zhàn)經(jīng)驗 | 一步一步創(chuàng)建STM32WBA BLE_Custom工程
文章出處:【微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
單片機
+關(guān)注
關(guān)注
6044文章
44632瀏覽量
639244 -
STM32
+關(guān)注
關(guān)注
2274文章
10929瀏覽量
357922
原文標(biāo)題:實戰(zhàn)經(jīng)驗 | 一步一步創(chuàng)建STM32WBA BLE_Custom工程
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
ADS1115在配置和轉(zhuǎn)換時的具體操作步驟,每一步的寄存器配置是怎樣的?
提升開關(guān)電源效率的理論分析與實戰(zhàn)經(jīng)驗
![提升開關(guān)電源效率的理論分析與<b class='flag-5'>實戰(zhàn)經(jīng)驗</b>](https://file1.elecfans.com/web3/M00/05/55/wKgZPGd_LySAYShvAAAZtQjQtaA655.jpg)
如果需要將DDC112U設(shè)置為非連續(xù)模式工作,應(yīng)該如何一步一步正確地設(shè)置芯片?
沙子變芯片,一步步帶你走進高科技的微觀世界
![沙子變芯片,<b class='flag-5'>一步步</b>帶你走進高科技的微觀世界](https://file1.elecfans.com/web3/M00/02/FF/wKgZPGdjiJqAZhTdAAB1R02xurk061.png)
英特爾將進一步分離芯片制造和設(shè)計業(yè)務(wù)
用XDS200仿真PGA900時候,單步執(zhí)行程序PC支持并沒有按照C語言一步一步執(zhí)行,為什么?
昂科芯片燒錄高質(zhì)量出海 唱響越南一步步新技術(shù)研討會
散熱第一步是導(dǎo)熱
使用STM32CubeIde生成STM32WBA BLE Audio工程時,如何配置Ble Audio模式?
西門子與微軟進一步擴展戰(zhàn)略合作關(guān)系
STM32WBA Nucleo-64設(shè)置主頻為100M,發(fā)現(xiàn)啟動過程中卡死在PWR_VOSR_VOSRDY,為什么?
材料價格進一步下降,盈利觸底 鋰電材料企業(yè)如何應(yīng)對?
Prevayl的下一步是什么
![Prevayl的下<b class='flag-5'>一步</b>是什么](https://file1.elecfans.com/web2/M00/C0/EF/wKgaomXQhh6Adce1AADvZwrXqvg601.png)
評論