2.4G讲解(二)

前言:

 CH58x 是集成 BLE 无线通讯的 RISC-V MCU 微控制器。在进行无线数据传输时,优先考虑BLE的方式。

BLE传输一定要考虑到连接间隔,即使间隔最小设置7.5ms传输一包数据,回报率在130Hz左右。用户如果有更大数据量需求,BLE无法满足,需要考虑其他的无线方式,也就是2.4G的方式,2.4G无线传输可以达到1kHz左右,底层定义uint8,接入地址占用4字节,因此最大一包为251(255-4)字节。

在实际使用时BLE的无线传输速度有限,需要进行大量的数据进行透传使用BLE方式难以实现,可以考虑2.4G的方式进行处理。

前篇博客针对2.4G的基本概念做了简单讲解:2.4G讲解(一) - SweetTea_lllpc - 博客园 (cnblogs.com)

本篇博客针对CH58x芯片的2.4G功能做讲解。

一、CH58x芯片2.4G参数

2.4G收发端首先需要配置为收发端参数均相同:接入地址(accessAddress);CRC校验(CRCInit);信道(Channel)或者频率(Frequency)。设置为相同则可以实现在对应频段上进行通信。需要注意Channel和Frequency只能二选一,官方例程中默认是在2480000频段工作。

模式分为basic和auto模式。basic模式发送后无回包;auto模式发送后自动切换到接收状态,接收后自动切换到发送状态,从发送切换到接收需要时间,不超过200us,而且数据需要提前准备好,对于2.4G 1K/s的上报率会浪费带宽。官方例程默认使用basic模式。如果使用basic模式进行回包需要手动进行处理。

在每一次切换状态都需要进行RF_Shut,方便下一次的收发。

RF_HOP方式是自动跳频,因此必须为AUTO模式。跳频的信道可以选择0-31。如rfConfig.ChannelMap=3,代表使能1/2信道,如=4则代表使能2信道。

二、一收多发概念

(1)RX端与TX端非长供电:X端与ABC端 

X端需要发送信号给ABC端,因此ABC端需要处于长接收的状态。X端发送信号给ABC端的目的是共同约定RTC的时间点,如设置时间点为10点,设置完成后ABC端需要返回信号给X端,X端收到ABC返回的信号后给ABC端进行编号并发送编号给对应的ABC端,目的是约定不同的时间点进行数据的收发。

总结而言以上的目的是约定一个共同的时间;编排好收发双方的编号;约定好一端与另一端收发的时间点。

如X端与A端在10点进行收发,收发完成后睡眠;X端与B端在11点进行收发,收发完成后睡眠。以此类推...

(2)RX与TX一端长供电:三模键盘/电子价签

2.4G键盘举例,Dongle一直长供电,不会进入睡眠。此时按下键盘按键,键盘先被唤醒,醒来后直接与Dongle进行数据收发即可。

电子价签方案基本原理:主控制设备一直往外发包不睡眠。其他的从机设备可以设置睡眠并控制1s醒来1次。则主机针对A从机设备发送1s不停歇数据,可以确保A从机收到,并及时返回数据。A从机接收到数据之后并返回ACK后,再针对B从机做相同的流程。

三、跳频

跳频的例程是建立在auto(自动)模式基础上。

基于 RF Auto 模式设计的自动跳频方案,可有效解决 2.4GHz 信道的干扰问题。

如下图所示1,2,3分别代表的是工作频点1,2,3,这样会有可能出现接收端始终接收不到发送端的信号。

若是接收端的单个频点接收时间大于等于发射端每个频点都发送一次数据的话,无论发射端在哪个频点发送,接收端在哪个频点接收,一个循环下来肯定能进行过一次通讯。如下图所示

 

CH58x跳频处理:

共同约定好特定的频段(Frequency)或信道(Channel)进行跳频,如1/2/3/4/5的Channel,先在Channel1通信,隔100ms跳频到Channel2通信,依此类推...

需要提前做好通信失败恢复措施,如按照时间点应在Channel3通信,但TX给RX发数据一直得不到回应,则将两端都恢复到某一个特定的Channel,重新进行通信并管理跳频。

CH58x通过RF_FrequencyHoppingTx(16)函数进行管理跳频,TX端跳频成功后,进行发送数据,同时需要对方返回数据,如果在参数16ms内没有收到返回数据,则代表RX端没有跳频成功,此时TX端需要进行等待。

  • RF_FrequencyHoppingTx(15):可以理解为跳频到新频段后。发送1次数据,却没有收到返回数据。则再次发送,一直没有收到返回数据。则总共发满15次,还没有收到数据,则过100ms后再进行下一次的发送数据。
  • RF_FrequencyHoppingRx(100):可以理解为跳频到新频段后,100ms内没有接收到数据,则过100ms后再进行下一次的等待。

基于跳频概念的一收多发也是与非跳频的处理方式类似,只是在二(1)的基础上添加了跳频的判断处理。

 

RF_PHY_Hop例程中Tx与Rx模式切换时间(收发器切换时间)与蓝牙协议一致,切换间隔固定为150us左右。

RF_PHY例程是可以手动切换模式的,因此可以做的很低,但是考虑到调用Tx或者Rx函数之后需要有一个稳定时间,建议至少延迟100us之后再做Tx或者Rx的切换 。

建议使用GPIO翻转查看时间。

 

收发切换时间:

切换间隔固定为150us左右(手动模式,发0长度包,代码里面拉IO去测)。如果是1Mbps发送,那么1个位就是1us(发包固定有10字节消耗,也就是80us)时间差不多就是200+80+payload*8)us。

posted @ 2022-12-26 17:31  SweetTea_lllpc  阅读(1134)  评论(0编辑  收藏  举报