前面已经分享过部分关于 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.RW007
BLE 设备初始化为主机设备。
1rw007_ble init central
测试示例
1msh />rw007_ble init central
2122 - ble_cmd_init
3start ble central
4msh />
2. RW007
BLE 设备初始化为从机设备
注意:目前不支持使用从机模式。
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 功能扫描设备
目前RW007
BLE 功能支持通过 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 功能设备断开连接
目前RW007
BLE 功能设备支持主动断开从设备的连接。
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 功能写数据
目前RW007
BLE 功能写数据,支持通过指定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:ebe0ccbe7a