PAN211x 跳频参考

1 跳频介绍

为了增强 2.4G 通信的抗干扰能力,在系统中引入了跳频策略。在频点选择时,一般会在 2.4G 低、中、高区域分别选择 1~2 个频点,避免被同时干扰。

跳频的方式多种多样,请根据具体实际应用情况进行选择和调整。本文档描述了两种简单的跳频方式,仅供参考。

2 跳频

2.1 被动跳频

被动跳频是一种当链路丢失,收发双方才会按照约定频率表及规则跳频的一种通信方式。eg:TX 和 RX 使用的频率表为{CH1,CH2,CH3}。

TX:每 TX_T(10ms)发射一次数据,使用增强模式,发射完成后检查是否有收到回应的 ack 信号,如果有,就不进行跳频。如果未收到应答 ack,则跳到下一个频点。

RX:RX 端原则上一直处于接收数据的状态(使用 IRQ 或者查询 status 寄存器判断是否有收到数据),如果 RX_T(10ms,从上一次收到数据开始计时)内未收到数据,则跳到下一个频点,同时丢包计数 RX_LOST 加一,当 RX_LOST 达到指定数目后(比如 3,RX_T_OUT 为 30ms),RX 每隔RX_T_SCAN(30ms)切换一次频点。如果 RX 收到数据,则不进行跳频处理,并且清空之前的丢包计数 RX_LOST 值,重新开始计时 RX_T(10ms),判断是否有数据丢失。

(1) 假设当前 TX,RX 工作在 CH1 上,而且 CH1 信道通信良好,没有丢包产生,那么时序如下

所示:

passive_hopping_normal_communication

(2) 通信中 TX 发数据到 RX 丢失,但是丢包数小于 RX_LOST,如下所示:

passive_hopping_packet_loss_below_threshold

(3) 通信中 TX 发数据到 RX 丢失,并且丢包数达到最大值(比如 3),链路丢失。RX 开始连续监听 RX_T_SCAN(30ms),直到再次通信上,如下所示:

passive_hopping_link_lost_scan_mode

(4) 在该通信中,TX 发射数据到 RX,RX 回应 ack 丢失,会造成一段时间内 TX 和 RX 频点错开,直到链路丢失,需要再次同步,如下所示:

passive_hopping_ack_loss_desync

在上述跳频机制中,TX _T,TX _T,RX_T_OUT,RX_T_SCAN 可根据实际需求设置,原则上TX _T=RX_T,RX _T<RX_T_OUT。

2.2 主动跳频

主动跳频是一种无论链路是否丢失,收发双方都会按照约定频率表及规则跳频的一种通信方式。

eg:TX 和 RX 使用的频率表为{CH1,CH2,CH3};

TX:每 TX_T(10ms)发射一次数据,数据长度为 8bytes,前 7bytes 为应用数据,最后 1bytes 为跳频信息标记数据,分别为 1,2,3 循环。

active_hopping_tx_sequence

即 TX 端每一个发射周期为 TX_HP_T(30ms),每个周期内发射三次数据,三次数据的序列号分别为 1,2,3,每一个周期结束后切换一次频点。

RX:RX 端原则上一直处于接收数据的状态(使用 IRQ 或者查询 status 寄存器判断是否有收到数据),如果收到了发射周期中的序列号为 1 的数据包,则在 25ms 之后切换频点,如果收到了序列号为 2 的数据包,则在 15ms 之后切换频点,如果收到了序列号为 3 的数据包,则在 5ms 之后切换频点。如果在 RX_T(10ms,从上一次收到数据开始计时)内没有收到数据,数据以RX_HP_T(30ms,从上一次切换频点后开始计时)间隔跳频,同时如果在 RX_T 内没有收到数据,丢包计数 RX_LOST 加一,当达到丢包最大数目后(比如 10,RX_T_OUT 为 100ms),RX 开始以100ms 的间隔跳频,直到再次同步。

(1)假设当前通信的频点 CH1,CH2,CH3 都通信良好,没有丢包,时序如下所示:

active_hopping_normal_communication

(2)假设通信当中有数据包丢失,但是没有达到 RX_T_OUT。

active_hopping_packet_loss

应用中,TX_T,RX_T,TX_HP_T,RX_HP_T,RX_T_OUT 的值可根据实际情况设置。

2.3 总结

主动跳频和被动跳频各有优劣,应根据实际应用选择,另外上述也只是实现了一个略微粗糙的跳频机制,用户可根据实际情况加以优化。