这个宏一直获取为0,是否表示不支持ble4.0呢?
问题中所提的btapp,即是使用传统蓝牙的库,传统蓝牙的库也是支持BLE的。使用测试如下:
1.使用的SDK是V1.0.4版本--wm_sdk_w800_20211203.rar。
2.换SDK的蓝牙库:
a.在lib目录下需要把libbtcontroller_br_edr.a和libbthost_br_edr.a改为libbtcontroller.a(替换
掉旧的库)和libbthost.a
b.toolsw800.config屏蔽这行CONFIG_W800_USE_NIMBLE---#CONFIG_W800_USE_NIMBLE=y
c.ldw800gcc_csky.ld连接文件加大代码区---LENGTH = 0x120000改为0x140000
d.includewm_config.h配置使用传统BT库同时支持BLE:
#define TLS_CONFIG_BR_EDR CFG_ON
#define TLS_CONFIG_BLE CFG_ON
e.demowm_demo.h把DEMO_CONSOLE宏打开DEMO_ON,把蓝牙DEMO打开DEMO_BT宏
#define DEMO_CONSOLE DEMO_ON
#define DEMO_BT (DEMO_ON && DEMO_CONSOLE)
f.修改以上地方后,先编译库---make lib,再make.
代码修改参考截图:
3.生成固件后烧录测试log如下:
a.复位后,使用串口控制台指令测试发广播:循序执行截图中的两条命令---成功后手机nrf connectAPP能搜索到设备
b.复位后,使用串口控制台指令测试SERVER设备:循序执行截图中的两条命令---成功后手机APP能连上SERVER设备,发送通讯数据。
可以支持,SDK里面有两套蓝牙协议栈,默认用的是NimBLE蓝牙协议栈,只支持BLE,而另外一个蓝牙协议栈支持BT和BLE,相对编译后的固件也会大一些,可以通过宏定义选择。两个蓝牙协议栈分别参考以下两个文档:
差点就要选其他芯片了。明天继续评估这个芯片。