Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
WIFI模块_RW007
BLE主机
RW007 高速WiFi模块 开启 BLE 主机通信功能示例
发布于 2021-04-10 18:33:47 浏览:1189
订阅该版
[tocm] # RW007 高速WiFi模块 开启 BLE 主机通信功能示例 由于`RW007`模块默认没有开启`BLE`功能,使用`BLE`功能,需要根据下面的步骤进行操作。 ## 步骤1:更新 `RW007` 模块的固件 由于默认`RW007`模块的固件不支持`BLE`主机功能,所以需要使用相关的升级工具进行升级。具体操作请参考附件中对应的文档进行操作。 ## 步骤2:更新主机的 `RW007`软件驱动包 由于`v2.0.1 `版本的`RW007`软件驱动包中,不包括`BLE`功能,所以需要手动更新`RW007`的软件驱动包,请使用提供的软件驱动包替换到主机软件包的目录下。 ## 步骤3:测试`RW007`模块的`BLE`功能 根据前面的操作步骤,确保`RW007`模块自身的固件已经更新和`RW007`驱动软件包已更新替换到使用的工程中,在提供的软件驱动包中,已经包含了部分 `BLE`功能的测试命令,可以在串口调试中通过`msh`命令,进行调试。 ``` msh />rw007_ble [rw007_ble command] rw007_ble help rw007_ble init central/peripheral Note: init ble mode rw007_ble get_addr Note: get ble address rw007_ble update_params Note: update connect parameters(no support) rw007_ble scan Note: scan ble slave rw007_ble stop_scan Note: stop scan rw007_ble connect xx:xx:xx:xx:xx:xx Note: use slave addr to connect rw007_ble disconnect [conn_handle] Note: disconnect slave rw007_ble get_server Note: discover all server(no support) rw007_ble get_char Note: discover all description(no support) rw007_ble get_disc Note: discover all characteristic(no support) rw007_ble mtu_exch Note: ble mtu exchange(no support) rw007_ble notify Note: enable ble notify(no support) rw007_ble write Note: ble write data(no support) rw007_ble read Note: ble read data(no support) rw007_ble notify_change [conn_handle] [char_value] [UUID] Note: ble notify configure by uuid rw007_ble write_uuid [conn_handle] [UUID] [data] Note: ble write data by uuid rw007_ble read_uuid Note: ble read data by uuid(no support) msh /> ``` 如上可知,有部分`BLE`功能暂时还没支持的,下面将详细说一说`BLE`测试命令的使用。 ### BLE 功能初始化 `BLE `功能初始化函数,使用 `BLE`功能必须调用。 - 1.`RW007`BLE 设备初始化为主机设备。 ``` rw007_ble init central ``` 测试示例 ``` msh />rw007_ble init central 122 - ble_cmd_init start ble central msh /> ``` - 2.`RW007`BLE 设备初始化为从机设备 注意:目前不支持使用从机模式。 ``` rw007_ble init peripheral ``` ### BLE 功能获取本机的BLE设备地址 由于BLE设备的地址分为`public`公共地址和`random`随机地址。 ``` rw007_ble get_addr ``` 测试示例: ``` msh />rw007_ble get_addr 273 - ble_cmd_get_addr msh />resp_type: 0, len: 12 RW007_BLE_RSP_TYPE_ADDR_GET public_id_addr = 48:00:42:8c:47:c9 random_id_addr = 00:04:5c:43:00:00 ``` ### BLE 功能扫描设备 目前`RW007`BLE 功能支持通过 `scan`命令,扫描周围的`BLE`设备。 - 1.执行扫描周围`BLE`设备 ``` rw007_ble scan ``` 测试示例: ``` msh />rw007_ble scan 176 - ble_cmd_scan msh />resp_type: 1, len: 65 RW007_BLE_NTF_TYPE_DISCOVER received advertisement; event_type=0 rssi=-60 addr_type=0 addr=4c:ed:fb:00:04:b1 resp_type: 1, len: 56 ``` 这里的 `addr`地址内容可以为后面连接设备使用,由于目前没有直接显示对应 BLE 设备的名称,需要先人工确定 BLE 设备的地址。 - 2.停止扫描周围`BLE`设备 该指令用于 `RW007`模块正在执行`scan`扫描操作过程中,马上停止扫描的动作,可以执行此命令。 ``` rw007_ble stop_scan ``` ### BLE 功能设备连接 目前 `RW007` BLE 功能设备支持通过 `BLE`设备的类`mac`地址来连接设备,该命令仅支持主机模式去连接从机设备的类`mac`地址,连接成功后会有对应的`conn_handle`值,这个`conn_handle`值在其他功能沿用。 ``` rw007_ble connect xx:xx:xx:xx:xx:xx ``` 测试示例: ``` msh />rw007_ble connect 4c:ed:fb:00:04:b1 198 - ble_cmd_connect str_addr: 4c:ed:fb:00:04:b1 mac addr: b1: 4: 0:fb:ed:4c msh />resp_type: 1, len: 52 RW007_BLE_NTF_TYPE_CONNECT type: 0, status: 0, conn_handle: 1 resp_type: 1, len: 44 RW007_BLE_NTF_TYPE_CONNECT_DESC our_id_addr: c9:47:8c:42:00:48 peer_id_addr: b1:04:00:fb:ed:4c ``` ### BLE 功能设备断开连接 目前`RW007`BLE 功能设备支持主动断开从设备的连接。 ``` rw007_ble disconnect [conn_handle] ``` 其中 `conn_handle`与 `connect`连接时的需要一致。 ``` msh />rw007_ble disconnect 1 341 - ble_cmd_disconnect msh />resp_type: 1, len: 52 RW007_BLE_NTF_TYPE_DISCONN ``` ### BLE 功能写数据 目前`RW007`BLE 功能写数据,支持通过指定`UUID`来写对应的数据。 ``` rw007_ble write_uuid [conn_handle] [UUID] [data] ``` 指令说明:`[conn_handle]`为 `RW007`连接设备时生成的对应值,`[UUID]`为对应 `BLE`设备的特征参数,`[data]`为需要发送的数据。 测试示例: ``` msh />rw007_ble write_uuid 1 ffe1 Hello,RT-Thread.... 402 - ble_cmd_gattc_write_by_uuid write conn_hanle:1 uuid:ffe1 data:Hello,RT-Thread.... write rc:0 msh /> ``` ![figure1.png](https://oss-club.rt-thread.org/uploads/20210410/16ea8f4417bf506eefe1ac028bb0f746.png) ### BLE 功能更新notify 参数 目前 `RW007` BLE 功能支持修改接收 `notify`参数。 ``` rw007_ble notify_change [conn_handle] [char_value] [UUID] ``` 参数说明: `[conn_handle]`为 `RW007`连接设备时生成的对应值 `[char_value]` 为配置参数,具体如下 ``` 0:disable indication¬ification 1:enable notification,disable indication 2:enable indication, disable notification ``` `[UUID]`为对应 `BLE`设备的特征参数值。 ### BLE 功能关于广播包类型的说明 目前 `RW007` BLE 功能中可以关于广播包 `event`的类型可以分为下面几种。 ``` /* Advertising report */ #define BLE_HCI_ADV_RPT_EVTYPE_ADV_IND (0) #define BLE_HCI_ADV_RPT_EVTYPE_DIR_IND (1) #define BLE_HCI_ADV_RPT_EVTYPE_SCAN_IND (2) #define BLE_HCI_ADV_RPT_EVTYPE_NONCONN_IND (3) #define BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP (4) ``` 广播包结构如下: ``` 广播包结构描述: struct ble_gap_disc_desc { uint8_t event_type; uint8_t length_data; ble_addr_t addr; int8_t rssi; uint8_t *data; /*** * LE direct advertising report fields; direct_addr is BLE_ADDR_ANY if * direct address fields are not present. */ ble_addr_t direct_addr; }; 通过event_type区分出不同的广播包类型,所有类型分为如下几种: /* Advertising report */ 0 : 普通广播数据包 1 : 直接广播包 2 : 扫描请求包 3 : 不可连接广播指示 4 : 扫描响应数据包 ``` 因此,在设备的`scan`扫描回应中可以通过对应的`event_type`来判定是哪种广播包的类型。 在 `RW007`的驱动代码中,可以通过下面的`event_type`来判断是哪种类型的广播包,可以让用户自行实现对应功能。 ``` case RW007_BLE_NTF_TYPE_DISC: { rt_kprintf("RW007_BLE_NTF_TYPE_DISCOVER\n"); .... switch(event_type) { case BLE_HCI_ADV_RPT_EVTYPE_ADV_IND: break; case BLE_HCI_ADV_RPT_EVTYPE_DIR_IND: break; case BLE_HCI_ADV_RPT_EVTYPE_SCAN_IND: break; case BLE_HCI_ADV_RPT_EVTYPE_NONCONN_IND: break; case BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP: break; } .... } ``` 测试示例: - 1.初始化 `RW007`BLE 功能为主机模式。 ``` msh /> rw007_ble init central 263 - ble_cmd_init start ble central msh /> ``` - 2.执行`BLE`扫描指令 ``` msh />rw007_ble scan 318 - ble_cmd_scan msh />resp_type: 1, len: 83 RW007_BLE_NTF_TYPE_DISCOVER received advertisement; event_type=3 rssi=-56 addr_type=1 addr=41:ef:77:50:2b:29 mfg_data = 1e ff 06 00 01 09 20 02 5b 5d cd 33 a4 8c c7 c5 36 ac de 12 ab 17 87 89 e1 84 e9 19 ec c4 ad resp_type: 1, len: 83 RW007_BLE_NTF_TYPE_DISCOVER received advertisement; event_type=3 rssi=-65 addr_type=1 addr=3c:2e:33:ea:8d:aa mfg_data = 1e ff 06 00 01 09 20 02 28 4c cf 9b a7 f2 7d f6 c7 7e d9 54 ac dd 91 a6 ee 0d 22 43 e1 8f e3 resp_type: 1, len: 83 RW007_BLE_NTF_TYPE_DISCOVER received advertisement; event_type=3 rssi=-59 addr_type=1 addr=42:18:ab:80:5c:11 mfg_data = 1e ff 06 00 01 09 20 02 eb bf cf 15 97 aa 50 7f a4 57 25 d9 21 35 71 eb 6f aa a1 56 5c d5 e2 ``` - 3.观察`event_type=`可以确定是哪种广播包类型。 ``` RW007_BLE_NTF_TYPE_DISCOVER received advertisement; event_type=0 rssi=-64 addr_type=1 addr=61:63:46:c3:49:99 mfg_data = 02 01 1a 02 0a 0c 0b ff 4c 00 10 06 00 19 1d 6d 63 18 resp_type: 1, len: 52 RW007_BLE_NTF_TYPE_DISCOVER received advertisement; event_type=4 rssi=-64 addr_type=1 addr=61:63:46:c3:49:99 mfg_data = resp_type: 1, len: 73 RW007_BLE_NTF_TYPE_DISCOVER received advertisement; event_type=0 rssi=-73 addr_type=0 addr=91:21:52:00:4e:b8 mfg_data = 14 ff 4c 00 07 0f 00 02 20 91 21 52 00 4e b8 f5 58 58 3c 39 00 ``` 以上的代码可以在`RW007`的软件驱动包中找到对应的位置,想深入了解的可以仔细阅读。 ## 注意事项: * 1.请确保使用的`RW007`模块带`BLE`功能。 * 2.`RW007`BLE 功能是基于`SPI`模式的,请确保`RW007`模块自身的版本为 `2.0.2`以上的版本。 附件: 链接:https://pan.baidu.com/s/1K2S5OWpPeGTJXkKC-_TV9A 提取码:5v5v
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
shadowliang
Hello,world!!!
文章
10
回答
100
被采纳
6
关注TA
发私信
相关文章
1
wlan设备测试,除了rw007模块,还有哪些可以测试?
2
rw007 开机进不了spi模式
3
RW007wifi模块扫描热点超时的问题
4
stm32f429+RW007 初始化一直失败???
5
RW007 TCP发送数据出现瞬间卡顿问题,请问是怎么回事?
6
关于K210使用RW007的注意
7
RW007 没有作为从机连接手机的例子吗?
8
RW007 运行异常
9
RW007 wifi 模块中断回环电阻的作用?
10
RW007模块有Arduino开发板上的例程吗?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
805
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部