基于PIC16F726和nRF24L01的短距离无线传输系统设计
2012-11-24张肖汉李明伟
张肖汉,陈 以,李明伟
(桂林电子科技大学 电子工程与自动化学院,广西 桂林 541004)
21世纪,短距离无线通信技术备受瞩目。短距离无线传输具有抗干扰能力强、可靠性高、安全性好、受地理条件限制少、安装灵活等优点[1],在电子通信、家电、民用与军工领域均拥有广阔的市场。特别是户外应用场合,不宜采用有线数据传输方式,无线通信则以无可比拟的优势占据先机。本文依据商业市场发展需求,研究和设计了一种基于PIC单片机和无线射频收发芯片实现的小成本、低功耗、对等通信且协议简单的短距离无线传输系统。
1 系统设计
由于短距离无线传输对环境、安全性有较高的应用要求,所以根据实际需求采用RF无线射频收发一体芯片技术。相对于目前主流的IEEE802.11x无线局域网技术、蓝牙技术等短距离无线通信技术,此技术具有通信距离远、功耗低、抗干扰能力更强、自主开发程度高、开发成本低、技术更成熟、通信协议可自行定义、灵活度极高等优点[2]。结合系统的现实需要,选用了由Nordic公司研制的nRF24L01无线射频收发芯片负责无线数据传输。
1.1 设计思路
系统设计主要以单片机为核心,控制无线通信模块进行发射与接收,实现短距离无线传输系统的双向对等通信。整个系统的功能模块示意框图如图1所示。
图1 短距离无线传输系统的功能示意框图
系统采用模块化设计思想,发射机端与接收机端均由PIC单片机和nRF24L01芯片组成。工作原理是:发射机端的PIC单片机在实时采集数据的同时,根据控制平台的控制指令完成无线数据信号的发射,接收机端的PIC单片机完成无线信道与嵌入式平台之间的数据交换功能,嵌入式应用平台则是在接收到发射机信号的同时,通过接收机向发射机返回接收指令。这种工作方式能增加系统的稳定性,实现短距离控制平台对嵌入式平台应用环境的无线控制。本设计主要针对如何实现PIC单片机与嵌入式应用平台之间的无线数据传输。
1.2 硬件设计
主要针对短距离无线传输系统的nRF24L01无线射频收发模块和PIC单片机控制器模块的接口进行设计。
1.2.1 nRF24L01无线射频收发模块
nRF24L01是工作在2.4 GHz世界通用ISM频段免使用费的单片无线收发一体芯片,将射频发射接收、GFSK调制解调、增强型ShockBurst机制、125频道、CRC校验、稳压电路、SPI接口等集成到单芯片中[3]。nRF24L01相比其他公司研制的常用无线收发芯片 (例如 Chipcon 的 CC400,RFMD 的 RF2915,Bluechip 的BCC48等),它可以直接接单片机串口使用,数据无需曼彻斯特编码,可直接传输串口数据,效率高,发射电流消耗仅 9.0 mA,数据传输速率可达 1或 2 Mb/s,收发天线合一。因此,在目前较为流行的无线通信芯片中,无论是从使用的方便性、传输速度还是输出功率等各个方面考虑,nRF24L01都是一种比较理想的选择,其接口电路如图2所示。
nRF24L01是通过SPI接口与外部控制器交换数据,如果外部控制器没有SPI接口,可以用I/O控制口模拟。ANT1和ANT2输出脚是给天线提供稳定的RF输出。在输出功率最大时(0 dBm),推荐使用负载阻抗15 Ω+j88 Ω,这样,通过简单的网络匹配可以获得较低的阻抗。XC1和XC2接入16 MHz晶振,为了实现晶体振荡器低功耗和快速启动的目的,建议使用容值较小的电容,考虑成本因素通常用7.0 pF的电容。
图2 nRF24L01接口电路图
1.2.2 PIC单片机外围接口电路设计
系统选用了自带SPI接口的PIC16F726单片机,便于与nRF24L0l进行连接。PIC16F726作为数据采集的控制器,它是Microchip公司专门针对中国市场最新推出的低成本、8 bit闪存单片机,具有高性能的RISC CPU,内含高精度内部振荡器,低功耗、节能休眠模式,支持1.8~5.5 V的宽工作电压范围,25个 I/O控制口,11路AD通道,带有 2个 8 bit定时器(Time0、Time2)和 1个16 bit定时器增强型Time1[4]。PIC单片机主要完成数据的处理,向nRF24L01模块发送数据并且接收对应的接收机传送过来的数据。nRF24L01模块主要是将发射机端单片机的待传数据通过射频信号发送到接收机端的nRF24L01模块,并能接收接收机端传送过来的射频信号,实现双向通信。PIC单片机的外围接口电路如图3所示。
图3 PIC单片机外围接口电路原理图
PIC16F726通过 SPI接口控制 nRF24L01。nRF24L01的SCK引脚与单片机的RC0引脚相连,即Timer1的时钟作为SPI时钟;nRF24L01的MOSI引脚与单片机的RC1引脚连接,nRF24L01的MISO引脚与单片机的RC2引脚连接,实现串行数据传输;nRF24L01的IRQ与单片机的RB0相连,作为中断控制;nRF24L01的CSN引脚与RA4连接,即Timer0的时钟作为SPI的片选信号;nRF24L01的CE引脚与单片机的RA3相连,无线通信模块的工作模式由PWR-UP、PRIM-RX寄存器和CE决定(在后文的软件实现部分中再做详细描述)。
PIC16F726单片机采用 5 V(VCC)电源供电,内含复位电路,16 MHz的晶振,它决定了单片机的串口传输速率。SPBRG寄存器决定自由运行的波特率定时器的周期,异步模式下,波特率周期的倍频值由TXSTA寄存器的 BRGH位决定,使用高波特率(BRGH=1)有助于降低波特率误差。在系统中,由软件设置SPBRG寄存器的值为 16,SYNC=0且 BRGH=1,则无线模块和单片机的通信速率为 57 600 b/s,与实际波特率 Fosc/[16(n+1)]的值58 800 b/s仅有2.12%的误差。单片机与上位机之间采用RS-232标准接口,系统采用单电源电平转换芯片MAX232连接单片机和控制中心。MAX232芯片是美信(MAXIM)公司专为 EIA/TIA-232E以及 V.28/V.24通信接口设计,内部有两个电荷泵,将5 V转换为+10 V,为RS-232驱动器提供工作电压,所以,系统只需要单一的5 V电源即可[5]。系统采用24LC01B型号EEPROM(电可擦可编程只读存储器)满足系统即插即用、多次修改参数的要求。24LC01B采用I2C接口方式,输入电压范围为2.5~5.5 V,系统采用3.3 V电压输入,400 kHz高频时钟,页写数据只需2 ms,具有千万次擦写的寿命周期并能够保留数据超过200年[6]。
2 软件设计
软件设计采用Microchip的MPLAB IDE作为本系统的编程开发工具。正确的设置工作模式对于使用无线射频收发芯片至关重要,对于nRF24L01而言,它的工作模式设置主要包括发送、接收、待机和掉电四个状态,这是由PWR-UP、PRIM-RX、CE三个引脚共同决定。具体配置如表1所示。
表1 nRF24L01工作模式配置
短距离无线传输系统软件设计主要包括发送数据和接收数据两个部分。在提高系统性能和保证通信效率的前提下,依据发送数据和接收数据的特性,采用查询和中断两种模式来分别完成数据的发送与接收。系统的发送与接收程序流程图如图4所示。
图4 系统发送与接收程序流程图
3 系统测试
将系统发射机和接收机端分别通过RS232与PC机连接,通过串口调试助手进行模拟测试。经过多组测试,无误码情况,可实现两者之间的可靠通信。系统测试如图5所示。系统使用串口3进行发射机数据传输模拟,使用串口4对接收机进行模拟。两串口进行通信,其波特率、校验位、数据位与停止位需相互匹配,均定为57 600波特率、无校验位、8位数据位与1位停止位。通过串口对采集的数据“test dates:12 24 37……”等进行传输,从图5测试的结果可以看出,系统实现了两者之间的无线双向通信。
图5 系统测试
结合高效、节能的政策,本文利用IT相关技术,系统达到了设计的任务要求,实现了短距离双向无线传输功能,可应用于各种嵌入式平台。本设计采用的是低价格、低功耗且易于开发的PIC16F726和nRF24L01芯片进行设计,通用性强,具有广泛的市场基础与较高的推广价值。
[1]戴佳,戴卫恒.51单片机C语言应用程序设计实例精讲[M].北京:电子工业出版社,2006.
[2]宋海波.基于RF无线射频芯片的通信技术在分布式网络传感器中的应用[D].吉林:吉林大学,2006.
[3]Nordic.nRF24L01 Product Specification[Z].Nordic Corporation,2004.
[4]PIC16F72X/PIC16LF72X数据手册[Z].Microchip Technology Inc.2009.
[5]MAX232 中文资料[Z].[2012-06-01]http://wenku.baidu.com/view/65bf19a1284ac850ad02427d.html.
[6]24LC01B DateSheet[Z].[2012-06-01]http://wenku.baidu.com/view/7228502ded630b1c59eeb5c1.html.