NRF52833/nrf52840笔记(18)广播设置Longrange 模式(拓展大广播包)
发布日期:2021-06-29 05:35:55
浏览次数:3
分类:技术文章
本文共 2687 字,大约阅读时间需要 8 分钟。
1概述
参考网址:
Long Range 是BLE 5.0中新增加的特性,主要是通过扩频的方式,提高了天线接收的灵敏度,同时将最大的发送功率,从4.0/4.1/4.2中的10mW增大到5.0的100mW。相对于BLE来说,确实增加了通信的距离。nRF52832 不支持 code 模式
2:代码编程
#include "ble_adv.h"#include "ble_advdata.h"#include "app_error.h"uint8_t beacon_info[23] = { 0x02, 0x15, 0xE2,0xC5,0x6D,0xB5,0xDF,0xFB,0x48,0xD2,0xB0,0x60,0xD0,0xF5,0xA7,0x10,0x96,0xE0, // uuid 0X00,0x00, // major 0x00,0x00, // mainor 0xC3 // rssi};static uint8_t m_enc_advdata[BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_MAX_SUPPORTED]; static uint8_t m_adv_handle = BLE_GAP_ADV_SET_HANDLE_NOT_SET;ble_gap_adv_data_t m_adv_data ={ .adv_data = { .p_data = m_enc_advdata, .len = BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_MAX_SUPPORTED, }, .scan_rsp_data= { .p_data=NULL, .len =0, }};/******************************** * ble ¹ã²¥³õʼ»¯****************************/uint8_t test_data[40];void ble_adv_init(void){ uint32_t err_code; ble_advdata_t advdata; ble_advdata_manuf_data_t manuf_specific_data; memset(&manuf_specific_data,0,sizeof(manuf_specific_data)); manuf_specific_data.company_identifier = 0x00C7;//0x00C7;//0x0059; manuf_specific_data.data.p_data = (uint8_t *) beacon_info; manuf_specific_data.data.size = sizeof(beacon_info); // Build and set advertising data. memset(&advdata, 0, sizeof(advdata)); advdata.name_type = BLE_ADVDATA_NO_NAME; advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE; advdata.p_manuf_specific_data = &manuf_specific_data; err_code = ble_advdata_encode(&advdata, m_adv_data.adv_data.p_data, &m_adv_data.adv_data.len); APP_ERROR_CHECK(err_code); // Initialize advertising parameters (used when starting advertising). ble_gap_adv_params_t adv_params; memset(&adv_params, 0, sizeof(adv_params)); adv_params.primary_phy = BLE_GAP_PHY_CODED;//BLE_GAP_PHY_1MBPS adv_params.secondary_phy = BLE_GAP_PHY_CODED; adv_params.properties.type = BLE_GAP_ADV_TYPE_EXTENDED_CONNECTABLE_NONSCANNABLE_UNDIRECTED;//; adv_params.p_peer_addr = NULL; adv_params.filter_policy = BLE_GAP_ADV_FP_ANY; adv_params.interval = 64; adv_params.duration = 0; // Never time out. err_code = sd_ble_gap_adv_set_configure(&m_adv_handle, &m_adv_data, &adv_params); APP_ERROR_CHECK(err_code); }void ble_adv_start(void){ ret_code_t err_code; err_code = sd_ble_gap_adv_start(m_adv_handle, 1); APP_ERROR_CHECK(err_code);}
实际测量和应用
1:广播longrange模式下,常规的BLE主机无法扫描到该设备,建议双方同时处于longrange模式下,进行相互连接和通信 2. 远距离发起连接容易超时导致连接失败,因为BLE连接需要比较严格的通信时序,因为longrang模式下数据速率会降低些可以加入QQ群:687360507 与大伙沟通交流,技术在于分享而进步
转载地址:https://blog.csdn.net/zhi_Alanwu/article/details/108381813 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月28日 04时42分31秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
什么是模块化代码?如何写?
2021-07-02
STM32串口发送数据和接收数据方式总结
2021-07-02
来,看看这20个常用的宏定义!
2021-07-02
嵌入式开发中常用的几种通信接口总结
2021-07-02
为什么我那么努力,模电还是学不懂?
2021-07-02
PID系统稳定性与零极点的关系
2021-07-02
什么?电路板上还要喷漆?
2021-07-02
读博读废了是种什么样的体验?
2021-07-02
2020年,技术圈十大“翻车”事件!
2021-07-02
C语言状态机编程思想
2021-07-02
为什么很多电器设备都要使用单片机?
2021-07-02
在中国做操作系统研发 20 年是种什么体验?
2021-07-02
PCB走线角度为90度到底行不行?
2021-07-02
这个 17 岁的黑客天才,破解了第一代 iPhone!
2021-07-02
在STM32价格疯长下,哪些国产32可以替代?
2021-07-02
半导体芯片原厂涨价及调价声明新增了这些!
2021-07-02
为什么你学C++这么难?
2021-07-02
无人机破巡检难题,秒变电网卫士
2021-07-02
五年,我成为了一名嵌入式工程师。
2021-07-02
2020年电赛题目,命题专家们怎么看?
2021-07-02