1
RF/无线
当今,无线技术飞速发展,应用的领域越来越广,与有线技术相比,无线技术具有方便、灵活、减少布线施工难度、降低成本等优点。本文阐述了无线USB控制系统的组成、功能和设计方法,系统由PC、无线USB控制器和多个终端节点组成,本文分别给出了实现无线USB控制器和终端节点的一种方案:无线USB控制器的方案是以单片机STC89C58RD+为微控制器,基于Nordic公司的2.4GHz的无线收发芯片nRF24L01,结合Philips公司的PDISUBD120D USB控制芯片来实现的;终端节点的方案是以STC89C58RD+为微控制器,基于nRF24L01无线收发芯片和根据需求的实际应用电路来实现的。
1.1系统描述
如图1,无线USB控制系统的组成包括PC、无线USB控制器和终端节点(n个)。PC和无线USB控制器之间通过USB接口进行通信,在PC端,用VC++开发应用程序实现对无线USB控制器进行控制,无线USB控制器和各个终端节点通过无线收发芯片nRF24L01实现无线通信。
1.2系统实现方案
1.2.1无线USB控制器实现方案
无线USB控制器实现方案如图2所示,主要包括微控制器STC89C58RD+、USB控制芯片PDIUSBD12和无线模块nRF24L01 Module。STC89C58RD+内含32KB程序存储器、1280B RAM和16KB E2PROM,E2PROM可用来存储终端节点的地址及需要掉电存储的其他数据,32KB程序存储器和1280B RAM可以满足绝大多数应用需求。USB控制芯片PDIUSBD12是一个性能优化的USB控制器件,完全符合USB1.1规范,支持本地DMA传输,用于基于微控制器的系统。USB1.1最大支持的传输速度是12Mb/s,比一般的PC接口速度都快,足够满足无线USB控制系统的应用。无线模块部分采用Nordic公司的nRF24L01单片射频收发芯片,该芯片工作于2.400~2.4835GHz的ISM(工业、医学和科学)频段,工作电压为1.9~3.6V,有多达126个频道可供选择,支持多点间通信,最高速率达2Mb/s,内置链路层,减少了MCU的复杂性和成本,提高了数据传输的可靠性,而且只需少量的外围元件便可组成射频收发电路,具有体积小、功耗低、性价比高等优点。
1.2.2终端节点实现方案
终端节点实现方案如图3所示,主要包括微控制器STC89C58RD+、无线模块nRF24L01 Module和实际应用需求的扩展电路。STC89C58RD+微控制器和nRF24L01无线模块构成终端节点与无线USB控制器之间无线通信的基础,终端节点的扩展电路是根据实际应用需求来设计的,如应用于温度数据采集系统,则扩展电路应是温度传感器的电路,终端节点的灵活设置使得整个系统可以满足多种应用场合的需求。
2.1 nRF24L01无线模块原理图
nRF24L01是挪威Nordic VLSI公司推出的单片射频收发芯片,20个引脚4mm×4mm QFN封装,内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,采用Enhanced ShockBurst技术,使用SPI接口与微控制器通信,速率为0~8Mb/s,配置方便。nRF24L01适用于无线数据通信、无线个人电脑外设、无线报警及安全系统、无线开锁、无线监测、家庭自动化和玩具等诸多领域。关于该芯片的具体功能和工作模式及其编程过程请参照参考文献。该模块电路原理图,如图4所示。
nRF24L01模块在PCB布线时采用双面板,底层全部铺地,顶层放置元器件,所有电容电阻电感采用0402封装电容电感电阻尽量靠近芯片引脚,顶层也需大面积铺地,在顶层和底层放置大量的通孔。该模块供电电压为3.3V,SPI接口可以直接与5V的MCU的IO口相连接,无SPI接口的MCU可以用IO口模拟SPI时序,使用方便。
2.2 USB控制芯片PDIUSBD12原理图
PDIUSBD12是一款性价高的USB控制芯片,它与MCU配合使用,这使得设计者可以灵活地选择MCU,它与MCU之间通过并行接口通信,还支持本地DMA传输。图5是PDIUSBD12与STC89C58RD+单片机连接的原理图。
上图未画出STC89C58RD+单片机,只给出了网点名称,如P00-P07、P27、ALE、INT1、WR、RD,STC89C58RD+与标准的80C51(如AT89S51)引脚完全兼容,PDIUSBD12与MCU的连接有2种方式:总线方式和分开的地址数据方式。采用总线方式时引脚10的ALE连接MCU的ALE,引脚28的A0接到高电平;采用分开的地址数据方式,则ALE连接低电平,A0连接任意的IO口,数据或地址(命令)由A0来区分。图5采用总线方式。另外该无线USB控制器直接使用USB接口供电,省去了电源,降低了成本。
3.1 USB的固件与PC端应用软件设计
当USB设备连接到主机后,主机要先进行一系列的枚举过程,枚举就是从USB设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。枚举过程使用控制传输,对于USB设备来说,固件所要处理的是必须对主机发来的标准设备请求进行相应的正确的响应,除此之外依据USB设备的类型还要响应主机发来的USB设备类请求。另外如果开发属于生产商自定义的USB设备类,则需要开发驱动程序。为了减少开发驱动程序的复杂性,可根据实际情况使用USB标准设备类,现有的设备类有以下几种:音频设备类、通信设备类、HID设备类、显示设备类、海量存储设备类、电源设备类、打印设备类、集线器设备类等,例如可选择做成MassStorage类(海量存储设备类)或HID(人机接口)设备类,这样无需开发驱动程序,直接利用操作系统自带的驱动程序。本系统模拟成一个海量存储设备类,这样在枚举过程中固件除了要响应了标准的USB设备请求外,还需要响应2个类特殊请求:Get-MaxLun和BulkOnlyMassStorageReset,正确枚举之后PC机通过发送SCSI命令来控制U盘设备,对于海量存储设备类要响应以下几个命令:INQUIRY、READ CA-PACITY、READ(10)、WRITE(10)、REQUEST SENSE、TEST UNIT READY等,除此外要自定义私有的SCSI命令,以实现控制无线USB设备。另外还要构造一个FAT文件系统的格式,要正确返回DBR和FAT文件分配表以及文件数据。
PC端应用程序的开发采用VC++6.0平台,本设备模拟成MassStorage设备,那么PC与设备通信通过SCSI命令,使用时候除了标准的SCSI命令外,可以自己定义私有的SCSI命令,程序主要通过自定义的私有的SCSI命令来实现与无线USB控制器的数据通信,应用程序首先用CreateFile()打开设备,之后主要调用DeviceIoControl()函数来实现数据通信,最后用CloseFile()关闭设备。该函数的使用可参考MSDN。
以上部分的软件是整个系统开发的难点,所涉及的知识点范围广,图6是实际开发成功的模拟成MassStor-ageDevice类的无线USB控制器。
3.2 nRF24L01的固件设计
nRF24L01与MCU之间通过SPI接口通信,本系统所采用的单片机STC89C58RD+无SPI接口,故通过IO口模拟,nRF24L01采用ShockBurstTM进行可靠的发送和接收。采用AutoAck、自动重发的配置过程如下:
发送过程配置:
1)配置发射功率、数据速率、载波频率、CRC校验位数、发送的地址宽度和数据宽度、AutoAck、自动重发次数等。
2)配置PRIM_RX位为0。
3)配置要通信的的终端节点地址TX_ADDR和要发送的数据到TX_PLD,配置发送端RX_ADDR的值与TX_ADDR的值一样。
4)CE从低到高跳变芯片开始发送数据,CE至少需要10μs。
5)读取STATUS寄存器,判断发射成功与否。
接受过程配置:
1)配置发射功率、数据速率、载波频率、CRC校验、接收的地址宽度和数据宽度等等,其中数据速率、载波频率、CRC校验位数、接收的地址宽度和数据宽度必须和发送端一致。
2)PRIM_RX位配置为1,配置EN_RXADDR寄存器使能所有数据管道。3)CE从低电平跳变为高电平,130μs后nRF24L01开始监视空中的无线信号。
4)当IRQ中断时,中断服务程序里面读取STATUS寄存器,判断是否接收到有效的数据。
5)收到有效数据则设置CE为低电平,nRF24L01进入standby-I模式。MCU读取接收到的数据。图7和图8是无线USB控制系统应用于控制多终端频率发生器系统的实际软件和硬件。
整个系统通过实验验证满足了设计要求,USB工作稳定,速度快,RF24L01无线模块通信正常、距离远、误码率低、稳定性高。本系统可应用于大部分需要PC进行无线控制或无线数据采集的场合,只需要扩展终端节点的应用电路,即可以满足不同的应用需求。系统具有可靠性好、性价比高、扩展性强和使用方便。
全部0条评论
快来发表一下你的评论吧 !