ble4.0共有3个广播信道(37/38/39)和37个数据信道,3个广播信道分散在ISM频段的不同区域,如果他们集中在某个频段,则可能因为这个频段的深度衰弱而造成所有广播无法进行。因 此,各个广播信道直接至少相差24mhz。

一般的应用为了稳定性都会使用默认设置,三个默认广播信道全部打开,但是在研发过程中,可能会有抓包分析的场景,此时如果三个信道全部打开,则抓包难度会提升,因此,我们需要固定广播在某一个特定信道。

下面介绍nrf52832的广播信道设置方法:

1、在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;

2、广播信道开关作为广播参数结构体的一个参数出现:

/**@brief GAP advertising parameters.*/
typedef struct
{uint8_t               type;                 /**< See @ref BLE_GAP_ADV_TYPES. */ble_gap_addr_t       *p_peer_addr;          /**< For @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND mode only, known peer address. */uint8_t               fp;                   /**< Filter Policy, see @ref BLE_GAP_ADV_FILTER_POLICIES. */ble_gap_whitelist_t  *p_whitelist;          /**< Pointer to whitelist, NULL if no whitelist or the current active whitelist is to be used. */uint16_t              interval;             /**< Advertising interval between 0x0020 and 0x4000 in 0.625 ms units (20ms to 10.24s), see @ref BLE_GAP_ADV_INTERVALS.- If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this parameter must be set to 0 for high duty cycle directed advertising.- If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, set @ref BLE_GAP_ADV_INTERVAL_MIN <= interval <= @ref BLE_GAP_ADV_INTERVAL_MAX for low duty cycle advertising.*/uint16_t              timeout;              /**< Advertising timeout between 0x0001 and 0x3FFF in seconds, 0x0000 disables timeout. See also @ref BLE_GAP_ADV_TIMEOUT_VALUES. If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this parameter must be set to 0 for High duty cycle directed advertising. */ble_gap_adv_ch_mask_t channel_mask;         /**< Advertising channel mask. @see ble_gap_channel_mask_t for documentation. */
} ble_gap_adv_params_t;</span>

3、广播参数设置在ble_advertising.c文件中的函数uint32_t ble_advertising_start(ble_adv_mode_t advertising_mode)中:

uint32_t ble_advertising_start(ble_adv_mode_t advertising_mode)
{uint32_t            err_code;ble_gap_adv_params_t adv_params;m_adv_mode_current = advertising_mode;//……省略// Initialize advertising parameters with default values.memset(&adv_params, 0, sizeof(adv_params));//……省略

4、上述函数中对广播参数进行了清零操作,之后并没有对channel_mask进行设置,所以就是三个信道全部使能。那么关掉其中两个信道,只保留37信道广播的方法为在上述 uint32_t ble_advertising_start(ble_adv_mode_t advertising_mode)函数中添加如下代码:

adv_params.channel_mask.ch_38_off=1;
adv_params.channel_mask.ch_39_off=1;

这样就能保证广播只在一个信道进行,方便抓包分析。

nrf52832 之 广播信道设置相关推荐

  1. Nrf52832 keil ROM 和 RAM 设置

    Nrf52832 keil ROM 和 RAM 设置 1.ROM设置 我用的是Nrf52832QFAA芯片,打开规格书,查看此芯片FLSAH及RAM大小 2.查看SoftDevice所占ROM和RAM ...

  2. nrf52832学习笔记(3)设置发射功率

    只要调用下面api就可以设置发射功率 /** @param[in] tx_power Radio transmit power in dBm (accepted values are -40, -30 ...

  3. 从零开始的nrf52832蓝牙开发(1)--蓝牙协议基础

    想要进行蓝牙开发,第一步肯定要对蓝牙协议有所了解.除了要对蓝牙的一些专业术语有所熟悉,还应该对蓝牙协议每层功能有一定认知. 概略图: 物理层(PHY): 物理层规定了蓝牙频段:2400MHz~2483 ...

  4. nRF52832的UICR

    nRF52832的UICR UICR(User information configuration registers)是保存用户特殊设置的非易失存储寄存器(NVM:Non-volatile memo ...

  5. nrf52832 DFU详细步骤 SDK13

    原链接 https://blog.csdn.net/jdsnpgxj/article/details/80772727 其它的链接 https://blog.csdn.net/weixin_38051 ...

  6. 关于fi dd ler 手机抓包 网卡地址地址_实测对比Wireshark利用nRF52832抓包和Packet Sniffer抓包体验...

    在蓝牙的开发过程中,使用抓包器对蓝牙模块收发数据进行抓包BLE分析,无疑会极大地提高我们的研发开发效率,同时能帮我们快速地定位问题.对于初学者或者开发者来说,BLE抓包分析能让我们更快地理解蓝牙的工作 ...

  7. nrf52832芯片手册_nRF52832低功耗问题不完全总结

    0.前言 技术和经历经验都有限,以下内容仅供初学者参考和个人总结记录,不定期更新. 都是使能协议栈开启BLE广播的情况 协议栈:s132_nrf52_6.1.1 SDK:nRF5_SDK_15.3.0 ...

  8. nrf52832 蓝牙组网_nrf52832 蓝牙开发

    1.简介 第一部分开篇还是要说一下资源与开发环境. 目前使用的是keil5,使用keil5则需要下载相应的pack包才能编译程序. 资源: 1.pack包:链接 2.nrfgo studio:链接 3 ...

  9. nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新

    nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新 主机连接 nrf52832 SDK中主机连接从机需要使用 sd_ble_gap_connect(ble_gap_addr_t const ...

最新文章

  1. jQuery DOM
  2. PhpStrom 常用的插件
  3. 印钞机 V1.0(量化选基总结)
  4. 在嵌套使用if语句时,C语言规定else总是什么?
  5. 基于深度卷积神经网络的目标检测研究综述
  6. python机械臂仿真_基于Python的3R机器人运动仿真
  7. 原创第13篇~while循环
  8. Android数据加密解密
  9. Apache Ranger KMS 部署文档
  10. B站html5直播黑屏,b站H5播放器改版后失效 · Issue #777 · the1812/Bilibili-Evolved · GitHub...
  11. 宽带拨号连接失败,代码651
  12. 黑苹果 版本 安装 驱动 usb 显卡 声卡 网卡 8169 kext 变色龙
  13. 科目三-上海松江小昆山
  14. C语言基础---3.格式化输出总结---%d ,%s,%f %.3f,%m.ns 以及sprintf函数
  15. Win10突然卡死的原因调查(转自yzhang)
  16. Linux----putty下载安装教程
  17. 创建桌面快捷方式及锁定到任务栏
  18. B40 - 基于STM32单片机的电热蚊香蓝牙控制系统
  19. 用python对某校园热水服务app进行测试,实现自动免费用水(仅供参考)
  20. 雷林鹏分享:PHP date() 函数

热门文章

  1. python项目篇-酒店(会议室,电影)预定
  2. 范伟的经典台词窘迫(希望别被唿悠倒!)
  3. Python、Anaconda、pip、Pycharm、Jupyter的关系
  4. java -jar 工作原理_可执行Jar包运行原理
  5. SAP中采购销售业务流程及记账会计分录笔记
  6. 2022-2028全球瓶盖用HDPE原料行业调研及趋势分析报告
  7. 文件服务器防止资料拷贝,局域网如何防止文件被复制、禁止复制文件、如何防止文件拷贝的方法...
  8. python中input函数使用
  9. 计算机工具选项卡,Word中的辅助功能——工具栏和菜单选项
  10. Oracle 利用lead、lag函数查询已有记录的下一条、上一条记录