摘 要:本文介绍了利用无线收发芯片nRF-401实现计算机和单片机无线数据传输系统,该系统数据传输可靠性高,功能易扩展,适用于多种应用领域。
关键词:nRF-401;计算机;单片机;无线数据传输;
引言
目前国内微机网络多为有线通信方式。有线通信的优点是数据传输可靠性较高,但需要铺设较多明线,而有些领域由于条件所限,难以铺设线路,这时就需要无线通信来解决问题。本系统利用nRF-401无线收发芯片成功实现了计算机与多台单片机以无线方式通信,它可以应用于智能小区抄表系统的数据传输,多路数据采集系统,报警和安全系统等各种领域。
系统概述
典型的无线通信系统由信源、信源编码、调制、发射、接收、解调、解码和信宿等部分组成。本系统以一台计算机作为主控机,n台单片机作为从机(n=1,2,…N)组成了微机网络。PC机向众多从机发出地址,从机接收到以后,均与本机地址相比较,若不相符则退出,相符则回发从机地址作为应答,主控机接收到从机回发地址以后,立即响应从机发出命令,从机接收到命令,经判别后执行相应动作。数据传输均通过无线芯片nRF-401完成。系统结构图如图1所示。
图1 微机无线网络图(略)
系统的硬件设计
PC机接口设计
图2是PC机接口部分的硬件原理图。
图2 接口模块硬件原理图(略)
1)PC机RS-232串口
目前的计算机测控系统中,尤其在以PC机为上位机,以微控制器为下位机的分布测控系统中,它们之间的通信常常是串行通信。本系统主要是为组成无线测控系统预研服务的,主机以PC机代替微控制器,实现PC机与单片机的相互通信,所以决定采用9针RS-232串口作为与PC机的接口。
2)串口电平转换
由于RS-232串口电平使用的是负逻辑,且电压值较高,即逻辑“1”为 3V~ 15V,典型值为 10V,逻辑“0为3V~15V,典型值为10V。因此要经过电平转换,才能与一般数字电路中的TTL电平、CMOS电平一样。这里与射频部分nRF-401的接口有三个针脚,分别是2(RXD-DOUT)、3(TXD-DIN)、7(RTS-TXEN),两出一进,所以我们采用MAXIM公司的MAX232进行RS-232串口电平转换。
3)数据走线抗干扰
在MAX232的数据出口与nRF-401的数据接口之间,采用了简单的阻容低通滤波器,以减少较长距离的数据走线所受的干扰,即图中的R1、R2、C6、C7。
4)LED显示
为了显示系统目前的工作状态,采用TXEN线来控制2个LED灯(红色LED亮表示系统处于发送数据状态,绿色LED亮表示系统处于接收数据状态)。由于nRF-401的I/O脚吸入或拉出电流仅有20
A,不足以驱动LED(>5mA),所以采用2个三极管9012(PNP)、9013(NPN)驱动LED电路。
5)电源部分
系统采用外部电源,1节9V叠层电池供电,也可以通过接口转换线使用PC机内+12V电源或外接电源适配器。系统内部采用7805三端稳压芯片将+9V整形为+5V,经过22
F电解电容滤波后,以星型走线方式供给各个用电单元,同时在各单元电源入口处增加一个小电容再次进行电源滤波,以保证工作稳定。
无线收发控制模块的设计
图3是由nRF-401构成射频模块的硬件原理图。
图3 射频模块硬件原理图(略)
1)nRF-401芯片简介
nRF-401是挪威Nordic公司新推出的一种集发射和接收为一体的无线数传芯片,它在一个20脚的芯片中集成了高频发射、高频接收、PLL合成、FSK调制、FSK解调、多频道切换等功能,工作在433
MHz频率,采用了移频键控进行调制解调,能够以20Kbit/s的比特率进行无线数据传输。nRF-401集成度高,工作频率稳定可靠,外围元件少,功耗极低,适合于便携式及手持产品的设计。由于该芯片采用了低发射功率和高接收灵敏度的设计,因而可满足无线电管制要求,无需申请许可证,是目前低功率无线传输的理想选择。
nRF-401有三种工作模式:收模式、发模式和等待模式。在等待模式下,系统的功耗可以达到很小的值。两个通信信道分别为433.92
MHz和434.33 MHz。nRF-401的工作模式可由 3个引脚设定,分别是TXEN、CS和PWR-UP。因此可以控制nRF-401的工作模式,使其处于接收、发射、等待任一种状态,实现双工通信。
表1: nRF-401工作模式和控制方式(略)
2)VCO外部电感的设计
nRF-401需要为片内电压控制震荡器(VCO)提供一个外置的电感,由于VCO产生器件中的所有RF频率,因此是一个非常关键的部分。它是由LC电路确定额定频率的振荡器,其中LC电路由以下部分组成:
·片内电路
·VCO电感
·连接芯片和VCO电感的布线线路
·PCB上的寄生电容
图4 nRF-401内部结构与外围器件(略)
由于VCO的片内部分将VCO1和VCO2引脚之外的整个电路视作它的VCO电感,因此,电感的取值和放置位置及其在PCB板上的特性是相当重要的。这意味着,连接电感的布线对电感值有影响,围绕这些布线的对地层平面的寄生电容也增大了算式中的电容值。锁相环(PLL)产生一个(DC)直流电压来精确地设置VCO的频率。这个电压就是环路滤波器(Loop Filter)电压,它可以在连接外部VCO电感的器件外部引脚上测得。问题是PLL只能在一定频率范围内调谐VCO。如果想在某个调谐范围内设置RF信道,就必须相应选择
VCO电感的取值和放置位置。
3)环路滤波器的设计
nRF-401都外接有环路滤波器。设计此滤波器用以保证供给VCO一个稳定的控制电压。因此屏蔽外部噪声尤其是"低频"(<50kHz)高幅值信号(如数字数据信号)对滤波器的干扰是十分重要的。在这个频率范围内的噪声很难被滤除(接近滤波器的通带),将直接影响VCO。因此不要在环路滤波器的附近布置数字线路,可在环路滤波器的周围布置地线平面加以屏蔽并使数字信号线尽量远离。为获得好的环路滤波器性能,连接到地的滤波器元件应该直接连接到地线层,而不要通过走线或公共过孔。
4)晶体振荡器设计
选择合适的晶体是非常重要的,不仅影响RF应用的性能,也可以降低成本。为满足数据手册上的指标,本设计方案安装了一个HC49(占位面积)的4.000MHz晶体。这种晶体有插孔和贴片两种封装。插装的晶体最便宜,但考虑加工方便选择SMD安装的晶体。
5)天线输入/输出及调谐元件设计
当器件处于接收模式时,ANT1和ANT2引脚提供LNA(低噪声放大器)的RF输入,而在发送模式时,提供PA(功率放大器)的RF输出。天线的连接采用差分方式,建议天线端口的负载阻抗为400W,比起标准的50W,增大阻抗可以提高发送功率/耗用电流的比率。因此布局布线及元件精度非常重要,由于差的布线或元件引起的损耗会明显降低应用性能。本设计采用的环形天线(Loop
antenna)整体做在PCB上。对比传统的鞭状天线,不仅节省空间和生产成本,结构上也更稳固可靠。
惯例中环形天线设计应用于相对较窄的带宽。这有助于抑制强的不需要的信号以免干扰接收器。应注意到环形天线(正如所有其它天线)可能收到由附近噪声信号线路容性耦合的噪声。它会干扰接收器,也可能影响发送器的调制。因此在天线附近一定不要排布数字信号线路,并建议在天线周围保持自由空间。接近天线的任何物体都将构成调谐网络的一部分而导致天线调谐偏离预想的频点,使收发辐射范围(距离)减小。对于所有的各类天线必须注意这一事实,电路板的外壳(外围包装)也可能影响天线调谐,因此将天线安装在外壳里后最终调谐天线是很重要的。同时应注意去除天线面积处的地线层面,否则天线不能有效工作。
6)射频模块的PCB布局和去耦设计
一个好的PCB设计对于获得好的RF性能是必须的,本设计推荐使用至少两层板。nRF-401的直流供电必须在离VDD脚尽可能近的地方用高性能的RF电容去耦。如果一个小电容再并上一个较大的电容效果会更好(2.2
F),nRF-401的电源必须经过很好的滤波,并且与数字电路供电分离。在PCB布局中应该避免长的电源走线,所有元件地线,VDD连线,VDD去耦电容必须离nRF-401尽可能近,如果PCB设计的顶层有铺铜,VSS脚必须连接到铺铜面,如果PCB设计的底层有铺铜,与VSS的焊盘有一个过孔相连会获得更好的性能。所有开关数字信号和控制信号都不能经过PLL环路滤波器元件和VCO电感附近。需要特别说明的是VCO电感的布局是非常重要的,一个经过优化的VCO电感布局将可以给
PLL环路滤波器提供一个1.1 0.2V电压,这个电压可以从FILT1(pin4)测得。对于1.6mm FR4板材的双面PCB,0603封装电感的中心到VCO1和VCO2焊盘的中心距离应该是5.4mm。
系统的软件设计
无线通信协议设计
通信协议是指为使通信双方能相互理解而制定的规则。由于无线收发模块的特性,通信可能在发射端与接收端之间受到外界的干扰而使数据发生错误,因此需要通信协议来保证接收端能正确接收到来自发射端的数据,并确定所接收数据是否为实际数据。本系统为多机通信,可以按照以下协议进行:
1)首先使所有从机处于只能接收地址帧监听状态。
2)主机先发送地址帧信息,等待各从机的响应。
3)从机接收到地址帧后,各自将接收地址与本机地址相比较,相同的则接收主机随后发来的数据和命令;不同的则继续等待地址帧,对主机随后发出的数据帧和命令帧不予理睬。
4)从机向主机回送本机地址作为应答信号,主机接收到后,与原发送地址相比较,相同则正式发送数据或命令信息,否则重新联络。
PC机通过无线收发送控制器发送给从机的数据分三种:地址帧、数据帧和命令帧,从机上传的只有数据帧。
地址帧格式:
(略)
命令帧格式:
(略)
数据帧格式:
(略)
地址帧可以用00表示,命令帧可以用01表示,数据帧可以用10表示。数据标识头用于表示一个新的数据块的开始,块长度用来保证数据不会丢失。校验和是将除标识头以外的数据相加确保设备接收的数据不会由于外界干扰而出错。PC机发出的命令见下表2。
表2: 系统命令(略)
单片机的无线串行通信软件
采用查询方式的通信程序通常使单片机负担较重,本系统从机采用中断方式实现串口通信,以提高效率。下面给出串口中断服务程序流程图5。
图5 单片机程序流程图(略)
PC机的无线串行通信软件
主机程序设计调用了Windows API函数,完成串行口的打开、关闭、读写等操作。下面是几个本程序用到的API函数原型:
HANDLE CreateFile ( //打开串口,返回设备句柄
LPCTSTR lpFileName, //文件名或设备名:如串口名"COM1"、"COM2"
DWORD dwDesiredAccess, //访问类型:对于串口应当可读可写:GENERIC_READ | //GENERIC_WRITE
DWORD dwShareMode,//共享属性:串口不能共享,应设为0
LPSECURITY_ATTRIBUTES lpSecurity_Attributes,//安全属性,通常设为NULL取其默认值
DWORD dwCreationDispositio, //创建方法:串口通讯必须设为OPEN_EXISTING
DWORD dwFlagsAndAttributes,//端口属性:设为FILE_ FLAG_OVERLAPPED将其置为重叠模式
HANDLE hTemlateFile//指向模板文件的句柄,设为NULL
)
BOOL WriteFile ( //写串口,返回值指示操作成功与否
HANDLE hFile, //文件或设备句柄,由CreateFile函数返回得到
LPVOID lpBuffer, / /数据缓冲区首地址
DWDRD nNumberOfBytesToWrite, //待写数据总字节数
LPDWORD lpNumberOfBytesWritten,//实际已写入数据的字节数
LPOVERLAPPED lpOverlapped//重叠模式时指向结构体OVERLAPPED
)
BOOL ReadFile ( //读串口,返回值指示操作成功与否
HANDLE hFile, //文件或设备句柄,由CreateFile函数返回得到
LPVOID lpBuffer, //数据缓冲区首地址
DWDRD nNumberOfBytesToRead, //要读入数据的字节数
LPDWORD lpNumberOfBytesRead, //实际已读入数据的字节数
LPOVERLAPPED lpOverlapped//重叠模式时指向结构体OVERLAPPED
)
另外,配置串行口通信参数可通过设置设备控制块DCB(Device Control Block)中的变量值来实现。接收缓冲区和发送缓冲区的大小可通过SetupComm函数来设置。PurgeComm函数用来终止所有的后台读写操作并清空接收缓冲区和发送缓冲区。为处理接收和发送数据过程中突发事件引起以I/O线程挂起或阻塞等问题,通信程序中可通过超时设置来判断通信是否异常并作出相应处理。超时设置首先设置COMMTIMEOUTS结构中的五个变量,然后调用SetCommTimeouts函数设置超时值。这里就不一一介绍了。
结论
控制中心可以通过无线收发芯片nRF-401查看和控制从设备,从设备也可以向控制中心报告当前采集的数据,并能接收控制中心传送的控制数据,从而优化控制算法,以达到更好的控制效果。本设计通过了硬件和软件调试,数据传送安全可靠,运行效果良好,不仅适用于信息家电,也适用于工业自动化的局域网连接,具有一定的可移植性。
|