当前位置:首页 > 编程笔记 > 正文
已解决

nrf52832 低功耗蓝牙 广播

来自网友在路上 165865提问 提问时间:2023-10-22 17:11:52阅读次数: 65

最佳答案 问答题库658位专家为你答疑解惑

nrf52832 低功耗蓝牙5.x


文章目录

  • nrf52832 低功耗蓝牙5.x
    • 广播
    • 广播的特点:
  • 一、修改代码演示
    • 广播初始化
    • 修改 广播名称
    • 修改广播时间
    • 修改广播内容和参数
  • 总结


广播

广播是低功耗蓝牙通信的基础,向外广播信息,等待被连接;
广播包含了设备的信息,如(广播名称,服务UUID等)
主机搜索到广播后发起连接请求。

广播的特点:

广播结构
在这里插入图片描述
广播信道
在这里插入图片描述
广播间隔
广播间隔通常:20ms至10.24s;(必须是1.25ms的整数倍)
在这里插入图片描述
广播事件分类
在这里插入图片描述
————————————————————————————————
在这里插入图片描述
在这里插入图片描述


一、修改代码演示

广播初始化

在这里插入图片描述

/**@brief Function for initializing the Advertising functionality.*/
static void advertising_init(void)
{uint32_t               err_code;ble_advertising_init_t init;memset(&init, 0, sizeof(init));//显示完整的广播名称init.advdata.name_type          = BLE_ADVDATA_FULL_NAME;//显示图标: false 不显示 ;  true 显示init.advdata.include_appearance = false;//低功耗蓝牙模式,不支持有限可发现模式和BR/EDRinit.advdata.flags              = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;//服务UUID数init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);init.srdata.uuids_complete.p_uuids  = m_adv_uuids;init.config.ble_adv_fast_enabled  = true;//广播间隔init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;//广播超时时间init.config.ble_adv_fast_timeout  = APP_ADV_DURATION;//广播事件的回调函数init.evt_handler = on_adv_evt;err_code = ble_advertising_init(&m_advertising, &init);APP_ERROR_CHECK(err_code);ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);
}

修改 广播名称

在这里插入图片描述
在这里插入图片描述
修改宏定义修改名称
在这里插入图片描述

#define DEVICE_NAME                     "ble name"                               /**< Name of device. Will be included in the advertising data. */

修改广播时间

当广播超时后进入慢广播模式

/**@brief Function for initializing the Advertising functionality.*/
static void advertising_init(void)
{uint32_t               err_code;ble_advertising_init_t init;memset(&init, 0, sizeof(init));//显示完整的广播名称init.advdata.name_type          = BLE_ADVDATA_FULL_NAME;//显示图标: false 不显示 ;  true 显示init.advdata.include_appearance = false;//一般可发现模式init.advdata.flags              = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE ;//服务UUID数init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);init.srdata.uuids_complete.p_uuids  = m_adv_uuids;init.config.ble_adv_fast_enabled  = true;//广播间隔init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;//广播超时时间init.config.ble_adv_fast_timeout  = APP_ADV_DURATION;//设置为0可一直保持广播模式init.config.ble_adv_slow_enabled =true; //增加慢广播 init.config.ble_adv_slow_interval = 1600;// 广播间隔1sinit.config.ble_adv_slow_timeout =0; //无超时时间//广播事件的回调函数init.evt_handler = on_adv_evt;err_code = ble_advertising_init(&m_advertising, &init);APP_ERROR_CHECK(err_code);ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);
}

在这里插入图片描述

修改广播内容和参数

/**@brief Function for initializing the Advertising functionality.*/
static void advertising_init(void)
{uint32_t               err_code;ble_advertising_init_t init;ble_advdata_manuf_data_t my_advdata_manuf_data_t;static uint8_t my_advdata_data[27]={0x00,0x11,0x22,0x33,0x44};memset(&init, 0, sizeof(init));//显示完整的广播名称init.advdata.name_type          = BLE_ADVDATA_FULL_NAME;//显示图标: false 不显示 ;  true 显示init.advdata.include_appearance = false;//一般可发现模式init.advdata.flags              = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE ;//服务UUID数init.srdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);init.srdata.uuids_complete.p_uuids  = m_adv_uuids;//添加厂商数据my_advdata_manuf_data_t.company_identifier =0x5257;my_advdata_manuf_data_t.data.p_data=my_advdata_data;my_advdata_manuf_data_t.data.size=5;init.advdata.p_manuf_specific_data = &	my_advdata_manuf_data_t;init.config.ble_adv_fast_enabled  = true;//广播间隔init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;//广播超时时间init.config.ble_adv_fast_timeout  = APP_ADV_DURATION;init.config.ble_adv_slow_enabled =true; //增加慢广播 init.config.ble_adv_slow_interval = 1600;// 广播间隔1sinit.config.ble_adv_slow_timeout =0; //无超时时间//广播事件的回调函数init.evt_handler = on_adv_evt;err_code = ble_advertising_init(&m_advertising, &init);APP_ERROR_CHECK(err_code);ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);}

在这里插入图片描述

手动停止广播和开启广播

    err_code = sd_ble_gap_adv_stop(m_advertising.adv_handle);APP_ERROR_CHECK(err_code);    
  err_code =ble_advertising_start(&m_advertising,BLE_ADV_MODE_FAST);APP_ERROR_CHECK(err_code);

总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了广播的实现使用,而Nordic提供了大量能使我们快速便捷地处理数据的函数和方法。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"nrf52832 低功耗蓝牙 广播":http://eshow365.cn/6-21781-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!