Telink蓝牙基本配置

一、序言

本文介绍了如何使用Telink SDK快速进行蓝牙开发的简单配置,适用于Telink 825X以及921X系列芯片,目前已在TLSR8258以及TLSR9518上验证成功,不同的芯片由于驱动版本等略有差异,实现方式可能略有不同,请注意辨别,本文采用SDK V3.3.0.1配合B91 Development Board进行说明。

二、配置

1.文件结构

具体的环境配置等请参照官网开发手册,导入后结构目录如下:
结构目录

目录中的文件夹对应关系如下:

  • Algorithm:提供加密算法相关的函数。
  • Application:提供⼀些通⽤的应⽤处理程序,如 print、keyboard 等。
  • boot:提供芯⽚的 software bootloader,即 MCU 上电启动或 deepsleep 唤醒后的汇编处理过程,为后⾯ C 语⾔程序的运⾏搭建好环境。
  • common:提供⼀些通⽤的跨平台的处理函数,如内存处理函数、字符串处理函数等。
  • drivers:提供与 MCU 紧密相关的硬件设置和外设驱动程序,如 clock、flflash、i2c、usb、gpio、uart 等。
  • proj_lib: 存放 SDK 运⾏所必需的库⽂件(如 libB91_ble_lib.a)。BLE 协议栈、RF 驱动、PM 驱动等⽂件,被封装在库⽂件⾥,⽤⼾⽆法看到源⽂件。
  • stack:存放 BLE 协议栈相关的头⽂件。源⽂件被编译到库⽂件⾥⾯,对于⽤⼾是不可⻅的。
  • vendor:⽤于存放⽤⼾应⽤层代码。

根据开发手册的说明:

slave demo

我们选择ble sample进行开发,主要通过app.c文件修改相关的gap配置。

2.广播配置

首先我们知道广播数据帧的格式如下:

广播帧

所以我们对例程中的广播报文与扫描应答报文修改如下:

/**
 * @brief   Adv Packet data
 */
const u8    tbl_advData[] = {
     0x07, 0x09, 'B', 'L', 'E', 'H', 'I', 'D', 
     0x02, 0x01, 0x05,                          // BLE limited discoverable mode and BR/EDR not supported
     0x03, 0x19, 0x80, 0x01,                    // 384, Generic Remote Control, Generic category
     0x05, 0x02, 0x12, 0x18, 0x0F, 0x18,        // incomplete list of service class UUIDs (0x1812, 0x180F)
};
 
/**
 * @brief   Scan Response Packet data
 */
const u8    tbl_scanRsp [] = {
         0x0A, 0x09, 'B', 'L', 'E', 'S', 'a', 'm', 'p', 'l', 'e',
    };

我们对这里出现的广播类型AD type来进行解析,它有如下定义(具体和详细的定义参考官方文档Core Specification Supplement):

类型名称说明
0x09Complete Local Name设备名称
0x01Flags标识
0x02Incomplete List of 16-bit Service Class UUIDs蓝牙服务UUID的不完整列表
0x19Appearance外观

这里比较重要的是Flags,每位对应的描述如下:
flag格式

根据需要设置相应的数值即可,具体定义参考蓝牙官方文档。

广播报文和扫描报文可以设置为不同的名称,这也是为什么有的蓝牙设备在不同的设备上被识别的名称不同的原因。

3.连接参数

通过修改连接任务中的参数来修改连接间隔,有如下配置:

/**
 * @brief      callback function of LinkLayer Event "BLT_EV_FLAG_CONNECT"
 * @param[in]  e - LinkLayer Event type
 * @param[in]  p - data pointer of event
 * @param[in]  n - data length of event
 * @return     none
 */
void    task_connect (u8 e, u8 *p, int n)
{
//  bls_l2cap_requestConnParamUpdate (8, 8, 19, 200);  // 200mS
    bls_l2cap_requestConnParamUpdate (8, 8, 99, 400);  // 1 S
//  bls_l2cap_requestConnParamUpdate (8, 8, 149, 600);  // 1.5 S
//  bls_l2cap_requestConnParamUpdate (8, 8, 199, 800);  // 2 S
//  bls_l2cap_requestConnParamUpdate (8, 8, 249, 800);  // 2.5 S
//  bls_l2cap_requestConnParamUpdate (8, 8, 299, 800);  // 3 S
 
    latest_user_event_tick = clock_time();
 
    device_in_connection_state = 1;//
 
#endif
}

4.广播周期与通道

修改的代码段如下

bls_ll_setAdvParam( ADV_INTERVAL_30MS, ADV_INTERVAL_35MS,
                        ADV_TYPE_CONNECTABLE_UNDIRECTED, app_own_address_type,
                        0,  NULL,
                        BLT_ENABLE_ADV_ALL,
                        ADV_FP_NONE);
 
    bls_ll_setAdvEnable(BLC_ADV_ENABLE);  //must: set adv enable

通道和周期的定义在hci_cmd.h文件中,BLT_ENABLE_ADV_ALL表示使用通道37、38、39,即全部的主广播通道。

还有功率、设备地址配置等参数,这里不一一赘述,有需要的再做了解和修改。

三、效果

编译烧录程序后在手机搜索蓝牙设备,可以看到描述与我们配置的相符:
蓝牙信息
抓到的数据也一致:

raw data

四、总结

SDK在蓝牙配置方面的内容总体比较全,修改起来也比较方便,有需要的人可以通过本文快速上手,运行一个简单的蓝牙例程。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于Telink IDE的配置,可以按照以下步骤进行操作: 1. 下载和安装Telink IDE:首先,你需要从Telink官方网站下载并安装Telink IDE。它是一个集成开发环境,用于Telink芯片的开发和调试。 2. 配置目标芯片:打开Telink IDE后,你需要配置目标芯片的型号和连接方式。在IDE的菜单栏中,选择“Options”或“Preferences”(具体名称可能会有所不同),然后找到“Target”或“Device”选项。在这里,你可以选择你使用的芯片型号,并选择与电脑连接的方式(如USB连接或JTAG连接)。 3. 创建工程:在IDE中,你可以创建一个新的工程来开始你的开发项目。在IDE的菜单栏中,选择“File”->“New Project”或类似选项。然后,按照向导的指示,选择你的芯片型号、工程名称和存储路径等信息。 4. 配置编译器:Telink IDE使用GCC编译器来编译和构建项目。确保你已经正确配置了编译器路径。在IDE的菜单栏中,选择“Options”或“Preferences”,然后找到“Build Tools”或类似选项。在这里,你可以指定GCC编译器的路径。 5. 编写代码:使用Telink IDE内置的代码编辑器,你可以编写你的应用程序代码。你可以创建新的源文件、添加库文件等等。Telink IDE支持C语言和汇编语言编程。 6. 构建和调试:在完成代码编写后,你可以使用IDE提供的构建工具来编译和构建你的项目。通过选择菜单栏中的“Build”或类似选项,IDE将执行编译过程并生成可执行文件。如果需要进行调试,你可以使用IDE提供的调试功能来单步执行、设置断点等。 这些是Telink IDE的基本配置步骤,具体操作可能会因版本和开发环境而有所不同。如果你遇到问题,建议参考Telink IDE的官方文档或寻求Telink开发者社区的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值