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_sample例程使用演示

Telink Staff

August 22, 2022

Applications

Bluetooth phone screen

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

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

一、ble_sample例程说明

单连接SDK中B85m_ble_sample适用825x芯片和827x芯片,所以编译选项中又分为了825x_ble_sample和827x_ble_sample(下文统称ble_sample)。

ble_sample例程是简单的slave demo,具有广播和连接功能。在BLE服务有HID服务,连接后可以枚举为HID设备,可以控制音量和输入数字等功能。

二、开发板选择

以TLSR8258芯片为例子,常用的有两种开发板,一种是TLSR8258 Development Board(型号C1T139A30_V1.2),如下图所示:

另一种是TLSR8258 Dongle板(型号C1T139A3_V2.0A),如下图所示:

同样,TLSR8278芯片也有上述两种类型的开发板,此处不再赘述。

三、使用演示

1、代码中默认使能了电流测试(禁止了按键等操作),先禁止电流测试。在ble_sample/app_config.h文件中,修改后如下:

#define TEST_CONN_CURRENT_ENABLE       0

2、根据使用的开发板类型,代码中使能的宏定义不同,在ble_sample/app_config.h文件中,修改的宏定义如下:

  • 使用TLSR8258 Development Board

#define BOARD_SELECT       BOARD_825X_EVK_C1T139A30

此时默认使能了UI_KEYBOARD_ENABLE宏,即使用2行2列的按键矩阵,对应开发板的SW2 ~ SW5这4个按键。

  • 使用TLSR8258 Dongle

#define BOARD_SELECT        BOARD_825X_DONGLE_C1T139A3

此时默认使能了UI_BUTTON_ENABLE宏,即使用2个按键,对应TLSR8258 Dongle的SW1和SW2按键。

3、clean工程,然后rebuild编译,并把生成的固件download到开发板中,重新上电或者reset一次。

4、在手机–>设置–>蓝牙 页面,扫描到“VHID”,点击建立连接并选择配对。

5、点击开发板上的按键,手机上会有对应的显示。

在TLSR8258 Development Board上:

  • 按SW2按键,手机的音量增加;
  • 按SW4按键,手机的音量减小;
  • 按SW3按键,在手机的文字输入页面,输入文字“1”;
  • 按SW5按键,在手机的文字输入页面,输入文字“2”;

在TLSR8258 Dongle Board上:

  • 按SW1按键,手机的音量增加;
  • 按SW2按键,手机的音量减小;

*注意:ble_sample例程是HID设备,不需要在手机app中使用。如果使用手机app连接,是看不到上面的按键的效果。

四、电流测试

ble_sample例程默认是开启了电流测试功能,禁止了按键和LED的显示。

#define TEST_CONN_CURRENT_ENABLE        1

如果开发者需要测试各种广播间隔或者连接间隔的低功耗的数据,主要修改的参数有如下几个:

1、发射功率

发射功率越大,RF发射时的瞬时电流就越高。宏定义如下:

#define   MY_RF_POWER_INDEX        RF_POWER_P0dBm

2、广播间隔

广播间隔越小,RF发送数据就越频繁,功耗就越高。宏定义如下:

#define         MY_ADV_INTERVAL_MIN              ADV_INTERVAL_1S

#define         MY_ADV_INTERVAL_MAX             ADV_INTERVAL_1S

最大值和最小值最好设置一样,或者相差5ms。如果设置的最大值远大于最小值,SDK中默认选择使用最大值。

3、广播channel

广播channel总共有3个,当选择3个channel时,每次广播都会在3个channel各发送一次。宏定义如下:

#define     MY_APP_ADV_CHANNEL         BLT_ENABLE_ADV_ALL

4、广播内容

广播数据和扫描回复数据,设置的数据长度越大(最大31bytes),每次广播发送的耗时就越久,功耗也就越高。tbl_advData[ ]数组是广播内容数据;tbl_scanRsp[ ]数组是扫描回复数据。

5、连接间隔

建立连接后,从机可以主动更改连接参数,使用的API函数是:

bls_l2cap_requestConnParamUpdate();

具体的函数说明,请在handbook的文档中搜索。

设置好上述几点之后,就可以重新编译ble_sample例程,下载到开发板中,使用电流分析仪等设备做功耗测试。

*注意:测试功耗时,TLSR8258 Development Board开发板上的J29J35跳线帽需要拔掉。TLSR8258 Dongle Board开发板上的J8跳线帽需要拔掉。

五、低功耗注意点

1、ble_sample例程默认使能了低功耗功能,宏定义为:

#define BLE_APP_PM_ENABLE                    1

#define PM_DEEPSLEEP_RETENTION_ENABLE     1

2、ble_sample例程,广播超过60s会自动进入深睡眠(deepsleep模式)而停止广播。建立连接,60s内无按键事件,会断开连接并进入deepsleep模式。代码如下图所示,在blt_pm_proc()中,开发者可以根据需要做修改。