nrf51822 --- 固定广播通道

来源:互联网 发布:男生帽子 知乎 编辑:程序博客网 时间:2024/06/05 16:51

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通道




要不要广播的信道设置为1,0表示这个信道使用!!!



0 0