zhouchen605768 发表于 2023-5-29 17:11

N32WB031广播数据更新

硬件我们采用官方的开发板,可以从如下地址进行购买,价格比较实惠
https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-24884886751.32.60de6a4eHrSBGy&id=718540374563

实现软件基于官方SDK工程中的rdtss工程,实现流程如下:

zhouchen605768 发表于 2023-5-29 17:14

SDK默认的广播数据

zhouchen605768 发表于 2023-5-29 17:19

0x03,0x16,0x0A,0x18.用手机APP对广播数据进行查看:




0x02,0x01,0x06---------------蓝牙BLE标识0x03,0x16,0x0A,0x18-------------------广播数据对于0x02,0x01,0x06可以用设置广播ibeacon方式进行去除:

zhouchen605768 发表于 2023-5-29 17:22

ibeacon模式修改

zhouchen605768 发表于 2023-5-29 17:27

手机测试

zhouchen605768 发表于 2023-5-29 17:31

定义需要更新广播数据的新内容

zhouchen605768 发表于 2023-5-29 17:34

新广播数据内容为0x0A,0xff,0xff,0xff,0x55,0x11,0x22,0x33,0x44,0x66,0x55
配置消息定时器:创建定时器消息标识符

zhouchen605768 发表于 2023-5-29 17:37

定时器标识符对应的处理函数

zhouchen605768 发表于 2023-5-29 17:40

在广播开启函数中开启消息定时器,消息定时器的使用受睡眠影响,故需要禁止睡眠进入

zhouchen605768 发表于 2023-5-29 17:43

main函数处理

zhouchen605768 发表于 2023-5-29 17:48

广播更新定时器处理:

zhouchen605768 发表于 2023-5-29 17:50

更新广播数据的函数

zhouchen605768 发表于 2023-5-29 17:53

测试验证.串口打印信息

zhouchen605768 发表于 2023-5-29 17:55

上电之后10s进行广播数据的更新,

zhouchen605768 发表于 2023-5-29 17:58

SDK测试代码

ruicortech8888 发表于 2023-5-31 18:30

谢谢分享,学习了

HORSE7812 发表于 2023-10-13 17:55

谢谢分享,有个疑问:SDK中beacon中例子,每5秒钟改变广播消息,感觉没有走这样的流程。我把代码贴出来了:
/* Private functions ---------------------------------------------------------*/
void app_ble_connected(void);
void app_ble_disconnected(void);

void app_printf_ibeacon(uint8_t* uuid, uint16_t major, uint16_t minor, int8_t rssi)
{
    NS_LOG_INFO("\r\nUUID(hex):");
    for(uint8_t i=0;i<16;i++)
    {
      NS_LOG_INFO(" %02X",uuid);
    }
    NS_LOG_INFO("\r\nMajor: %d",major );
    NS_LOG_INFO("\r\nMinor: %d",minor );
    NS_LOG_INFO("\r\nRSSI at 1m: %d dBm\r\n",rssi );
}

void app_update_ibeacon(uint8_t* uuid, uint16_t major, uint16_t minor, int8_t rssi)
{
    uint8_t ibc_data =
                {0x1a,0xff,
                0x4c,0x00,0x02,
                0x15,
                0x10,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff,
                0x12,0x34,
                0x56,0x78,
                0xCE};
    memcpy(&ibc_data,uuid,16);
    memcpy(&ibc_data, &major, 2);
    memcpy(&ibc_data, &minor, 2);
    ibc_data = rssi;
   
    ns_ble_adv_data_set(ibc_data,27);
}




/**
* @briefuser message handler
* @param
* @return
* @NOTE   
*/
void app_user_msg_handler(ke_msg_id_t const msgid, void const *p_param)
{

    switch (msgid)
    {
            case APP_CUSTS_TEST_EVT:
      {
            major = rand(); //random
            minor = rand(); //random
            app_update_ibeacon(uuid,major,minor,rssi);
            app_printf_ibeacon(uuid,major,minor,rssi);
            //repeat timer
            ke_timer_set(APP_CUSTS_TEST_EVT,TASK_APP,5000);
      }
      break;

            default:
                    break;
    }


}

/**
* @briefble message handler
* @param
* @return
* @note   
*/
void app_ble_msg_handler(struct ble_msg_t const *p_ble_msg)
{
    switch (p_ble_msg->msg_id)
    {
      case APP_BLE_OS_READY:
            NS_LOG_INFO("APP_BLE_OS_READY\r\n");
            ke_timer_set(APP_CUSTS_TEST_EVT,TASK_APP,5000);
            break;
      case APP_BLE_GAP_CONNECTED:
            app_ble_connected();
            break;
      case APP_BLE_GAP_DISCONNECTED:
            app_ble_disconnected();
            break;

      default:
            break;
    }

}


直接在协议栈初始化完成后创建一个定时器来修改广播参数。

tcvsdonnnie 发表于 2023-11-2 10:23

马克

tcvsdonnnie 发表于 2023-11-16 12:38

请问有低功耗运行的例子吗

BIGGG 发表于 2023-12-1 18:19

HORSE7812 发表于 2023-10-13 17:55
谢谢分享,有个疑问:SDK中beacon中例子,每5秒钟改变广播消息,感觉没有走这样的流程。我把代码贴出来了: ...

您好 我想问一下 这个五秒改变广播信息的例子是在哪个文件里面的我在官方给的N32WB031的例子里面找了半天 没看到这个例子麻烦您回复一下谢谢您了
页: [1] 2
查看完整版本: N32WB031广播数据更新