藍芽協定棧開發板 STM32F1 跑藍芽協定棧 --傳統藍芽串列埠協定SPP演示以及實現原理

2020-09-25 11:00:10

零. 概述

主要介紹下藍芽協定棧開發板跑傳統藍芽串列埠協定SPP AT指令以及上位機操作步驟,以及原理

一. 宣告

本專欄文章我們會以連載的方式持續更新,本專欄計劃更新內容如下:

第一篇:藍芽綜合介紹 ,主要介紹藍芽的一些概念,產生背景,發展軌跡,市面藍芽介紹,以及藍芽開發板介紹。

第二篇:Transport層介紹,主要介紹藍芽協定棧跟藍芽晶片之前的硬體傳輸協定,比如基於UART的H4,H5,BCSP,基於USB的H2等

第三篇:傳統藍芽controller介紹,主要介紹傳統藍芽晶片的介紹,包括射頻層(RF),基頻層(baseband),鏈路管理層(LMP)等

第四篇:傳統藍芽host介紹,主要介紹傳統藍芽的協定棧,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的協定吧。

第五篇:低功耗藍芽controller介紹,主要介紹低功耗藍芽晶片,包括物理層(PHY),鏈路層(LL)

第六篇:低功耗藍芽host介紹,低功耗藍芽協定棧的介紹,包括HCI,L2CAP,ATT,GATT,SM等

第七篇:藍芽晶片介紹,主要介紹一些藍芽晶片的初始化流程,基於HCI vendor command的擴充套件

第八篇:附錄,主要介紹以上常用名詞的介紹以及一些特殊流程的介紹等。

另外,開發板如下所示,對於想學習藍芽協定棧的最好人手一套。以便更好的學習藍芽協定棧,相信我,學完這一套視訊你將擁有修改任何協定棧的能力(比如Linux下的bluez,Android下的bluedroid)。

-------------------------------------------------------------------------------------------------------------------------

CSDN學院連結(進入選擇你想要學習的課程):https://edu.csdn.net/lecturer/5352?spm=1002.2001.3001.4144

藍芽交流扣扣群:970324688

Github程式碼:https://github.com/sj15712795029/bluetooth_stack

入手開發板:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22329603896.18.5aeb41f973iStr&id=622836061708

藍芽學習目錄https://blog.csdn.net/XiaoXiaoPengBo/article/details/107727900

--------------------------------------------------------------------------------------------------------------------------

二. STM32藍芽協定棧封裝使用AT command實現串列埠協定SPP的通訊

使用步驟操作如下:

步驟 1)準備好程式碼,從github下載下來最新的程式碼(在上面有介紹Github連線)

步驟 2)連線好硬體(把模組插好,ST-LINK接上,TYPE-C debug先接上,按下按鈕可以看到藍色電源等亮起)

步驟 3)開啟Keil工程資料夾下的project\stm32f10x_bb_csr8x11_bt\stm32f10x_bb_csr8x11.uvprojx,設定SPP使能(在bt_config.h把PROFILE_SPP_ENABLE定義為1)

步驟4)編譯下載

此部分注意幾點:

  • 下載需要ST-LINK驅動,我已經放在下載資料中的軟體工具資料夾中
  • STM32 F1的pack要有,我已經放在軟體工具資料夾中的MDK下,沒有沒安裝過要安裝下,名字如下:

   

  • 下載的debug要選ST-LINK

     

  • 下載的時候要勾選Use micro lib

     

步驟6)開啟串列埠工具(我用的是XCOM),然後做初始化動作,在傳送串列埠敲BT_START,點選傳送,出來以下log就證明初始化通過了,接下來我們就準備開始測試SPP注意一點:不能勾選傳送新行,否則會解析錯誤)

步驟6)使用手機的SPP軟體(在3-軟體工具\bt_spp_apk)來連線我們的開發板,連線成功如圖,然後敲SPP_SEND就可以傳送固定字串(在程式碼中寫死,你可以隨便來修改),然後apk傳送的資料我們也可以通過開發板接受到了

三.STM32藍芽協定棧使用上位機實現串列埠協定SPP的通訊

上位機的使用前4步跟AT一樣,我們我們就直接來講第五步。

開啟我們工程原始碼1-BLUETOOTH\mcu_bt_tool\mcu_bt_tool\mcu_bt_tool\bin\Debug中的mcu_bt_tool.exe,當然你也可以直接用VS2010開啟工程

步驟5)開啟上位機,開啟串列埠,開啟藍芽功能

步驟6)進入藍芽串列埠介面,連線上後連線狀態跟連線地址以及空間都會可用,介面簡單易用,沒啥不懂的

另外:使用上位機的時候注意幾點:

① mcu_bt_tool.exe你如果想把可執行檔案拿到別的路徑單獨執行,那麼必須要把Newtonsoft.Json.dll跟exe放在同一個路徑下,因為上位機是跟STM32用json溝通的

② 因為目前搜尋是開啟的EIR,帶RSSI的,所以他會重複性上來同一個裝置,我沒做根據同一個藍芽地址做顯示過濾,如果有興趣的人可以加上這一塊

四. 串列埠工具AT command以及上位機實現搜尋的原理

https://blog.csdn.net/XiaoXiaoPengBo/article/details/108414679

原理在以上連結的第四小節