[N32WBxxx] N32WB031广播数据更新

[复制链接]
 楼主| zhouchen605768 发表于 2023-5-29 17:11 | 显示全部楼层 |阅读模式
硬件我们采用官方的开发板,可以从如下地址进行购买,价格比较实惠
https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-24884886751.32.60de6a4eHrSBGy&id=718540374563

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

评论

@cooldog123pp :N32WB031-STB开发板,上面淘宝链接的就是  发表于 2023-5-29 22:11
什么开发板!  发表于 2023-5-29 20:51
 楼主| zhouchen605768 发表于 2023-5-29 17:14 | 显示全部楼层
SDK默认的广播数据
ELFM460$HJ20ZPI$E0}}UQ2.png
 楼主| zhouchen605768 发表于 2023-5-29 17:19 | 显示全部楼层
0x03,0x16,0x0A,0x18.用手机APP对广播数据进行查看:




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

2.png
 楼主| zhouchen605768 发表于 2023-5-29 17:22 | 显示全部楼层
ibeacon模式修改
4.png
 楼主| zhouchen605768 发表于 2023-5-29 17:27 | 显示全部楼层
手机测试
5.jpg
 楼主| zhouchen605768 发表于 2023-5-29 17:31 | 显示全部楼层
定义需要更新广播数据的新内容
6.png
 楼主| zhouchen605768 发表于 2023-5-29 17:34 | 显示全部楼层
新广播数据内容为0x0A,0xff,0xff,0xff,0x55,0x11,0x22,0x33,0x44,0x66,0x55
配置消息定时器:创建定时器消息标识符
7.png
 楼主| zhouchen605768 发表于 2023-5-29 17:37 | 显示全部楼层
定时器标识符对应的处理函数
8.png
 楼主| zhouchen605768 发表于 2023-5-29 17:40 | 显示全部楼层
在广播开启函数中开启消息定时器,消息定时器的使用受睡眠影响,故需要禁止睡眠进入

9.png

评论

软件定时器使用时可以进入睡眠,不受影响。 因此不需要禁用睡眠进入。  发表于 2023-12-4 09:39
 楼主| zhouchen605768 发表于 2023-5-29 17:43 | 显示全部楼层
main函数处理
10.png
 楼主| zhouchen605768 发表于 2023-5-29 17:48 | 显示全部楼层
广播更新定时器处理:
11.png
 楼主| zhouchen605768 发表于 2023-5-29 17:50 | 显示全部楼层
更新广播数据的函数

12.png
 楼主| zhouchen605768 发表于 2023-5-29 17:53 | 显示全部楼层
测试验证.串口打印信息

串口打印信息

串口打印信息
 楼主| zhouchen605768 发表于 2023-5-29 17:55 | 显示全部楼层
上电之后10s进行广播数据的更新,

10后更新的广播数据

10后更新的广播数据
 楼主| zhouchen605768 发表于 2023-5-29 17:58 | 显示全部楼层
SDK测试代码

N32WB03x_SDK _ADV.rar

2.42 MB, 下载次数: 41

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[27] =  
                {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[6],  uuid,  16);
    memcpy(&ibc_data[22], &major, 2);
    memcpy(&ibc_data[24], &minor, 2);
    ibc_data[26] = rssi;
   
    ns_ble_adv_data_set(ibc_data,27);
}




/**
* @brief  user 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;
    }


}

/**
* @brief  ble 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的例子里面找了半天 没看到这个例子  麻烦您回复一下  谢谢您了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

81

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部