基于nRF24L01和FT245BM的无线文件传输系统设计
2008-07-15
作者:时志云, 杨 毓, 王代华, 张
摘 要: 设计了一种基于无线射频芯片nRF24L01和USB芯片FT245BM的文件传输系统,介绍了其硬件电路设计和软件控制程序设计,并给出了一些实验数据。经实测,该系统运行稳定,传输可靠,平均传输速率可达到256kb/s。
关键词: nRF24L01 FT245BM 无线传输
USB通用串行总线为USB设备与主机之间大量的数据传输提供了高速、可靠的传输协议。目前U盘被广泛用于两台计算机之间的文件传输,使用方便、灵活,但其也有不足之处。若有一些恶意病毒隐藏在U盘当中,则这些病毒很可能会给用户带来不必要的损失;此外当传输数据量较小时,反复的插拔过程会耽误宝贵的时间。因此单用USB接口与PC通信有其局限性。随着短距离无线通信技术的发展,其应用场合已越来越多,比如仪器仪表、计算机遥测遥控系统、家庭网络系统等[1]。USB接口通信和无线通信都有着各自的优势,倘若把它们结合起来,扬长避短,定会有更大的应用前景。
本文采用PIC16F877单片机、USB芯片FT245BM和无线芯片nRF24L01组成无线文件传输系统,充分利用USB口数据传输功能,设备连接方便,可进行文件双向传输。
1 主要芯片介绍
1.1无线传输" title="无线传输">无线传输芯片nRF24L01
24L01是单片射频收发芯片,工作于2.4GHz~2.5GHz频段,工作电压为1.9V~3.6V,有多达125个频道可供选择,最高通信速率2Mb/s,具有自动应答和重发功能,其工作参数全部通过芯片状态字配置。微处理器通过SPI访问L01,将配置状态字写入L01中,可将其配置为发射、接收、空闲及掉电模式。芯片内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融进了增强型ShockBurst技术。该项技术为L01所特有,它使得双向通信协议变得简单。
1.2 USB芯片FT245BM
FT245BM芯片是由FTDI公司推出的第二代USB芯片,它的功能是实现USB接口与并行I/O" title="I/O">I/O接口之间数据的双向传输。它由3.3V稳压器、USB收发器、锁相环、串行接口引擎(SIE)、FIFO控制器、USB协议引擎、FIFO接收缓冲区、发送缓冲区以及6MHz振荡器、8倍频时钟倍频器等组成。一方面,当外部设备" title="外部设备">外部设备有数据要传给主机时,数据通过8位并行I/O接口传给USB芯片内部的数据缓冲区,FT245BM再将8位并行数据转化为串行数据" title="串行数据">串行数据,通过USB接口把数据发送给主机;另一方面,当主机有数据要给外部设备时,先将串行数据通过USB接口存储在USB芯片内部缓存区中,FT245BM再将串行数据转化为8位并行数据,然后通过8位I/O接口把数据传给外部设备。
2 系统总体设计
本系统采用的核心器件是单片机PIC16F877、无线芯片nRF24L01及USB芯片FT245BM。一个文件要从一台计算机无线传给另外一台计算机,首先要将文件转换为二进制码(编码),然后无线发射,再无线接收,最后将二进制码还原成原始文件(解码)。文件的编码及解码都是由计算机VB程序完成,硬件则只完成二进制码的传输。考虑到二进制码还要通过单片机进行中继,因此单片机与计算机之间采用USB芯片FT245BM连接,无线传输则由单片机对L01的控制完成。系统设计总体框图如图1所示。
3 硬件设计
3.1 USB接口设计
单片机对FT245BM的控制是通过RXF#、RD#、TXE#和WR这四个读写控制信号完成的,如图2所示。当RXF#为低时,表示主机已经将至少1字节的数据发送到USB的接收缓存区,单片机只需将RD#信号由低置高,就可以把D0~D7上的数据读到单片机的寄存器中。当TXE#为低时,表示单片机可以把1字节的数据写入USB,只需把WR信号由高变低,就可以将D0~D7上的数据写入USB的发送缓存区。注意,当TXE#为高时不可以将数据写入USB,这时USB的发送缓存区中正在处理上一次写入的数据或是发送缓存区已经写满。同样,当RXF#为高时,也不能从USB芯片中读取数据。
电路设计可采用总线供电和自供电两种方式,总线供电方式是指FT245BM设备的电源是通过计算机的USB接口供给的,电流要通过该口流入FT245BM设备。自供电方式是指FT245BM设备的电源由自己提供,而不通过主机供给。如果采用总线供电方式,在电源端采用一个磁珠,可以减少主机和设备的干扰。同时,在电源端增加去耦和旁路电容,可以提高电路的抗干扰性。如果电路没有外接一片EEPROM,则FT245BM将采用默认的VID、PID、产品描述符和电源描述符。
3.2 无线部分设计
单片机与L01连接图如图3所示。CE、CSN、MOSI、MISO、SCK及IRQ是L01的控制引脚。CE是片选端,CSN、MOSI、MISO、SCK是L01的SPI口,PIC16877与L01就是通过SPI[2]口进行通信的。SPI通信在无线传输中占重要地位。例如:当要配置L01时,那些配置状态字是通过SPI口写入L01内的;当要发送数据时地址和有效数据也是通过SPI口写入L01的;当L01接收完数据时,单片机同样是通过SPI口将其读出的,所以必须将单片机与L01采用SPI连接。IRQ则是中断标志位,单片机查询此位的状态就可知道发射或接收是否成功了。
4 软件设计" title="软件设计">软件设计
系统的工作原理为:首先将两块带有L01和FT245BM的电路板分别插入主机和从机的USB口,以确保上电;然后双方均运行VB程序,进入文件传输发送/接收界面;此时若主机要传送文件给从机,从机要先点击接收命令按钮,以便进入接收状态等待文件的到来,接着主机点击发送命令按钮,弹出选择文件对话框,选择要发送的文件后点击确定,该文件将在一定时间内发送完毕,同时从机会弹出保存对话框,点击保存按钮后,文件保存成功,文件传输结束。
因此系统的软件设计分为三部分:VB界面程序、USB软件设计及单片机控制程序。VB界面程序主要负责文件的获取、文件的编解码及文件的保存;USB软件设计主要确保USB设备能够稳定工作;单片机控制程序则负责对USB芯片和L01的控制,以完成数据的无线发送/接收。
4.1 VB界面程序
VB界面流程图如图4所示。
4.2 USB软件设计
当外设连接到主机上的USB接口时,主机会检测到新硬件,这时需安装一个由FTDI公司免费提供的D2XX驱动程序,在该驱动程序中包含了一个动态链接库(DLL)。使用时需在VB里调用相关的函数。
4.3 单片机控制程序
在该系统中,单片机主要控制L01和FT245BM,实现数据的无线传输。单片机的D口作为数据口,B0~B3则作为FT245的读写控制及状态口。L01每次只能传输32字节数据,因此将文件分包,每包32字节。另外,约定了一些通信协议:每次发送成功后,向主机回传“AAH”,以便让主机发下一包;发送失败则回传“CCH”,以便通知主机重发此包数据。为了能够重发数据包,将每次取得的32字节数据存放在单片机内部RAM内备份,以便出现误码时重发。整套系统发射机一直处于发射模式,接收机一直处于接收模式。程序控制流程如图5所示。
5 实测数据
在两台计算机间进行了不同格式、不同大小的文件的传输试验,结果如表1所示。
基于24L01和FT245BM的无线文件传输系统结构简单,使用方便,误码率低,可靠性高。经大量试验测得:其传输速率约为256kb/s。提高单片机的晶振则可以加快文件的传输速度,其应用前景也就更加广阔。
参考文献
[1] 肖铎, 徐洁, 杜鹏英. 基于USB 口的无线数据收发器[J].电子技术应用, 2006,32(7):80-82.
[2] 李学海. PIC单片机原理. 北京:北京航空航天出版社,2004.