蓝牙协议栈开发板 STM32F1 跑蓝牙协议栈 --传统蓝牙串口协议SPP演示以及实现原理

零. 概述

主要介绍下蓝牙协议栈开发板跑传统蓝牙串口协议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

蓝牙学习目录http://www.noobyard.com/article/p-wkbgqcxj-nt.html

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

二. 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

原理在以上链接的第四小节