CH573蓝牙通讯及通讯地址如何设置的问题

目前情况是这样:

开发板A为nulticentral程序,作为主机。

开发板b和C为Peripheral程序,作为从机。

目前是在官方的历程上添加了USB虚拟串口的程序,现想实现主机与从机的双向通讯,共有几下几个疑问:

1>在RF_Init(void)函数中的

rfConfig.accessAddress = 0x71764129;表示为要发送给目标设备的地址,那设备本身的地址又要在哪里设置或看到。

2>若设备A需要给B发送完数据后再发送另一组数据给C,期间是否需要对rfConfig.accessAddress进行重新的设置。

3>若有相关的文件说明还请大佬发送一份,谢谢。

目前手上有《沁恒低功耗蓝牙软件开发参考手册》但想不出来如何实现以上的功能,还请大佬进行指点,谢谢!!!!!

首先我们要明确一件事,RF_Init 函数 来源于EVT>EXAM>BLE>RF_PHY 历程,

该历程实现的是简单演示 基于"RF_PHY" 实现之定义数据的收发, 该方式之工作在ble的PHY与mac层,并不受 BLE的时序以及上层协议制约,这意味着, RF_PHY 的已经不再是BLE.


然后回到本贴,

A 为"nulticentral" 我可以理解为是手误是multicentral 的程序,作为主机,

B 是peripheral的程序, 作为从机,

到现在,这些没有什么问题,


但是这两个example的code 中,本身并没有任何地方调用 RF_Init 相关的函数,上面我们也说到,RF_PHY已经不再是BLE,这意味着, 如果是做BLE通信,也并不需要调用这些函数,


蓝牙的通信,必须遵循一系列的流程, 并且受到规范的制约,

作为主机时候, 这些流程包括,:

    扫描识别对应的设备-> 建立连接->查询相关的服务->使能通知(如果需要的话), 

然后才是收发数据.


然后回到你烧录的历程,,这是个一个主机,能够同时连接三个从机的历程,本质上和一个主机连接一个从机的历程没有本质差异,只是在连上一个设备的时候,再去搜索新的设备连接,然后通过连接时候建立的connection_handle 来区分不同的从机仅此而已.

我这里建议你先看看一个主机连接一个从机的历程, 先搞明白整个过程,再去研究收发数据.


至于发送函数之类的你可以看下主机端的这些代码片段:

image.png



好的,谢谢您,我已经根据您的提示看了看这部分代码,现调试结果如下:


目前只连接了acAddr[6] = {0x84,0xC2,0xE4,0x03,0x02,0x02};从机设备,但在调试的过程中还是产生了些疑惑:我不知道这个385行的函数是将数据发到了哪里,

从机那边的五个特征值的数组内均未发现接收到的数据,特向大佬请教,谢谢您!!!

1638626606140019.jpg


还请大佬指明官方例程中,从机接收的数据到哪里了,谢谢您!非常感谢


2.png数据在newValue里面


只有登录才能回复,可以选择微信账号登录