
前面已经分享过部分关于 RW007 模块如何更新的带 BLE 功能的方法,这里也再次分享一下在柿饼派上怎样更新 RW007 固件和更新 RW007 的驱动,并且测试 RW007 的 BLE 功能。
步骤一:柿饼派更新 RW007 的固件
在柿饼派上更新 RW007 的固件,可以参考官方提供的 RW007 通过 UDP_OTA 工具升级 RW007 固件的文档,进行操作。
1. RW007 模块需要和 PC 电脑连在同一个局域网

2. 打开升级工具配置升级
(1)双击运行 udp_ota.exe软件

3. 升级完成
等待进度条完成,然后重启板子。

步骤二:柿饼派修改 SDK 更新 RW007 的驱动
由于需要使用新版本的 RW007 模块的 BLE 功能,所以需要对应更新主机端柿饼派的 RW007 驱动,主要是替换SDK中project\firmware\packages目录下的rw007-latest目录先删除,然后拷贝提供的rw007-v2.0.1文件夹,即可完成替换更新RW007 的驱动。

替换驱动文件后,通过 env 编译柿饼派的固件,然后通过persimmon mod工具更新柿饼派的固件,即可。


步骤三:柿饼派测试 RW007 的 BLE 功能
当按照前面的步骤进行操作后,可以通过调试串口的 msh命令行进行调试。因为在RW007驱动包里面默认开启了相关的功能测试示例,可以在MSH命令行中通过rw007_ble查询。下面的内容来自于官方提供的 RW007 BLE 功能使用说明操作。
1msh />rw007_ble
2[rw007_ble command]
3
4rw007_ble help
5rw007_ble init central/peripheral Note: init ble mode
6rw007_ble get_addr Note: get ble address
7rw007_ble update_params Note: update connect parameters(no support)
8rw007_ble scan Note: scan ble slave
9rw007_ble stop_scan Note: stop scan
10rw007_ble connect xx:xx:xx:xx:xx:xx Note: use slave addr to connect
11rw007_ble disconnect [conn_handle] Note: disconnect slave
12rw007_ble get_server Note: discover all server(no support)
13rw007_ble get_char Note: discover all description(no support)
14rw007_ble get_disc Note: discover all characteristic(no support)
15rw007_ble mtu_exch Note: ble mtu exchange(no support)
16rw007_ble notify Note: enable ble notify(no support)
17rw007_ble write Note: ble write data(no support)
18rw007_ble read Note: ble read data(no support)
19rw007_ble notify_change [conn_handle] [char_value] [UUID] Note: ble notify configure by uuid
20rw007_ble write_uuid [conn_handle] [UUID] [data] Note: ble write data by uuid
21rw007_ble read_uuid Note: ble read data by uuid(no support)
BLE 功能初始化
BLE功能初始化函数,使用 BLE功能必须调用。
1.RW007BLE 设备初始化为主机设备。
1rw007_ble init central
测试示例
1msh />rw007_ble init central
2122 - ble_cmd_init
3start ble central
4msh />
2. RW007BLE 设备初始化为从机设备
注意:目前不支持使用从机模式。
1rw007_ble init peripheral
BLE 功能获取本机的BLE设备地址
由于BLE设备的地址分为public公共地址和random随机地址。
1rw007_ble get_addr
测试示例
1msh />rw007_ble get_addr
2273 - ble_cmd_get_addr
3msh />resp_type: 0, len: 12
4RW007_BLE_RSP_TYPE_ADDR_GET
5public_id_addr = 48:00:42:8c:47:c9
6random_id_addr = 00:04:5c:43:00:00
BLE 功能扫描设备
目前RW007BLE 功能支持通过 scan命令,扫描周围的BLE设备。
1.执行扫描周围BLE设备
1rw007_ble scan
测试示例:
1msh />rw007_ble scan
2176 - ble_cmd_scan
3msh />resp_type: 1, len: 65
4RW007_BLE_NTF_TYPE_DISCOVER
5received advertisement; event_type=0 rssi=-60 addr_type=0 addr=4c:ed:fb:00:04:b1
6resp_type: 1, len: 56
这里的 addr地址内容可以为后面连接设备使用,由于目前没有直接显示对应 BLE 设备的名称,需要先人工确定 BLE 设备的地址。
2.停止扫描周围BLE设备
该指令用于 RW007模块正在执行scan扫描操作过程中,马上停止扫描的动作,可以执行此命令。
1rw007_ble stop_scan
BLE 功能设备连接
目前 RW007 BLE 功能设备支持通过 BLE设备的类mac地址来连接设备,该命令仅支持主机模式去连接从机设备的类mac地址,连接成功后会有对应的conn_handle值,这个conn_handle值在其他功能沿用。
1rw007_ble connect xx:xx:xx:xx:xx:xx
测试示例
1msh />rw007_ble connect 4c:ed:fb:00:04:b1
2198 - ble_cmd_connect
3str_addr: 4c:ed:fb:00:04:b1
4mac addr: b1: 4: 0:fb:ed:4c
5msh />resp_type: 1, len: 52
6RW007_BLE_NTF_TYPE_CONNECT
7type: 0, status: 0, conn_handle: 1
8
9resp_type: 1, len: 44
10RW007_BLE_NTF_TYPE_CONNECT_DESC
11our_id_addr: c9:47:8c:42:00:48
12peer_id_addr: b1:04:00:fb:ed:4c
BLE 功能设备断开连接
目前RW007BLE 功能设备支持主动断开从设备的连接。
1rw007_ble disconnect [conn_handle]
其中 conn_handle与 connect连接时的需要一致。
1msh />rw007_ble disconnect 1
2341 - ble_cmd_disconnect
3msh />resp_type: 1, len: 52
4RW007_BLE_NTF_TYPE_DISCONN
BLE 功能写数据
目前RW007BLE 功能写数据,支持通过指定UUID来写对应的数据。
1rw007_ble write_uuid [conn_handle] [UUID] [data]
指令说明:[conn_handle]为 RW007连接设备时生成的对应值,[UUID]为对应 BLE设备的特征参数,[data]为需要发送的数据。
测试示例:
1msh />rw007_ble write_uuid 1 ffe1 Hello,RT-Thread....
2402 - ble_cmd_gattc_write_by_uuid
3write conn_hanle:1 uuid:ffe1 data:Hello,RT-Thread....
4write rc:0
5msh />
注意:目前已经支持通过 128 位的 UUID 进行写数据操作
测试示例:
1msh />rw007_ble write_uuid 1 ebe0ccbe7a0a4b0c8a1a6ff2997da3a6 00
2data: 00
3write conn_hanle:1 uuid:ebe0ccbe7a0a4b0c8a1a6ff2997da3a6
4write rc:0
说明:
测试示例中的 [conn_handle]为 1,[UUID]为ebe0ccbe7a0a4b0c8a1a6ff2997da3a6,[data]为 0x00(这里是使用 hex 值)
BLE 功能更新notify 参数
目前 RW007 BLE 功能支持修改接收 notify参数。
1rw007_ble notify_change [conn_handle] [char_value] [UUID]
参数说明:
[conn_handle]为 RW007连接设备时生成的对应值
[char_value] 为配置参数,具体如下
10:disable indication¬ification
21:enable notification,disable indication
32:enable indication, disable notification
43:enable indication ¬ification
[UUID]为对应 BLE设备的特征参数值。
BLE 功能关于广播包类型的说明
目前 RW007 BLE 功能中可以关于广播包 event的类型可以分为下面几种。
1/* Advertising report */
2#define BLE_HCI_ADV_RPT_EVTYPE_ADV_IND (0)
3#define BLE_HCI_ADV_RPT_EVTYPE_DIR_IND (1)
4#define BLE_HCI_ADV_RPT_EVTYPE_SCAN_IND (2)
5#define BLE_HCI_ADV_RPT_EVTYPE_NONCONN_IND (3)
6#define BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP (4)
广播包结构如下:
1广播包结构描述:
2struct ble_gap_disc_desc {
3 uint8_t event_type;
4 uint8_t length_data;
5 ble_addr_t addr;
6 int8_t rssi;
7 uint8_t *data;
8
9 /***
10 * LE direct advertising report fields; direct_addr is BLE_ADDR_ANY if
11 * direct address fields are not present.
12 */
13 ble_addr_t direct_addr;
14};
15
16通过

本文详细介绍了如何在柿饼派上更新RW007的固件和驱动,以及测试其BLE功能。首先,通过UDP_OTA工具升级固件,然后替换SDK更新驱动,接着初始化并测试BLE功能,如设备连接、断开、读写数据等。最后,实现了读取米家蓝牙温湿度计数据并显示在界面上的功能。
最低0.47元/天 解锁文章
1622

被折叠的 条评论
为什么被折叠?



