发新帖本帖赏金 50.00元(功能说明)我要提问
返回列表
打印

经典蓝牙SPP如何落地 - 应用篇

[复制链接]
984|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#申请原创# @21小跑堂 @21小跑堂 ​

引:
        由于项目需要,需要使用到经典蓝牙,而市面上的蓝牙芯片大多是基于BLE的蓝牙芯片,而经典蓝牙芯片很少,经过近一个月的测试,原厂终于将经典蓝牙的SPP协议栈部分移植成功,对于应用层面,我也可以开始使用了。

一、SPP
        在询问很多厂家是否支持SPP的时候,大多数都不知道是什么,我把SPP的定义说一下。
        定义:SPP是Serial Port Profile(串口协议)的缩写,其定义了使用蓝牙进行RS232(或类似)串行电缆仿真的设备应使用的协议和过程。
        简单来说就是在蓝牙设备之间建立虚拟的串口进行数据通信。说白了就是可以两个设备对端发送自定义数据,NOTED:苹果不支持SPP协议。
        协议在整个蓝牙协议中的架构如下:

        而SDP部分需要如下注册:
static const uint8_t spp_service_record[] =
{
  /* 1.ServiceClassIDList */
    SDP_DES_SIZE8, 0x8,
    SDP_UINT16, BT_ATTRIBUTE_SERVICE_CLASS_ID_LIST>>8&0xff, BT_ATTRIBUTE_SERVICE_CLASS_ID_LIST&0xff, /* Service class ID list attribute */
            SDP_DES_SIZE8, 3,
            SDP_UUID16, BT_SERVICE_CLASS_SERIAL_PORT>>8&0xff, BT_SERVICE_CLASS_SERIAL_PORT&0xff,

  /* 2.ProtocolDescriptorList */
            SDP_DES_SIZE8, 0x11,
            SDP_UINT16, BT_ATTRIBUTE_PROTOCOL_DESCRIPTOR_LIST>>8&0xff, BT_ATTRIBUTE_PROTOCOL_DESCRIPTOR_LIST&0xff,/* Protocol descriptor list attribute */
            SDP_DES_SIZE8, 0xc,
            SDP_DES_SIZE8, 0x3,
            SDP_UUID16, BT_PROTOCOL_L2CAP>>8&0xff, BT_PROTOCOL_L2CAP&0xff, /*L2CAP*/
            SDP_DES_SIZE8, 0x5,
            SDP_UUID16, BT_PROTOCOL_RFCOMM>>8&0xff, BT_PROTOCOL_RFCOMM&0xff, /*RFCOMM*/
            SDP_UINT8, RFCOMM_SPP_SERVER_CHNL, /*RFCOMM channel*/

  /* BluetoothProfileDescriptorList */
            SDP_DES_SIZE8, 0xd,
            SDP_UINT16, BT_ATTRIBUTE_BLUETOOTH_PROFILE_DESCRIPTOR_LIST>>8&0xff, BT_ATTRIBUTE_BLUETOOTH_PROFILE_DESCRIPTOR_LIST&0xff, /* profile descriptor List */
            SDP_DES_SIZE8, 0x8,
            SDP_DES_SIZE8,0x06,
            SDP_UUID16,BT_SERVICE_CLASS_SERIAL_PORT>>8&0xff, BT_SERVICE_CLASS_SERIAL_PORT&0xff,
            SDP_UINT16,0x01,0x02,    /* V1.2 */
};

        关于协议栈部分,需要根据自己的需要进行设计,需要注意的是:SPP只有安卓手机支持,并且部分安卓手机必须有SPP APP才可以连接,iphone手机不能直接SPP,但是有一个替代协议IAP,此协议需要买MFI chip才能用。
二、AT-START-WB415开发板
        我们看一下开发板的布局图


        我们再看看原理图


三、软件部分
        同其它的开发板一样,需要先下载几个关键资料,datasheet资料,开发板说明资料,keil支持的补丁包资料,还有就是BSP库文件。
        我们可以到雅特力的官网去下载这些资料:
        www.arterytek.com/cn/product/AT32WB415.jsp
        资料都是很全面的,可以根据自己的需要进行下载。这里就不再赘述。

        下载ICP文件

四、烧录及运行
协议栈下载
        将ICP文件解压缩之后,打开ICP3.0.06

        将开发板连接电脑,会自动识别,识别之后,点击'连接'按钮。

        我们可以看见芯片的信息:
        型号:   AT32WB415CCU7-7      
        主存储器大小: 256KB
        添加文件wb415_ble_spp_merge.bin文件。

        添加之后,有一步容易忽略的,就是起始地址一定要更改为0才可以的。

         提示框中也写到了,起始地址为0;只有填对信息,才会有以下的提示框:

        点击下载,由于是下载协议栈,所以需要将擦除所有的磁盘空间:

        出现校验成功之后,证明协议栈下载完成。

应用程序下载
        打开工程文件,然后选择CMSIS-DAP 选项

        进入之后,查看是否不是AT-LINK

        点击下载按钮

        提示下载完成

        至此,应用程序下载完成。
demo测试
        烧录完成之后,我们将P07接地

        打开电脑的蓝牙

        我们配对之后,选择蓝牙选项查看

        蓝牙设置里面的COM端口

        这个时候看见熟悉的'传入''传出'了

        我们将串口调试助手打开,选择COM7
        我们将USB转串口工具连接到板子上,记得使用的是PA2和PA3引脚。

        我们打开两个串口软件,一个是COM7,另外一个在老刘的电脑上识别的是COM10,我们测试一下收发数据。

       至此,SPP模式已经跑通。
结:
        这款单片机有其自身的优势资源。M4内核。很好很强大。

使用特权

评论回复

打赏榜单

21小跑堂 打赏了 50.00 元 2022-11-08
理由:恭喜通过原创审核!期待您更多的原创作品~

评论
21小跑堂 2022-11-8 09:49 回复TA
基于AT蓝牙开发板硬件,实现经典蓝牙的SPP应用。通过SPP协议,两个蓝牙设备之间可以创建串口进行数据传输。在小数据量低速传输中比较实用,的确是一条老路了。 

相关帖子

沙发
muyichuan2012| | 2022-11-8 11:48 | 只看该作者
不错哦,波特率最高可以达到多少?

使用特权

评论回复
板凳
单片小菜|  楼主 | 2022-11-9 08:55 | 只看该作者
muyichuan2012 发表于 2022-11-8 11:48
不错哦,波特率最高可以达到多少?

可以达到25K

使用特权

评论回复
地板
重剑走江湖| | 2022-11-10 10:00 | 只看该作者
学习了,感谢分享。

使用特权

评论回复
5
xu@xupt| | 2022-12-8 23:41 | 只看该作者
感谢分享

使用特权

评论回复
发新帖 本帖赏金 50.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:资深专家
简介:丰富的嵌入式软硬件开发管理经验; 丰富的项目管理经验并具备敏锐的市场嗅觉; 丰富的产品的供应链资源及工厂管控能力; 具备很强的产品落地经验(从产品企划到产品量产);

107

主题

2306

帖子

9

粉丝