基于nRF24L01的一种无线通信协议设计
2011-03-06李德敏张谦益
杨 旭,李德敏,张谦益
(东华大学 信息科学与技术学院,上海 201620)
0 引言
无线中短距离通信是当前的一个“热点”,越来越多的人开始关注这一领域。作为较早进入国内市场的中短距离无线收发芯片之一,来自北欧挪威的nRF无线芯片已经得到市场的认可及广泛的应用,如已被大家所熟悉的低频段的nRF9xx系列,以及2.4 GHz频段的nRF24xx系列。在2.4 GHz的工科医用频段,低频段信道带宽少,传输速率低的缺点已经不复存在,如何保证通信系统的完整性,稳定性,提高服务质量成为nRF24xx系列通信协议研究的重点[1]。
现有 nRF24L01协议基于停止等待自动重传请求协议(SW-ARQ, Stop and Wait-Automatic Repeat Request),但是在大量数据需要通信传输时(如实时语音通信),采用这种方式,在信道良好的情况下重复发送确定应答(ACK,ACKnowledgement Character)信号会导致前向频带的通过率低,系统传输帧所需时间长[2]。而文献[2]提出的一种基于nRF24xx的混合无线通信协议,当信道通信质量高的时候,采用连发方式,质量较差的时候则回到握手方式,也不能很好满足实际需求。针对这些不足,基于 nRF24L01,现提出一种连续传输、SW-ARQ检验通信质量的通信协议。在检测到信道可以通信的情况下,使用连续传输的方式实现通信,然后在利用 SW-ARQ重传出错数据包的过程中,对信道通信质量进行评估,如果通信质量差,则跳频再继续进行通信。这样在保证通信质量的前提下能更好地提高系统的通过率,减少通信传输所需的时间。
1 nRF24L01 模块简介
[3]。nRF24L01 是一款工作在2.4~2.5 GHz世界通用工科医用频段的单片无线收发器芯片。工作电压为1.9~3.6 V, 有多达125个频道可供选择。可通过SPI总线写入数据,最高可达10 Mb/s。数据发送传输率最快可达2 Mb/s。与其他nRF24xx系列的芯片相比,nRF24L01新增了两大功能:①内嵌的自动应答和自动重发功能;②载波检测(CD,Carrier Detect)功能。另外,在增强型突发(ShockBurst)工作模式下,数据包的结构也作了一些改变。
1.1 自动应答和自动重发功能
相对于其他nRF24xx系列芯片的ShockBurst工作模式,nRF24L01的增强型ShockBurst工作模式主要体现在其集成了所有高速链路层操作,比如,自动应答和自动重发。这样,不但减少了MCU的工作量,而且便于软硬件的开发。
自动重应答功能和自动重发功能可以通过 SPI口对nRF24L01的寄存器进行配置,决定是否开启。在自动应答模式使能的情况下,收到有效的数据包后,系统将进入发送模式并发送确认信号。发送完确认信号后,系统进入正常工作模式。
1.2 载波检测功能
当接收端检测到射频范围内的信号时将 CD 置高,否则CD 为低。内部的CD 信号在写入寄存器之前是经过滤波的,内部CD 高电平状态至少保持128 us以上。
在增强型 ShockBurst模式中只有当发送模块没有成功发送数据时,推荐使用CD检测功能。如果发送端相应的寄存器显示数据包丢失率太高时,可将其设置位接收模式检测CD值,如果CD为高说明通道出现了拥挤现象,需要更改通信频道。如果CD为低电平状态(距离超出通信范围),保持原有通信频道。
1.3 增强型ShockBurst的数据包结构
nRF24L01的数据帧由前置码、地址码、包控制段、有效载荷、循环冗余校验五部分组成,如图1所示。
图1 增强型ShockBurst的数据包结构
与于其他nRF24xx系列芯片的ShockBurst的数据包结构相比,nRF24L01增加了一个9 bit大小的包控制段,通过包控制段中的数据包标志码(PID , Packet IDdentifier),可以将不同的数据包进行识别。
2 协议设计
在部分请求重传 ARQ差错控制体制的基础上[4],结合nRF24L01芯片的功能,设计了一种使用连续发送和SW-ARQ反馈信道质量的通信方式。这里需要注意的是,根据nRF24L01芯片的特点,它只能同时存储3个数据包。同时在接受端还需设置一个用来记录数据包ID号的PID寄存器,用来反馈数据包的接收情况。下面叙述系统的工作过程。
2.1 连续发送数据包状态
系统在建立连接之后,进入连续发送数据包的状态。对于发送端,MCU输出的有效载荷经 nRF24L01打包处理后,发送至接收端,这里在数据包的控制段设置接收端不需要回执。当送完M个码字后,发送端转到SW-ARQ工作状态。对于接收端,nRF24L01接收到数据包之后,通过检测数据包的前置码、地址码、循环冗余校验,也就是对码的工作,确定数据包的正确性[5]。在确认无误之后,通知 MCU接收数据包的有效载荷和数据包控制段的PID号。当接收端收到M个数据包之后,转到SW-ARQ工作状态[6]。
2.2 SW-ARQ工作状态
在此工作状态下,接收端的工作过程取决于MCU中的PID寄存器,如果相应位全为1,表示M个数据包都接收成功,则发送一个ACK给发送端,通知其继续发送新的M个数据包。如果PID寄存器相应位不全为1,则表示传输过程中有数据包出现错误,接收端则将PID寄存器中的数据作为有效载荷,打包回执给发送端。发送端接收到该回执信号后,使用SW-ARQ方式将出错的数据包重发。在这个过程当中,系统还要根据重发同一数据包的次数,判断信道的可用性。如果同一数据包发送次数超过设置值,接收端将开启CD检测,判断信道的质量情况,如果信道忙,则按照预设的跳频表跳到另一个通信频道。如果信道不忙,则继续使用该信道。图2、图3分别是发送端流程图和接收端的流程图。
图2 发送端流程
3 协议的性能分析
为便于分析,定义下列概率事件:A事件表示数据包在正向信道上传输正确,接收端能正确接收到数据。B和C事件分别表示出现可检错误和不可检错误。Y和N事件分别表示反向信道上传输回执信号正确和错误[4]。根据系统的工作原理可知,当发送一个数据包时,有且只有事件A,BY、BN和C之一发生,分别设概率为Pa,Pby,Pbn,Pc。
(1)误码率PR
系统正确接收数据包的概率为:
所以误码率为:
图3 接收端流程
因为通信环境是固定的,所以各种概率事件发送的概率都是相同的,所以本协议的误码率与握手协议的误码率、协议[2]的混合协议的误码率都是一样的。
(2)通过率
先求在一个连续发送组中的 M 个数据包的平均发送次数。假定n为数据包的长度,K为有效负载的长度,R为传输速率,T为在SW-ARQ状态下的环路延时时间。由于每个数据包在每次发送后,重发的概率为 Pb=Pby+Pbn,所以 M个数据包的平均发送次数为:
图4 通过率比较
(3)平均传输时间
设系统在纯 SW-ARQ方式中传输一个数据包所需时间为T,则有:
图5 平均传输时间比较
4 结语
提出的这种传输协议适用于有大量数据需要实时传输的场合。同时利用nRF24L01的载波检测功能,在信道质量不好的情况下进行调频传输,这样就能有效避免其他 2.4 G系统的影响。通过仿真证明这种通信协议要比原协议在通过率和平均传输时间上具有优势。
参考文献
[1] Nordic VLSI ASA.nRF24xx Link Integrity[EB/OL].(2003-04-01)[2010-10-09].http://www.semiconductorstore.com/Pages/Items/ Nordic/attachments.asp.
[2] 蒋增文,张莉萍,李德敏,等.一种基于nRF24xx的混合无线通信协议[J].通信技术,2010,43(10): 78-80.
[3] Nordic VLSI ASA.nRF24L01 Single Chip 2.4GHz Transceiver Product Specification[EB/OL].(2007-07-11)[2010-10-09].http://www.semiconductorstore.com/pdf/newsite/nordic/nRF24 L01.pdf
[4] 赵晓群,方勇,王仲文 .一种新型ARQ体制[J] .通信学报,1992,13(03) :88-92.
[5] 刘建华,陈继荣.基于 nRF24E1 的无线通信协议设计与性能分析[J].通信技术,2008,41(12): 131-133.
[6] Long Hainan, Liu Zhiqiang.Design Wireless Data Transmission System for Small Hydropower Stations Based on nRF24L01[J].Information Science and Engineering,2009(01):4008-4010.
[7] KORDAS J, WAGNER P, KOTZI J.Wireless transceiver for control of mobile embedded devices[J].Computer Science and Information Technology ,2010(05):869-872.