您现在的位置:首页 > 技术资料 | ![]() |
无线USB的设计与实现 1 引言 USB(Universal Serial Bus通用串行总线)是一种快速、灵活的总线接口。与其它通信接口比较,USB接口的最大特点是易于使用,支持热插拔,并且所有的配置过程都由系统自动完成,无需用户干预。USB接口已成为现代微型计算机的标准配置。 短距离无线通信,具有抗干扰能力强、可靠性高、安全性好、受地理条件限制较少、安装施工简便灵活等特点,应用非常广泛,如汽车遥控门钥、无线抄表、饭店的无线点菜、遥控遥测、小区自动化等等。 结合上述两种技术的优点,本文提出了一种无线USB的实现方案,可进行短距离数据的高速传输。以此为基础,可快速开发出相关的短距离无线通信产品。 2 应用芯片 PDIUSBD12有三个端点:控制端点、通用端点和主端点,可配置成四种模式以满足不同的需要。片上集成一个6~48 MHz的倍频锁相环(PLL),允许使用6 MHz的低频晶振,从而使电磁干扰大大减小,给PCB布线带来了极大方便。它所提供的GoodLink接口可接LED,根据通信的状况间歇闪烁,指示USB的连接状况。 PDIUSBD12所具有的低挂起功耗连同LazyClock输出,可以满足ACPI、OnNOW和USB 电源管理的要求。低的操作功耗可以应用于使用总线供电的外设。此外,它还集成了 SoftConnetTM、可编程时钟输出和终止寄存器集合等多种特性,不仅为系统节约了成本,而且使USB 功能在外设上的应用变得更加容易[2]。 NRF401是挪威Nordic公司最新推出的数传频段 433MHz单片无线收发一体芯片。采用FSK调制解调技术,最高数据传输率达20k bit/s,最大发射功率为+10dBm,接收灵敏度高达-105dBm,开阔地的使用距离最远可达1000m。天线接口设计为差分天线,可以采用低成本的PCB天线。该芯片为低功耗设计且支持待机模式,接受状态下的功耗为250mA,发射状态下的功耗为8mA,等待状态功耗仅为8mA。它的工作电压范围很宽,可以从2. 7~5V。它的外围元件很少,只包括一个基准晶振和几个无源器件,没有调试部件,可以直接与单片机串口连接,给设计和生产带来了极大的方便[3] 。 3 硬件设计 本文设计的无线USB方案的硬件结构如图1所示。
4 软件设计 该系统的软件设计包括P89C58UBP中的固件设计和微机端的通信软件设计。其中,固件部分的流程图如图2所示。
值得注意的是,NRF401在接受状态下即使没有数据接受,也会有随机码输出。因此需要在所需传输的数据前加入标识头,如55AAH。当检测到从串口进入的数据为55AAH时,再开始有效数据的接受。 对PC而言,无线USB传输模块是它的一个USB外设,因此必须提供USB设备的驱动程序。驱动程序的设计采用WDM模型[5],使用DriverStudio 进行开发。DriverStudio是一款优秀的驱动程序开发软件。启动DriverStudio中DriverWizard,填写USB设备的端点配置,便会自动生成驱动程序原代码和相应的测试程序原代码,只需稍做改动便可用VC6.0编译运行[5]。驱动程序向用户程序提供标准的IO接口:WriteFile ()、 ReadFile() 、DeviceIoControl ()。用户程序调用相应的函数,即可实现对USB设备的访问。下面的例子是实现向USB总线写数据的功能。 hFile = open_file(threadParam->pipe_name); //打开需要使用的端点 …… bResult = WriteFile(hFile, threadParam->pcIoBuffer, //等待传送的数据缓冲区地址 threadParam->uiLength, //数据长度 &nBytes, NULL); //向该端点写入数据 DeviceIoControl(hFile, //复位该端点 IOCTL_D12_RESET_PIPE, 0, 0, 0, 0, &nBytes, NULL);} 编程过程中要注意串口波特率要一致,否则会造成接受数据错误。NRF401周围的布线和天线的设计很有讲究,一定要按照手册的要求进行设计。 参考文献: [1] Universal Serial Bus Specification Revision 1.1. http:/ [2] PHILIPS Semiconductors PDIUSBD12 Specification. http://www.semiconductors.PHILIPS.com /, 1999. [3] Nordic 433Mhz Single Chip RF Transceiver NRF401 datasheet. http:// www.nvlsi.no/theNRF401.htm, 2000. [4] 徐爱钧.单片机高级语言C51 Windows环境编程与应用[M].北京: 电子工业出版社, 2001. [5] KRULINSKI D J. Programming Microsoft Visual C++6. 0技术内幕[M].北京: 希望电子出版社,1999.
|