引言
通信是信息的交换平台,在人们的工作和日常生活中起着重要的作用。传统的通信技术是通过数据线和串口/并口将设备连接在一起,这样就存在布线困难和其它不方便的因素。而且传统的RS232串口通迅和并口通讯都存在传输速度低、接口的连接过于复杂等不足。本文所设计的基于USB接口的无线数据传输系统利用了USB接口的高传输速率、即插即用等优点,并结合了无线数据传输技术,实现了计算机之间的无线数据通讯,解决了传统通信技术带给我们的不便。
系统硬件设计
基于USB接口的无线数据传输系统总体方案如图1所示,该系统由发射和接收两部分组成。其中,发射(接收)系统由单片机控制射频发射模块和单片机控制USB芯片两部分组成。系统的工作过程为:主机将数据通过USB接口传给单片机,数据通过单片机的SPI口再传给射频发射模块,最后由射频发射模块把数据发射出去。射频接收端接收到符合的数据包后,通知单片机读取数据,单片机将数据通过USB接口送给主机,这样就完成了一包数据从发射端到接收端的传输。
图1 (略)
单片机控制nRF2401
nRF2401芯片工作在全球开放的2.4~2.5GHz ISM免申请频段共125个频点,可满足多频点和跳频的需要;最高速率可达1Mbps,低功耗;发射功率和频道参数可通过软件设置完成。nRF2401内置地址解码器、FIFO(先入先出栈区)、解调处理器、GFSK滤波器、低噪声放大器、频率合成器,功率放大器,晶体振荡器等部分构成。nRF2401有两种模式:Direct Mode(直接模式)和ShockBurst模式。ShockBurst技术采用芯片内部FIFO,数据以较低的速率存在FIFO中,再以很高的速率(1Mbps)将数据发射出去,因此它的功耗和成本都很低。nRF2401上的编程采用三线接口方式,单片机通过DATA,CLK1,CS三个引脚对nRF2401芯片进行初始化设置和数据的输入输出,单片机还可以通过PWR_UP,CE,CS三个引脚对其进行控制,使nRF2401进入不同的工作模式。nRF2401的DATA引脚是数据引脚,SCK引脚是时钟引脚,在时钟信号的配合下,单片机通过DATA引脚从nRF2401中读取数据或者把数据写入nRF2401。单片机与nRF2401连接如图2所示。
图 2(略)
首先对nRF2401进行参数配置,CS=1,CE=0,PWR_UP=1。bit[119:0]有120位需要配置。这里需要注意的是nRF2401一包数据的最大长度是256位(32Byte),数据段的位数=256-地址段的位数-CRC的位数。因此,要想在一包数据中传输尽可能多的数据段的位数,那么应该减少地址段的位数和CRC的位数。接下来进入突发模式:CS=0,CE=1,PWR_UP=1。通过模拟SPI口把数据和接收方的地址写入nRF2401。注意该地址是接收方的地址。最后将CE置低,无线传输芯片把数据发射出去。
单片机对FT245BM的控制
FT245BM芯片是由FTDI(Future Technology Devices Intl Ltd)公司推出的第二代USB芯片,它的功能是实现USB接口与并行I/O接口之间数据的双向传输。它由3.3V稳压器,USB收发器,锁相环,串行接口引擎(SIE),FIFO控制器,USB协议引擎,FIFO接收缓冲区,发送缓冲区,以及6M振荡器,8倍频时钟倍频器等组成。一方面,当外部设备有数据要传给主机时,数据通过8位并行I/O接口传给USB芯片内部的数据缓冲区,FT245BM再将8位并行数据转化为串行数据,通过USB接口把数据发送给主机;另一方面,当主机有数据要给外部设备时,先将串行数据通过USB接口存储在USB芯片内部缓存区中,FT245BM再将串行数据转化为8位并行数据,然后通过8位I/O接口把数据传给外部设备。单片机与FT245BM的连接如图3所示。
图3 (略)
单片机对FT245BM的控制是通过RXF#,RD#,TXE#,WR这四个读写控制信号完成的。当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、产品描述符和电源描述符。
软件设计
发射端流程、接收端流程见图4、图5。
图4 发射端流程图(略)
图5 接收端流程图(略)
软件设计
当 外设连接到主机上的USB接口时,主机会检测到新硬件,这时需安装一个由FTDI公司免费提供的D2XX驱动程序,在该驱动程序中包含了一个动态链接库(DLL)。该DLL由四部分组成:Classic Interface Functions、EEPROM Interface、Extended API和FT-Win32 API。Classic Interface Functions中包括FT_Open、FT_Read、FT_Write、FT_Close、FT_SetTimeOuts等函数,其功能如表1所示。
表1 Classic Interface Functions中部分函数的功能(略)
调用FT_Open函数,打开设备。如果函数的返回值与FT_OK的值相等 ,那么函数调用成功,即USB设备被打开。调用FT_Read函数,从USB中读取数据。在程序中应该设置一个字节型数组,用来存放从USB中读取的1字节数据。调用之前需设置FT_SetTimeOuts函数的读/写操作时间,如果实际的读操作时间超过了所设置的时间,那么认为读数失败;只有当规定读入的字节数与实际读入的字节数相等时,读操作 才算彻底完成。调用FT_Write函数,把数据写入USB中。在程序中应该设置一个字节型数组,用来存放要写入USB发送缓存器的数据,数组的长度可以自行设定,但最好不要超过384个字节。只有当规定发送的字节数与实际发送的字节数相等时,写数才算成功。调用FT_Close函数,关闭设备。如果函数的返回值与FT_OK的值相等 ,那么函数调用成功,即USB设备被关闭。
结论
本系统采用了nRF2401无线射频芯片和USB接口芯片FT245BM,通过PIC单片机进行控制,在主机端用VB编写了USB软件,实现了两台计算机之间的无线数据传输,解决了传统通信技术的不足,具有很好的应用前景。
|