首页 > 其他分享 >CH582,CH583,CH32V208等IC低功耗蓝牙系列2.4G例程RF_PHY/RF_PHY_Hop配对示例

CH582,CH583,CH32V208等IC低功耗蓝牙系列2.4G例程RF_PHY/RF_PHY_Hop配对示例

时间:2023-12-21 11:56:33浏览次数:49  
标签:例程 PHY 发送者 地址 RF 2.4

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

相关文章

  • 【go】Go (Golang) 语言-Golang 定时器Timer和Ticker、time.AfterFunc、time.NewTicke
    Golang定时器Timer和TickerGolang定时器包括:一次性定时器(Timer)和周期性定时器(Ticker)。编程中经常会通过timer和ticker、AfterFunc定时器NewTicker是设定每隔多长时间触发的,是连续触发,而计时器NewTimer是等待多长时间触发的,只触发一次,两者是不同的。等待时间函数AfterFunc是......
  • drf之序列化类
    序列化类介绍1序列化qs对象,单个对象做序列化给前端2反序列化数据校验:前端传入数据---》校验数据是否合法3反序列化---》前端传入数据,存到数据库中#因为咱么在写接口时,需要序列化,需要反序列化,而且反序列化的过程中要做数据校验---》drf直接提供了固定的写法,只要按照固......
  • 【HTB】Sherlocks Hyperfiletable 蓝队 easy
    工具:analyzeMFT.py:https://github.com/dkovar/analyzeMFTanalyzeMFT:https://ericzimmerman.github.io/#!index.mdTask1问题:MFT的MD5哈希值是什么?certUtil-hashfilemft.rawmd5答案:3730c2fedcdc3ecd9b83cbea08373226Task2问题:系统上唯一用户的名称是什么?用anal......
  • WRF------------单层水汽通量
    `;--------------------------------WRFOUTD01a=addfile(".nc","r")u=wrf_user_getvar(a,"ua",-1)v=wrf_user_getvar(a,"va",-1)p......
  • drf
    Web开发模式前后端混合开发模式:前端写模板,后端处理完数据再渲染后再传给前端展示效果前后端分离开发模式:前端发送请求把数据传给后端,后端查询数据处理完以json格式返回给前端,前端渲染完展示页面API接口API四大特点#api接口:通过网络,规定了前后台信息交互规则的url链......
  • drf之APIView分析与Request分析
    一、APIView执行流程分析1.1基于APIView+JsonResponse编写接口#原来基于django原生的View编写接口#drf提供给咱们的一个类,以后使用drf写视图类,都是继承这个类及其子类,APIView本身就是继承了Django原生的ViewclassBookView(APIView):defget(self,request):......
  • 基于Tensorflow技术开发的计算机毕业设计辅助生成器(使用AI大模型技术)
    这是一个辅助生成计算机毕业设计的工具,可以自动完成毕业设计的源码。它基于几百个github上面开源的java和python项目,运用tensorflow技术,训练出了AI大模型。基本实现了计算机毕业设计生成器,能够初步生成Java或python基本源码。目前该项目处理实验阶段,还不成熟,成功率55%左右。体......
  • Unity 3D定点数物理引擎实战系列1.1BEPUphysicsint 3D定点数物理引擎介绍
    1.1BEPUphysicsint3D定点数物理引擎介绍对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀帧同步的游戏中如果用物理引擎,为了保证不同设备上的结果一致,需要采用定点数来计算迭代游戏过程中的物理运算。也就是我们通常说的定点数物理引擎(确定性物理......
  • dockerfile构建镜像
    定制docker镜像的方式有两种:手动修改容器内容,导出新的镜像(前面超哥讲dockersave等)基于Dockerfile自行编写指令,基于指令流程创建镜像。dockerfile简介 镜像是多层存储,每一层在前一层的基础上进行修改;容器也是多层存储,以镜像为基础层,在其基础上加一层作为容器运行时的存......
  • drf入门到精通 day3
    APIView执行流程分析1在路由中:path('books/',views.BookView.as_view()),请求来了#2先看as_view()---->APIView的as_view---》as_view执行结果跟之前一样,去除了csrf认证@classmethoddefas_view(cls,**initkwargs):view=super().as_view(**initkwa......