作者:李建明;彭建学;于涛
引言
随着个人电脑的发展、 USB(Universal Seral Bus)技术日趋成熟,USB设备也以惊人的速度发展。日常生活里的数码相机、打印机、扫描仪,医院里的心电图机、床边监护系统,以及图书馆、超市和物流仓库的有线条码扫描仪等设备大都使用了USB接口的通信。但是,由于USB的电缆长度受限(一般规定低速电缆长度不超过3 m,全速电缆长度不超过5 m),为使用带来诸多不便。为了实现数据的高速传输,弥补其电缆长度受限的不足,本文给出了基于RF24LU1+的USB接口设备的无线网络化系统设计方案。
1 系统设计
系统总体框图如图1所示。
系统工作原理:首先,将无线收发主机的USB插头插入PC机的USB插座,实现PC机与无线收发主机的硬件连接;同理,实现无线收发从机与USB设备 i(i=1,…,n)的硬件连接。无线收发主/从机可以根据现实情况采取自供电,或从与其所连的设备获取供电。接着,PC机实现对无线收发主机的USB枚举过程;同时,无线收发从机的USB主控单元实现对USB设备的USB枚举过程。枚举结束后,建立无线网络。无线收发主机和每个无线收发从机都设定一个唯一的地址,无线收发主机通过查询方式与无线收发从机进行通信。无线网络建立后,通过无线收发主/从机就可以进行USB数据流的无线通信了。
2 硬件电路设计
2.1 nRF24LU1+的芯片结构及特点
nRF24LU1+ 是Nordic半导体公司推出的一款将高性能的射频收发器和单片USBdongle的功能结合起来的无线收发芯片。nRF24LU1+内含1个增强型的 8051MCU内核、无线收发模块、符合全速USB 2.0标准的器件控制器、2 KB的片内SRAM、16 KB或32 KB的片内Flash存储器、6个通用的I/O口以及电压调整器。nRF24LU1+显著地增强了抗宽带干扰和互调失真(IMD)性能。 nRF24LU1+芯片需要的外部元件只是低成本的16 MHz晶振、去耦电路、匹配网络和天线。VBUS(USB工作电源)工作电压范围4.0~5.25 V。nRF24LU1+是单片结构,外形尺寸很小(5 mm×5 mm)。
无线收发器工作于全球开放的2.400~2.483 5 GHz频段,收发器的通信波特率可以通过软件设置工作于2 50 kbps、1 Mbps、2 Mbps;使用Enhanced ShockedBust技术可以实现数据包的自动打包/解包和传输处理(应答、重传);使用MultiCeiver技术可同时支持6个无线装置,频段、输出能量和其他射频参数可通过射频寄存器方便地进行编程调节;具有点对多点通信,并且采用AES加密技术实现更安全的数据传输;使用超低功耗(ULP)无线技术,0 dBm输出功率时典型峰值电流为11.1 mA;集成了1个稳压器,芯片可以直接由USB总线供电。
2.2 ISP1161的芯片结构及特点
ISP1161是Philips公司的一款符合USB2.0总线协议的USB接口芯片。它既带主机控制器(HC)又带设备控制器(DC),支持全速/低速传输,16位数据总线,支持3.3 V/5 V双供电方式。ISP1161为USB主机控制器时,提供2个USB设备连接的向下端口。
2.3 带USB接口的无线收发主机
无线收发主机电路如图2所示。电路由nRF24LU1+、16 MHz的晶振,以及其他元器件等构成。nRF24LU1+中的MCU负责控制其片内的USB模块和无线模块,实现USB数据流到无线数据流的转换。
2.4 带USB接口的无线收发从机
无线收发从机与外部USB设备的连接电路如图3所示。无线收发从机电路由Philips公司的ARM7处理器LPC2103和USB嵌入式主控制器 ISP1161,以及nRF24LU1+和一些外围器件构成。LPC2103和ISP1161构成USB的主机控制单元(HCU)。ISP1161作为主机控制器时有2个下行端口,分别连接nRF24LU1+的USB口和外部USB设备。nRF24LU1+负责无线数据流到USB数据流的传输。HCU负责来自nRP24LU1+的USB数据和外部LISB设备数据的传输。
3 USB无线网络系统的软件实现
3.1 nRF24LU1+的USB模块固件程序设计
USB设备的软件开发包括PC机端的USB设备驱动程序和界面应用程序,以及USB芯片端的芯片固件程序的开发。芯片固件程序是指运行在USB芯片内部的程序代码,它负责USB协议的处理和USB设备与主机的数据传输。芯片固件程序的开发是重点,也是难点。
3.1.1 USB设备的枚举过程
从终端用户看,USB系统就是外设通过一根USB电缆和PC机连接起来。USB在外设和PC机之间提供通信服务,通常把外设称为“USB设备”,把其所连接的PC机称为“USB主机”。USB使用总线枚举操作管理USB设备的连接和断开。以USB设备的连接为例说明枚举过程。步骤如下:
①USB设备连接在主机或集线器的下行端口上,USB设备上电。
②USB设备的复位。主机应提供至少10 ms的复位恢复时间。复位完成后,USB设备进入缺省状态,可使用缺省设备地址对管道0的控制事务作出响应。
③主机向USB设备发出Get Descriptor (Device)请求,以取得其缺省控制管道所支持的最大数据包长度。
④主机向USB设备发出SetAddress请求,为其分配一个唯一的设备地址。
⑤主机使用新地址向USB设备发出GetDescriptor(Configuration)请求,并读取其全部配置信息。该过程需要花费几ms。
⑥主机根据设备的配置信息(如供应商、产品ID等),为其选择一个合适的设备驱动程序。通常需要由开发人员自己编写,有时也可以使用设备类或供应商提供的通用驱动程序。
⑦加载了USB设备驱动程序后,主机发出SetCon-figuration请求为该设备选择一个合适的配置。配置成功后,枚举结束,USB设备可以和主机进行数据传输了。
3.1.2 USB模块固件程序设计
nRF24LU1+的USB模块由2个SFR寄存器和XDATA寄存器组来控制。USB固件程序由2部分组成:USB模块的初始化程序和中断服务程序。
(1)USB模块的初始化程序
关闭USB中断,调用端点初始化函数USB_endpoint_init(void)设置USB各个端点的传输方式、缓存区大小、中断事件产生条件,调用 USB服务函数USB_setvice(void)为中断服务程序中调用做准备;打开USB中断,调用函数 USB_device_connect(void)使得内部的1.5 kΩ上拉电阻连到D+线上,实现全速USB设备的配置。这样,就可以响应主机的枚举过程了。
(2)USB模块的中断服务程序
USB控制器提供2个中断信号给nRF24LU1+,分别为唤醒中断请求USBWU信号和USB中断请求USBIRU信号。USB中断请求USBIRQ为 nRF24Lu1+的一个中断,而USB中断请求下又有许多中断,包括:12个块端点中断、帧开始中断(sofir)、挂起中断(suspir)、USB 复位中断(uresir)、建立令牌中断(sutokir)、建立数据有效中断(sudavir)。如果多个USB中断同时发生,USB控制器将按优先级次序响应。激活的中断在中断向量寄存器ivec中得到,例如sofir中断时,ivec寄存器的内容为0x04。USB中断请求USBIRQ的部分程序代码如下:
3.2 nRF24LU1+的无线模块程序设计
nRF24LU1+使用具有内嵌的协议引擎(EnhancedShockBurst)2.4 GHz GFSK的RF收发器。EnhancedShockBurst具有自动包处理的特性,这使得实现可靠的双向数据链接变得容易。数据包的传输是在两个收发器之间进行的,其中一个作为主接收器(PRX),另一个作为主发送器(PTX)。每个数据包的传输都是由PTX发送数据包开始,而以PTX接收到PRX的应答包结束。在自动包传输处理工作时,nRF24LU1+提供了自动应答和重发数据的硬件机制,重发数据包的最大次数和第一次传输到下一次重传之间的延时均可编程设置。
nRF24LU1+发送器在Enhanced ShockBurst情况下的工作流程如图4所示。
通过把RECON寄存器的rfce位置高使发送器进入PTX模式。如果在TX的FIFO缓存区有数据包,则无线收发器进入TX模式并发送这个数据包。如果自动重新传输使能,状态机检查NO_ACK标志位是否被置位。如果被置位,RF收发器进入RX模式准备接收应答包。如果收到的应答包为空,则只有 TX_DS(传输数据发出)中断请求发生。如果应答包中包含载荷数据,则在收发器返回standby-I模式之前,TX_DS和RX_DR(接收数据准备)中断请求同时发生。如果延时时间到了而收发器还没有收到应答包,则收发器返回到standby-II模式。在自动重新传输时间没到之前,一直保持在 standby-II模式。如果重传次数没有达到设定值,则RF收发器进入TX模式并再一次重传最后一次的数据包;否则,会发生最大重传MAX_RT中断请求,并返回到standby-I模式。如果RECON寄存器的rfce位为高且TX FIFO(先入先出数据缓存区)为空,则RF收发器进入standby-I模式。
由于nRF24LU1+的无线收发模块有强大数据硬件收发机制,编写程序比较简单,只需在初始化程序中对相关寄存器进行设置就可进入数据的收发。发送数据时,把待发送的数据放入发送FIFO后,收发器会按照设置进行发送,发送的情况通过中断来通知MCU,MCU根据具体的中断请求执行相应的中断服务程序。接收数据时,收发器会不断地搜寻有效地址,当找到一个有效地址时,会处理剩下的数据包并通过CRC验证数据包。如果这个包是有效的,包内的载荷数据将被放入RX FIFO中。
数据包的格式如下:
无线通信程序由两部分组成:无线通信模块的初始化程序和中断服务程序。
初始化程序对工作模式、传输速率、无线通信的工作波段频率、RF输出功率、地址寄存器、数据包的有效数据长度、CRC的校验长度和RF中断寄存器等进行相应的设置。无线通信模块对nRF24LU1+只占一个中断源RFIRQ,具体是何种中断可通过查询STATUS寄存器中的TX_DS、RX_DR、 MAX_RT位来获得。中断服务程序分为发送中断服务程序、接收中断服务程序和最大重传中断服务程序。
结语
本文提出一种运用无线收发芯片nRF24LU1+组建的无线网络系统。此网络系统充分利用USB和无线收发模块各自的优点实现了快速、便捷的数据传输,具有集成度高、体积小、保密性强、功耗低的特点。