RF_PHY和RF_PHY_Hop两个例程均可以采用这种思路,甚至可以组合使用,比如RF_PHY用来配对,RF_PHY_Hop用来数据通讯,
思路简介:该例程只要收发双方的地址,跳频频道等基础配置项一致即可进行无线通讯,因此可以衍生出其中一种较简单的配对思路,即:
1、初始化代码中使用默认地址,例如0x71764129,这样所有的产品第一次烧录或者初始化之后是可以直接进行通讯的;
2、当使用者触发某种方式进入配对事件后,无线通讯发送方可通过例程中的发送接口将芯片自带唯一mac地址发送给正在通讯对端设备,对端设备收到数据进入2.4G回调(类似于中断)保存下发送方的地址,并将自身唯一mac地址通过函数回发给发送方。
3、这样一来,双方都拥有了对方的mac地址,之后可以对两地址进行一个算法得出最终通讯地址,此阶段称作配对完成,后续只要不触发配对操作就可以一直使用该地址进行通讯,此时两个设备状态为绑定中。
4、本篇讲解只是将双方地址相加,有极小概率会出现地址重复的现象,各位可按照自己的理解进行处理。
CH582EVT例程:https://www.wch.cn/downloads/CH583EVT_ZIP.html
CH592EVT例程:https://www.wch.cn/downloads/CH592EVT_ZIP.html
CH582和CH592以及其他芯片的2.4G库均可以按照此方法进行配置,本篇以CH592为例;
文件所在路径如下:
其中,RF_PHY默认为不跳频的2.4G例程,程序中默认配置在39频道通讯,如需跳频,对自行对初始化参数进行配置,另外RF_PHY_Hop为自动跳频例程,抗干扰能力强。
不管是跳频还是不跳频,我们都可以进行配对绑定操作,
首先我们来看下初始化部分,
1、初始化地址配置,保证所有设备地址一致即可通讯,为32bit地址;
2、通信频道:本例程直接配置39频道,频道为0-39;
3、凡是配置过参数之后需要调用RF_Config函数完成配置,可通过返回值是否为0进行判断配置是否成功,0为成功,非0失败;
4、配置角色为接收者;
5、配置角色为发送者;
6、2.4G为半双工通信;
发送者视角:程序中写的是间隔1s中往对端发送一包数据,
紧接着,来到接收者视角:接收者收到数据会来到2.4G回调函数的RX_MODE_RX_DATA的case中,通过rxBuf获取数据,此时单方向发送数据完成。
如果需要让接收者回复数据给发送者,例程中也写了一个例子,也就是SBP_RF_RF_RX_EVT事件,
我们可以看到,中间有一个关键函数RF_Rx,但是并不表示他是接收数据的函数,相反,他也是一个发送函数,是接收者的发送函数,
这样接收者回了一包数据给发送者,那么我们回到发送者视角,由于发送者是Tx_Mode,当发送者接收到来自于对端发来的数据时,会进入TX_MODE_RX_DATA的case中,同样通过rxBuf获取数据,这样一来一回双方互传数据完成,实际使用中各位可以自行发挥。
这一点也可用作2.4G收发时的应答处理以防出现丢包。
回到开头,我们现在要进行配对,还是以发送者的视角开始,
1、先通过GetMACAddress函数获取芯片自身MAC地址,将数据放入6字节数组中;
2、调用RF_Tx函数发送出去;
3、接收者收到数据保存下地址,并通过RF_Rx函数以同样的操作将自身地址发送出去;
4、发送方收到来自于接收者的地址,双方此时都有对方的地址,可以进行做算法处理,完成绑定;
5、获取最终通讯地址后,需要对BLE库,RF库以及硬件三者进行初始化之后将地址配置进去即可。
标签:例程,PHY,发送者,地址,RF,2.4 From: https://www.cnblogs.com/azou/p/17918626.html