打印
[单片机芯片]

沁恒ble蓝牙主从发数据回复写入错误

[复制链接]
1873|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
五香豆腐脑|  楼主 | 2023-10-30 16:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在调试沁恒BLE蓝牙协议栈中,使用官方主机例程Central和从机Peripheral例程试跑主从通信。正常跑通后,主机例程同样使用Central,从机使用BackupUpgrade_OTA例程,并修改主机和从机的UUID,烧录板子后能连接但是主机发送数据到从机,主机回复write error:01,其中 “ 01 ”根据库里的说明为 “给出的属性句柄在此服务器上无效”,请问各路大神,在从机例程BackupUpgrade_OTA上应如何配置OTA通道才能正常与主机通信(如果用手机APP是可以正常通信的)?

主机UUID修改:
// Simple Profile Service UUID
#define SIMPLEPROFILE_SERV_UUID 0xAA00

// Key Pressed UUID
#define SIMPLEPROFILE_CHAR1_UUID 0xAA01
#define SIMPLEPROFILE_CHAR2_UUID 0xFFE2

从机UUID修改:
// OTA 服务的UUID定义
#define OTAPROFILE_SERV_UUID 0xAA00

// OTA 通讯通道UUID定义
#define OTAPROFILE_CHAR_UUID_01 0xAA01
#define OTAPROFILE_CHAR_UUID_02 0xAA02
#define OTAPROFILE_CHAR_UUID_0F 0xAA0F

运行结果及报错内容 :

主机报错返回:
收←◆Write Error: 01

我的解答思路和尝试过的方法

根据从机Peripheral例程对比,以找出缺失的配置,但都没有任何作用

我想要达到的结果

从机Peripheral例程中两个蓝牙通道,可我只想要OTA通道能与主机配对并发送数据(不是和手机APP,和手机APP是可以正常通信的)


使用特权

评论回复
沙发
2539752622| | 2023-10-30 17:22 | 只看该作者
backup例程是可以直接使用BLE调试助手连接,如需要升级则需要使用特定的APP:
https://www.wch.cn/downloads/BLE_OTA_Android_ZIP.html
基于你上面提到的使用central进行连接并传输升级的数据,可以理解为将APP切换为central实现升级的功能。
可以先用BLE调试助手连接,查看最后一个unknown service对应UUID和通道属性。记录后将UUID填写到central的SIMPLEPROFILE_SERV_UUID,然后是获取到对应的handle值,注意handle的正确与否决定了连接是否可以透传。
可以先使用例程,填写好UUID后直接查看是否可以获取到write的handle值;或者是抓包查看手机APP连接从机的handle值,然后直接填写到central中并手动调用START_READ_OR_WRITE_EVT这个tmos任务;或者将从机的所有handle枚举出来,并针对write的那个handle值进行写数据,可以留下邮箱,提供一份枚举的代码进行参考。
上述的操作相对是比较复杂的,建议可以找2块开发板,分别烧录central和peripheral进行数据透传,简单跑一下功能进行了解。

使用特权

评论回复
板凳
foliages| | 2023-10-30 19:28 | 只看该作者
没有玩过沁恒的,板子,不知道怎么样

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝