一、前言
本篇为上一篇文章的续作,将通过代码编写,实现 BLE 扫描窗口与扫描间隔的配置。
备注:本文最后会给出完整的代码。
二、阅读须知
本合集所使用的芯片为泰凌微8258芯片,读者也可以使用泰凌微的其他芯片来进行实验。
三、正文
1、扫描时序介绍
如上图所示,扫描时序是轮流在37,38,39通道进行循环扫描的,每一个通道所维持的时间称之为扫描间隔。扫描窗口的意思是在扫描间隔内,耗费了多少时间来进行扫描动作。读者需要注意,扫描窗口的大小不能大于扫描间隔。
2、增加扫描窗口和扫描间隔的宏定义
#define MY_SCAN_WINDOW 100#define MY_SCAN_INTERVAL 200
如上所示,我将扫描窗口定义为100ms,扫描间隔定义为200ms,
3、增加相关的计时变量
unsigned char my_scan_window;unsigned int my_scan_interval;unsigned int my_scan_index = 0;unsigned int my_scan_window_cnt = 0;unsigned int my_scan_interval_cnt = 0;
如上所示增加了一系列的计时变量。
4、编写设置扫描参数的函数
unsigned char my_set_scan_param(unsigned int scan_window,unsigned int scan_interval){if(scan_window > scan_interval)return 0;my_scan_window = scan_window;my_scan_interval = scan_interval;return 1;}
上述的函数的功能为将扫描窗口和扫描间隔的值给到相应的变量。
阅读全文
73