1.目的
是蓝牙广播固定在一个通道上面广播。
2.分析
蓝牙4.0共有3个广播信道和37个数据信道,3个广播信道分散在ISM频段的不同区域,如果他们集中在某个频段,则可能因为这个频段的深度衰弱而造成所有广播无法进行。因 此,各个广播信道直接至少相差24mhz
其中3个固定广播通道为:37, 38, 39,
3.平台:
协议栈版本:SDK10.0.0
编译软件:keil 5.14
硬件平台:nrf51822最小系统
例子:SDK 10.0.0\examples\ble_peripheral\ble_app_uart\pca10028\s110\arm4
4.步骤
ble_gap.h中
/**@brief Channel mask for RF channels used in advertising and scanning. */
typedef struct
{
uint8_t ch_37_off : 1; /**< Setting this bit to 1 will turn off advertising on channel 37 */
uint8_t ch_38_off : 1; /**< Setting this bit to 1 will turn off advertising on channel 38 */
uint8_t ch_39_off : 1; /**< Setting this bit to 1 will turn off advertising on channel 39 */
} ble_gap_adv_ch_mask_t;
可以看到设置为1为关闭,设置为0 为打开
在#include "ble_advertising.h"中
uint32_t ble_advertising_start(ble_adv_mode_t advertising_mode)
中添加如下代码
memset(&adv_params, 0, sizeof(adv_params));
adv_params.type = BLE_GAP_ADV_TYPE_ADV_IND;
adv_params.p_peer_addr = NULL;
adv_params.fp = BLE_GAP_ADV_FP_ANY;
adv_params.p_whitelist = NULL;
adv_params.channel_mask.ch_37_off = 0 ; //打开37通道
adv_params.channel_mask.ch_38_off = 1 ; //关闭38通道
adv_params.channel_mask.ch_39_off = 1 ; //关闭39通道