一、前言
本篇为介绍BLE主机的第一篇文章,内容会介绍SDK的下载,demo的使用,以及广播信息的打印。
二、阅读说明
1、泰凌微芯片学习者。2、蓝牙 spec学习者三、正文1、SDK的下载
官方网址:https://www.telink-semi.cn/products/bluetooth-le/tlsr825x
2、主机demo的选择
如上图所示,使用的demo为ble_master_kma_dongle
3、确定打印引脚
/////////////////////////////////////// PRINT DEBUG INFO ///////////////////////////////////////#if (UART_PRINT_DEBUG_ENABLE)#define DEBUG_INFO_TX_PIN GPIO_PB5#define PULL_WAKEUP_SRC_PB5 PM_PIN_PULLUP_10K#define PB5_OUTPUT_ENABLE 1#define PB5_DATA_OUT 1 //must#endif
如上图所示,打印引脚为PB5,这个打印引脚读者可以自行更改
4、确认扫描参数和开关
/* set scan parameter and scan enable */blc_ll_setScanParameter(SCAN_TYPE_PASSIVE, SCAN_INTERVAL_100MS, SCAN_INTERVAL_100MS,OWN_ADDRESS_PUBLIC, SCAN_FP_ALLOW_ADV_ANY);blc_ll_setScanEnable (BLC_SCAN_ENABLE, DUP_FILTER_DISABLE);
如上图所示,扫描参数和扫描开关函数在app.c文件中的user_init()中,由上图可以看出,该扫描是属于被动扫描,扫描窗口和扫描间隔是相等的为100ms,扫描使能是打开的。
关于扫描窗口和扫描间隔定义如下:
如上图所示,扫描是在37,38,39通道上轮流的进行,扫描窗口的意思为在一个扫描间隔里面RX开通的时间。
5、确认广播报告的回调函数
如上图所示,当接收到广播信息的时候,会进入controller_event_callback函数中,进而进入HCI_SUB_EVT_LE_ADVERTISING_REPORT的条件判断中,之后会进入blm_le_adv_report_event_handle函数。
6、增加打印代码
printf("adv report:n");for(int i = 0; i < pa->len; i++){printf("0x%02x ", pa->data[i]);}printf("n");
如上图所示,在blm_le_adv_report_event_handle函数中增加打印的代码
7、结果展示
7.1、开发工具展示
7.2、串口展示
无任何数据打印出来。
四、结尾
本篇主要讲解了与ble主机广播有关的内容,本来是想将广播信息打印出来的,不过出了点意外,没打印出来,今天我再查一下问题的原因,明天将问题的原因通过文章的方式发出来。
173