在反馈重发的方法中,要求接收方收完一个数据包后,向发送方反馈一个接收是否正确的信息,使发送方据此作出是否需要重新发送的决定。发送方仅当收到接收方以正确接收的反馈信号后,才能认为该数据包已经正确发送完毕;否则需要重发直至正确为止。
自动重发的应用场景,就是在物理信道的突发噪声(或其他干扰)可能完全淹没一数据包,使得整个数据包或反馈的应答包丢失。这将导致发送方永远收不到接收方发来的信息,从而使传输过程停滞。为了避免出现这种情况,通常引人定时器(Timer)来限定接收方发回反馈消息的时间间隔,当发送方发送一个数据包的同时也启动定时器,若在限定时间间隔内未能收到接收方的反馈信息,即定时器超时(Time out),则可认为传出的数据包已出错或丢失,需要重新发送。
另外,由于同一包数据可能被重复发送多次,就可能引起接收方多次收到同一数据包,而造成重复接收。为防止这种情况发生,可以采用对发送的数据包编号的方法,即赋予每个数据包一个序号,从而使接收方能从该序号来区分是新发送来的数据包,还是已经接收但又重发来的数据包,以此来确定要不要将接收到的数据包递交给下一步的处理。通过使用计数器和序号来保证每个数据包最终都能被正确地递交一次。
在nRF芯片内部,已经集成了完全由硬件来完成的与反馈重发和自动重发机制相对应的功能,包括CRC生成与校验,以及防止重复接收等功能,即增强型ShockBurst功能,这些功能只需要通过对相关寄存器的设定即可实现,大大减轻通信协议软件开发的工作量。
展开