主要介紹下藍芽協定棧開發板跑傳統藍芽串列埠協定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
--------------------------------------------------------------------------------------------------------------------------
使用步驟操作如下:
步驟 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)編譯下載
此部分注意幾點:
步驟6)開啟串列埠工具(我用的是XCOM),然後做初始化動作,在傳送串列埠敲BT_START,點選傳送,出來以下log就證明初始化通過了,接下來我們就準備開始測試SPP(注意一點:不能勾選傳送新行,否則會解析錯誤)
步驟6)使用手機的SPP軟體(在3-軟體工具\bt_spp_apk)來連線我們的開發板,連線成功如圖,然後敲SPP_SEND就可以傳送固定字串(在程式碼中寫死,你可以隨便來修改),然後apk傳送的資料我們也可以通過開發板接受到了
上位機的使用前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的,所以他會重複性上來同一個裝置,我沒做根據同一個藍芽地址做顯示過濾,如果有興趣的人可以加上這一塊
https://blog.csdn.net/XiaoXiaoPengBo/article/details/108414679
原理在以上連結的第四小節