Telink white logo with Telink word in small size

您现在使用 IE

我们建议您改用下列浏览器,以获得更好的体验。

点击下载:

Chrome

Firefox

Safari

Edge

Telink white logo with Telink word
Rotate your device top arrow

旋转设备

Rotate your device bottom arrow
Preloader image
正在加载
Telink white logo with Telink word in small size

泰凌微电子BLE单连接SDK(一):B85m_module例程使用演示

Telink Staff

August 12, 2022

Applications

Bluetooth phone screen

在泰凌Wiki网站上提供了多种应用场景的软件sdk,供客户选择使用。本系列的几篇文章主要讲述”Bluetooth LE Single Connection”,此SDK是单连接应用的SDK,所谓的单连接就是蓝牙芯片做从机跟主机(一般是手机)建立点对点连接,或者蓝牙芯片做主机跟其他的从机建立点对点连接的应用场景。

本篇文章详细讲述此SDK中的B85m_module例程的使用及注意事项,以便客户尽快的熟悉起来,加快项目开发进度。

一、module例程说明

单连接sdk中B85m_module是使用825x芯片和827x芯片,所以编译选项中又分为了825x_module和827x_module。module例程提供了基于BLE的数据透传功能,使得用户不必关心BLE复杂的实现细节,只需要处理传输业务数据即可。数据透传的指令是泰凌自己实现的一套指令集,如果用户更习惯使用AT指令,可以将例程中的指令做替换即可。

二、module例程编译问题及解决方法

如果开发者直接编译825x_module或者827x_module(下文统称B85m_module),会出现下文的编译错误。

原因是B85m_module例程实现较复杂,需要使用32K retention的配置来编译,而sdk默认是选择的16K retention的配置。

解决方法:修改retention的配置可以参考Handbook的1.3章节的Software bootloader介绍,使用32K的boot.link文件和cstartup_*_32K.S启动文件。

或者参考下面的链接:

https://mp.weixin.qq.com/s/1noC0jLrwlQDQjazS7Y7Cg

三、硬件连接图

说明:下文以8258芯片为例,来描述B85m_module例程的使用。

  1. 在8258开发板上烧录编译成功的825x_module.bin固件,代码中默认的UART tx是PB1, uart rx是PB0。然后根据硬件连接图搭建好环境。*注意:芯片的uart tx接串口工具的uart rx,芯片的uart rx接串口的工具uart tx,不要接错了。
  2. PC端打开串口工具软件,波特率设置为115200,data bit为8,无校验,stop位为1。
  3. 手机端的app使用LightBlue软件,然后扫描到”kModule”的蓝牙设备,然后建立连接。
  4. 如果连接时,弹出配对请求,则选择配对。是因为默认使能了smp配对功能。如果不需要这个功能,则把app_config.h文件的 BLE_SECURITY_ENABLE宏定义设置为0,再clean后重新编译生成固件。

四、数据透传

当手机app和B85m_module建立蓝牙连接之后,可以看到module例程的Telink SPP透传服务,根据描述符的提示,分成数据接收和数据发送两个方向:

4.1 数据接收

数据接收(Phone->Module)即手机app发送数据给蓝牙芯片,然后蓝牙芯片通过uart打印出来,最后在PC端的串口工具软件上显示。

1、蓝牙event事件输出

当在nrf connect软件上点击连接或者断开时,串口工具上会显示出蓝牙连接事件(hex数据 FF 02 83 07)和蓝牙断开事件(hex数据 FF 02 84 07),如下图所示。

备注:FF 02 8D 07是map channel更换的event事件。

2、手机发送hex数据 00 11 22 33 44 55 66

在LightBlue软件上,数据透传使用的服务,UUID是0x000102030405060708090a0b0c0d2b11(注意跟代码中的UUID是反序的),点击红色方框处输入发送的数据。

如下图所示,PC端的串口工具软件已经显示了接收到的数据。注意接收到的数据有格式,前7bytes是数据的header。

4.2 数据发送

数据发送(Module -> Phone)即PC端串口工具软件发送数据给蓝牙芯片,然后蓝牙芯片通过BLE发送给手机,最后在LightBlue软件上显示。

(1)手机app端使能notify权限

蓝牙芯片上报数据给手机app,是使用notify方式,手机端必须先使能notify权限,手机端才会监听到蓝牙芯片上报的数据,否则手机app不会接收的。

在LightBlue软件上点击Listen,当软件界面显示Stop Listening时,表示正在listening,已经使能了notify权限。

(2)蓝牙芯片端使能唤醒脚

在B85m_module程序中,默认使能了低功耗,也就是蓝牙芯片会自动进入低功耗模式,并定时唤醒保持蓝牙连接的心跳,因此大部分时间是处于低功耗模式。在低功耗模式下,芯片的UART是无法接收数据的,必须先使用GPIO唤醒芯片,让芯片处于active模式,uart才能接收数据。

代码中默认设置为PA2为高电平唤醒脚。手动把芯片的PA2 pin拉高,接到3.3V上。就可以把蓝牙芯片唤醒并禁止进入低功耗。在app_config.h文件中对应的宏定义:

#define GPIO_WAKEUP_MODULE      GPIO_PA2

(3)数据发送

在串口工具中,输入hex数据:1c ff 16 00 11 00 01 02 03 04 05 06 07 08 09 00 01 02 03 04 05 06 07 08 09 00,然后点击send发送。

数据输入的格式说明,都是hex格式的数据:

  • 1C FF:表示data send命令
  • 16 00:表示数据长度,handle值(2bytes)+ data Length(20bytes)
  • 11 00:数据发送使用的handle值为0x0011,小端字节序原因。
  • 01 02 …00:实际需要发送的数据。

注意数据发送的长度在20字节以内,如果要发送更长的数据,可以查看Handbook中的MTU和DLE功能,使能长包后再发送长包数据。

在手机LightBlue软件上,可以看到收到的数据,如下图所示。