基于Neptune开发板-如何实现BLE功能操作分析 原创 精华

远道可思
发布于 2021-7-10 18:06
浏览
3收藏

润和的Neptune开发板是一款高性价比Wi-Fi&蓝牙双模SoC开发板,基于W800芯片,是一款具有极高性价比与可玩性鸿蒙开发板。因为Neptune开发板具有BLE功能,但却一直无法使用BLE功能,近期通过阅读W800 SDK与润和基于Neptune开发板的键盘蓝牙模块的开源代码,清楚了Neptune开发板如何实现BLE功能。

话不多说,主要操作与分析如下:

一、W800 SDK操作与分析

步骤一:通过git下载W800 SDK

git clone git@gitee.com:wendal/wm_sdk_w800.git

步骤二:进入W800 SDK目录下使用make 命令编译

cd wm_sdk_w800
make

步骤三:将wm_sdk_w800目录下bin/w800中w800.img烧录到Neptun开发板中,烧录完毕后运行如下图:
基于Neptune开发板-如何实现BLE功能操作分析-鸿蒙开发者社区
这里之所以会输出user task 因为wm_sdk_w800/app/main.c 程序中只有这一条printf(“\n user task \n”);运行指令

基于Neptune开发板-如何实现BLE功能操作分析-鸿蒙开发者社区
步骤四:使用W800 SDK中BLE DEMO程序
1.进入wm_sdk_w800/demo/wm_demo.h中
2.将需要使用的DEMO程序由DEMO_OFF->DEMO_ON 修改如下:

8行:#define DEMO_CONSOLE		DEMO_ON
97行 #define DEMO_BT                     (DEMO_ON && DEMO_CONSOLE)

3.使用make 命令编译,烧录,运行如下图:
基于Neptune开发板-如何实现BLE功能操作分析-鸿蒙开发者社区
4.键入t-bt-on先打开蓝牙 后键入t-ble-server-on打开蓝牙服务基于Neptune开发板-如何实现BLE功能操作分析-鸿蒙开发者社区
5.使用nRF Connect APP连接蓝牙 蓝牙默认WM-XX:XX:XX:XX 并发送数据
基于Neptune开发板-如何实现BLE功能操作分析-鸿蒙开发者社区
开发板响应如下:
基于Neptune开发板-如何实现BLE功能操作分析-鸿蒙开发者社区
可以看到下方有发送的数据显示,说明手机与Neptune开发板蓝牙通信有效。
分析:通过对W800 SDK中BT DEMO运行与代码的分析其执行的t-bt-on与t-ble-server-on等执行命令函数来源主要来自于wm_sdk_w800/src/app/bleapp中wm_bt_app.c与wm_ble_server_api_demo.c中demo_bt_enable()与demo_ble_server_on()函数,其中demo_ble_server_on()中tls_ble_server_demo_api_init(NULL);是发起BLE服务函数,若我们想使用BLE只需要参考bleapp中demo新增或修改即可。

二、基于Neptune开发板的键盘蓝牙模块的开源代码的修改并openharmonys中使用W800 SDK/BT DEMO程序

步骤一:通过git下载基于Neptune开发板的键盘蓝牙模块的开源代码(v0.1版本)

git clone -b v0.1 git@gitee.com:hihopeorg/Neptune-HarmonyOS-IOT.git

步骤二:将Neptune-HarmonyOS-IOT/vendor/winnermicro/w800/src目录下app文件夹删除并替换成/wm_sdk_w800/src目录下app文件夹。

步骤三:执行pytho build.py w800命令看是否编译成功若没有编译成功则是上一步骤错误(编译有点慢😂)
步骤四:烧录并运行,运行结果如下:

基于Neptune开发板-如何实现BLE功能操作分析-鸿蒙开发者社区
步骤五:按照上述打开W800 SDK/BT BEMO方法打开DEMO程序,编译并烧录,运行如下图所示:
基于Neptune开发板-如何实现BLE功能操作分析-鸿蒙开发者社区
不知为何手机发送数据Neptune开发板莫有输出?????

分析:通过对上述操作与润和基于Neptune开发板的键盘蓝牙模块的开源代码分析,发现润和基于Neptune开发板的键盘蓝牙模块是基于openharmonyos与下层W800 SDK之间解耦来操作蓝牙等应用,其主要键盘蓝牙模块是操作W800 SDK 中bleapp通过新增ble服务和修改ble demo完成其蓝牙功能,当然也有部分ble相关函数有修改具体部分我还没有阅读到。

附注主要入口与注意事项:
主要入口:
Neptune-HarmonyOS-IOT/vendor/winnermicro/w800/platform/sys/wm_main.c
Neptune-HarmonyOS-IOT/vendor/winnermicro/w800/app/main.c
注意事项:Neptune-HarmonyOS-IOT/vendor/winnermicro/w800/src/app有两个关于蓝牙的操作应用其bleapp目前协议栈用的是新的,其btapp是旧版本。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2021-7-10 18:06:21修改
4
收藏 3
回复
举报
回复
    相关推荐