一开始接触到nRF24L01,Datasheet中大量提到Enhance ShockBurst 模式的好处,但是就是不明白这到底是一个什么模式,这些优点是相对于什么模式而言的,如果不适用Enhance ShockBurst模式,那么传输使用的是什么模式呢?
通过认真阅读Datasheet和官方的Demo程序,对于ShockBurst与Enhance ShockBurst的区别,我的理解如下,相对于ShockBurst 模式 Enhance ShockBurst 模式增加了自动应答和自动重发功能。
nRF24L01+芯片有2种通信模式:ShockBurst? Mode(突发模式)和Enhanced ShockBurst Mode(增强式突发模式)。当在ShockBurst Mode下芯片自己完成需要高速处理的RF协议,发送数据时只需要将数据放入发送数据缓冲区,芯片会自动产生PREAMBLE和CRC数据并将这些数据和地址信息、发送数据缓冲区的数据等组成一个数据包发送出去,这个数据包的组成为“1字节字头 + 3~5字节地址 + 9bit标志位 + 1~2字节CRC”。配置为接收数据的nRF24L01+接收到数据包后由硬件解析地址数据和数据信息,当接收到有效的数据信息后在IRQ引脚产生中断通知外部处理器读走数。
Enhanced ShockBurst Mode比前一种多了数据传输的握手信号可以保证数据传输的可靠性。当配置为Enhanced ShockBurst Mode,nRF24L01+发送数据后会自动切换到接收模式以接收返回的握手信号,当收到确认信号后IRQ引脚产生数据发送完成中断,如果没有握手信号返回表示发送失败,芯片会自动重新发送。如果重新发送的次数超过在ARC_CNT寄存器里面设定的值则会在IRQ引脚产生中断。MCU查询STATUS寄存器的值即可知道是发送完成中断还是重发次数超限中断。
推荐将nRF24L01+配置工作于Enhanced ShockBurst?模式,这种工作模式下,系统的程序编制会更加简单,并且稳定性也会更高。
联系客服