蓝牙mesh组网实践(在mesh工程中添加BLE功能)

目录

CH582这款芯片是能够同时跑mesh+BLE的,在我司提供的透传模型“一般节点”或者叫“普通节点”的代码adv_vendor中,也可以添加BLE功能,方便用户随时连接BLE。

在adv_vendor工程中添加BLE的操作步骤如下:

 

如图配置预编译宏。

BLE_MAC:用于配置BLE广播所用的MAC地址为代码中自定义的MAC,位于app_main.c的前几行。如果BLE-MAC不配置,使用芯片内置的MAC地址,也可以进行BLE广播。在mesh的未配网节点代码中,配网信标广播默认会用到芯片内置的MAC地址,所以这里建议开启,避免BLE广播和配网信标广播使用同一个MAC。

BLE_MEMHEAP_SIZE:用于给BLE协议栈预留RAM空间。这里使用BLE->LIB文件夹中的LIBCH58xBLE.a文件中的BLE协议栈,按建议是预留6K的RAM。如果RAM资源紧张,该值可以适当减小。如果该值过小,会导致BLE广播难以被发现或者BLE连接后出异常。

 

从peripheral工程将profile文件夹、peripheral源/头文件拷贝到adv_vendor工程文件夹中。

 

添加头文件包含,在APP_INIT初始化函数中加上下图中的两行BLE相关初始化。

之后就能使用BLE功能了,具体的BLE相关配置可以研究研究peripheral例程。

 

如果需要使能低功耗节点功能,需要再按如下步骤多几步修改。

使能mesh低功耗节点功能,关闭转发功能(最好关掉,不关的话LPN长期休眠,也执行转发)。

增加HAL_SLEEP宏,删除HAL_KEY宏,注释掉按键检测功能以及多余的循环TMOS事件。

 

固定所有引脚的电平。本测试中绝大多数引脚悬空,故将GPIO电平都固定在上拉高电平。

关闭10s一次的安全广播,disable掉就行,IV同步功能会由低功耗节点帮助完成。

在CH582最新EVT中,有支持WCH MESH的demo,能够实现通过厂商定义的指令,走手机APP配网,借助手机保存网络信息及管理网络。鉴于APP开发工程师中熟悉BLE协议的要比熟悉mesh协议的多得多,这一套指令可以帮助APP开发工程师走BLE管理mesh网络。

如果看上这套指令,但是为了更大的codeflash而要舍弃OTA功能,可以尝试将代码移植到adv_vendor_self_provision工程中(理论上adv_vendor也行,保险起见笔者先用adv_vendor_self_provision作为基础工程)。这样移植涉及到多个源文件内部的更改,所以直接拷贝覆盖app及profile两个文件夹即可。注意ld、Startup文件夹不要复制过去,其中包含了OTA的配置;移植后的工程运行中不要触发OTA升级功能。如果需要低功耗节点功能,也请按上面的步骤④~⑦进行修改。

posted @ 2023-03-31 15:29  JayWell  阅读(1144)  评论(0编辑  收藏  举报