基于nRF905双向通信系统的设计

时间:2022-06-20 01:12:51

基于nRF905双向通信系统的设计

摘要: 针对传统无线通信是单向传输的局限问题,设计了基于nRF905射频芯片的双向通信系统并以单片机为主控制单元。给出了射频芯片收发电路,以及收发模块的软件设计和双向通信的程序设计,实验表明本设计运行速度快,传输距离远,精度高,完全实现双向通信。双向通信将是未来无线通信发展研究的趋势。

Abstract: Based on the traditional wireless communications limited transmissions is limited, based on the NRF905 rf chip design of two-way communication system and MCU control unit mainly. Given the rf circuit chip and transceiver module, send designing software and two-way communication program design and experiment shows that this design is fast, the transmission distance, high precision, fully realize two-way communication. Two-way communication will be the future trend of development of wireless communication studies.

关键词: nRF905 双向通信;程序设计;数据传输

Key words: nRF905;two-way communication;programming design;data transmission

中图分类号:TN92 文献标识码:A文章编号:1006-4311(2010)13-0250-02

0引言

由于nRF905射频芯片具有收发功能,在本设计中目标是在单向通信实现的基础之上,扩展系统功能实现双向通信,这也是本设计的突破点所在,最终目标是实现双向通信。一般来说数据传输系统分为数据发送系统和数据接收系统两大部分,该系统是无线传输系统的核心。无线传输系统采用nRF905射频收发芯片,其任务是将采集进来的数据,通过单片机时序控制,写入nRF905射频模块,实现数据无线传输。

1无线收发系统设计

本文所设计的系统主要是针对无线监测的双向通信,一般由传感器实时采集信号,通过前置处理将其送入单片机,并且从由单片机经过相应处理后将其显示出来,并读取当前时间信息,同时将这些信息通过控制射频芯片进行无线传输。其总体架构如图1所示。

2软件设计

双向通信的主要就是通过程序来控制发射以及接受之间的时间差,因此软件设计将是本系统最为重要的部分。

2.1 发射模块软件设计由于单片机是通过SPI口将命令字及数据写入nRF905射频收发芯片,因此SPI时序对命令字及数据写入至关重要。当进行发送和接收时,SPI时序如图2和图3所示。同时通过SPI口将配置字写入nRF905射频芯片中,使设置的参数满足通信要求。

其中C0~C7为命令字,S7~S0为状态字,O7~O0为地址字, D7~D0是数据字节。

在编写程序时,要注意其时序,其时序如图4所示

其单向发送程序流程如下:

①MCU将PWR_UP置高,使nRF905进入工作模式,再将TX_EN置高进入发送模式;②将发送地址通过SPI接口写入发送地址寄存器TX_ADDRESS,再将数据写入发送寄存器;③MCU置高TRX_CE,nRF905自动将数据帧格式补齐,加入包头Preamble,并根据寄存器设置计算CRC校验填入包尾,然后nRF905将整个数据以100kbps(bit per second)的速度,采用曼彻斯特编码,以GFSK(高斯频移键控)形式发送出去;④如果配置成自动重发模式,nRF905会自动重发,直至TRX_CE置低;⑤发送完后可以将TRX_CE置低,这样就进入等待模式。

2.2 接收模块软件设计nRF905接收也需要进行SPI初始化,并根据时序进行编程。时序如图5所示。

其单向程序流程如下:①MCU将TRX_CE置高,TX_EN置低,延迟650μs后进入接收模式;②nRF905监控频道使用情况,如果发现频道被占用,则将CD置高,可以利用该特性采取一些冲突避免检测机制,发送数据前如果检测到CD信号,则可以随机延时一段时间再发送数据,该特性可以有效地避免数据冲突。③当接收到的数据发送地址和自己地址匹配时,则AM置高,通知该数据是发给自己的;④对数据的CRC进行检验,如果正确,则除去包头和CRC段,将数据保存在接收数据寄存器RX_PAYLOAD,同时,DR信号置高,通知MCU读取数据。MCU可采用中断或查询方式进行数据读取;⑤MCU将TRX_CE置低,进入等待模式,再通过SPI口将数据读取出来,当数据读完后nRF905将AM和DR重新置低,为下次接收数据做好准备。

2.3 双向通信软件设计本系统为了实现双向通信,在程序设计时特别需要考虑发送与接收的时间。尤其要注意接收模块的时间管理,为了让单片机运行效率提高,可以采用RX 到TX模式转换或TX到RX的模式转换,由于不需要再重新配置寄存器,且同的频道被保持,因此转换所消耗的时间最少,这个时间对于双向通信程序设计是非常重要的。因此为了发送应答信号,需要将从Shock Burst RX模式转换为Shock Burst TX,转换时间在程序设计中采用接近300μs,从而实现了双向通信。但是在程序设计由于采用了不停的发送和接收,因此很容易进入死循环,为了能够顺利进行双向通信,只采用一定时间的查询判断是否接收到了数据,如果没有则继续进行发送,与单向通信相比,时间要稍延长。

2.4 发射系统软件可靠性设计nRF905进行发送采用了不断发送的程序设计方式,使数据可靠的进行发送。同时由于nRF905射频收发芯片具有自动添加CRC(循环冗余校验码),有利于提高数据传输的稳定性。

2.5 接收系统软件可靠性设计接收是无线通信的一个关键,可以采用查询的方式进行接收,也可以采用中断方式进行接收,为了降低系统的复杂性,同时考虑到nRF905最多一次只那可能发送32字节,所需要的时间不是很长,但由于要进行双向通信,为了程序能够顺利运行,因此在接收时设定了一定时间,如果在这段时间内没有接收到信号,则跳出接收程序。由于nRF905典型灵敏度为-100dBm,这种高灵敏度即使在没有数据进行传输时也会有杂波输出,因此不建议采用中断进行接收,但在进行唤醒采集模块进行工作时可以采用中断进行接收,因为只有中断才能唤醒单片机正常工作。

3双向通信实验

本实验为了方便进行观察,也是采用串口调试工具进行测试,采集的是传感器所采集的温度。在发送端发送数据后,接收端接收到数据通过串口显示,并原样发送给发送端,发送端再将数据通过串口输出。图6为发送端接收返回数据,图7为接收端接收到的数据。

从两图数据比对来看,由于发送端是一直处于工作状态,当接收端通电后,就开始进行数据传输,数据能够正确的返回,且数据接收没有误差。

4小结

数据传输系统肩负着数据发送和数据接收两大任务,单片机是整个系统的核心,它控制数据传输,处理以及射频芯片的正常工作。单片机和nRF905射频芯片的结合,具备了无线数据传输与接收,而且,可以通过扩展使系统的功能变得更加的强大。

在进行双向通信时,软件调试成为了突破的重点,可以通过菜单按钮自动控制单片机的工作状态以及发送显示数据,这是双向通信的优点。要实现双向通信,接收模块的时间延时必须设置的很好,这可以通过不断地实验,总结出自己的程序设计方案,虽然在数据接收一次所需要的时间比单向通信有所延长。这是由于没有采用查询的方式,而查询方式容易让单片机处于等待状态,使得系统不能进行正常工作。为了能实时将采集到的数据发送,可以将数据先保存起来等待发送且采用每次发送32字节,这样就不会有数据丢失。

随着功能的增加,程序的扩展,因此需要不断调整程序运行时间,以便能够顺利进行双向通信,且要求具有实时性,这可通过合理的设定发送和接收的时间差,通信时间不会延长。

参考文献:

[1]高潮,曹世超,郭永彩.分布式无线监测系统设计.重庆大学学报,2009,(12):32-12.

[2]高潮,周鹏,郭永彩.基于MSP430多功能无线监测系统的设计.激光杂志,2009,30,2.

[3]金保华.基于nRF905的无线数据多点跳传通信系统.仪表技术与传感器,2004,(9).

[4]吕跃刚.基于nRF905无线数传模块的设计及其实现.微计算机信息,2006,22,(11):274-277.

[5]王萍.基于nRF905的无线串口通信系统.微计算机信息,2007,23,(11):281-283.

[6]郑长征.基于nRF905的粮库无线测温系统.微计算机信息,2007,23.

[7]肖志勇,杨小玲,李光泉.基于nRF905芯片的无线传输设计与实现.计算机与现代化,2005,(9):121-124.

[8]高章飞,朱善安.基于单片机MSP430和nRF905的无线通信模块.机电工程,2006,11,23(2):39-43.

[9]郝妍娜,洪志良.基于MCU和nRF905的低功耗远距离无线传输系统.电子技术应用,2007,(8):44-47.

上一篇:Pro/e绘图关键技术解析 下一篇:山区特长隧道建设对地下水环境影响及防治对策