发表于:2011/5/18 16:33:12
#0楼
引言
通用串行总线(Universal Serial Bus,USB)为个人计算机外围设备输入输出提供了新的 接口标准。他使设备具有快速、热插拔、即插即用、自动配置的能力,并标准化了设备连接。同时,USB的级联星型拓扑结构不仅使得连接外部设备多达127个,还解决了资源冲突、中断请求、直接数据通道等问题。传统的收发器一般以RS232接口与PC机通信,其硬件实现简单。如果改为USB接口,将使无线/有线收发器具备USB通信的诸多优点。
PDIUSBD12是一个完全符合USB11规范,性能优化的USB器件,通常用于基于微控制器的系统,并与微控制器通过高速通用并行接口进行通信,也支持本地DMA传输。该器件采用模块化 的方法实现一个USB接口。允许在众多可用的微控制器中选择最合适的作为系统微控制器。允许使用现存的体系结构并使固件投资减到最小。这种灵活性减少了开发时间、风险和成本,是开发低成本且高效的USB外围设备解决方案的一种最快途径。
根据现场实际情况,选用TDX230RTMD电台及配套天线,该产品可提供语音或数据信号的透明传输,能适应各种点对点、点对多点的无线数据通信方式,具有收发一体、安装方便、使用简单、性价比高、稳定可靠等特点,广泛用于各种数据的远程采集、控制系统之中。
结合上述两种技术的优点,设计了一种无线USB接口收发器,可进行远距离数据的无线传输。
2硬件电路设计
本文设计的无线USB接口收发器的硬件电路总体框图如图1所示。
Philips公司的PDIUSBD12芯片符合USB1.1规范,采用28脚SO或TSSOP封装,可以在3.3±0.3 V或3.6~5.5 V两种电压下工作,内部集成SIE、320 B的FIFO缓存、收发器以及电压调整电路和终结电阻器,提供2 MB/s速率的并行接口,具有全自治本地DM A功能,芯片提供的多重中断模式有利于批量和等时数据传输模式。芯片还提供了可编程时钟、上电复位和低电压复位电路。芯片提供了双倍的输入输出缓冲,在批量模式达到1MB/s数据传输率,同步模式也可达到1 MB/s数据传输率。
微控制器MCU采用Atmel公司的89C52。MCU的串口与模块式无线数传收发模块RXD、TXD直接相连,PDIUSBD12接在MCU的数据总线上,中断引脚INTN接在MCU的中断输入上。PDIUSBD1. 2会对USB总线上的数据自动进行处理,将事件写入自身的中断寄存器,并拉低INTN通知M CU。MCU响应中断,并读取中断寄存器的内容进行判断处理。如果是要求数据发送,则将数据通过串口发往模块式无线数传收发模块,由其发射出去。同样模块式无线数传收发模块接收到数据后触发串口中断,MCU响应中断将数据送入USB总线。由于总线供电方式不稳定,整套系统使用自供电方式。
图2所示是采用了1个89C52的微控制器与PDIUSBD12集成电路相互连接图。由于89C52是应用 广泛的一种单片机微控制器,软件开发工作者在其基础上开发大量的软件开发平台,大多数电子工程师对其都比较熟悉。因此,用户可以利用比较熟悉的微处理器(89C52)进行核心程序的设计,即用89C52来实现其所需的功能,具体将数据信号转换为符合USB规则的信号,则完全由PDIUSBD12来完成。这样一来,既可以利用89C52中丰富的软件资源,又可以利用USB总线技术的即插即用、热插拔等特性,使开发设备的成本降低、开发周期缩短。
3软件部分设计
软件设计主要包括两部分:一是USB设备端的单片机软件,主要完成USB协议处理与数据交换,以及其他应用功能程序。二是上位管理机端的程序,由USB通信程序和用户服务程序通过USB通信程序与系统的设备接口通信,由系统完成USB协议的处理与数据传输。
3.1单片机方面软件设计
单片机控制程序由三部分组成:初始化单片机和所有的外围电路(包括PDIUSBD12);主循 环部分,其任务是可中断的;读写中断服务程序,其任务是对时间敏感的,必须马上执行。
单片机和PDIUSBD12通信主要是靠单片机给PDIUSBD12发命令和数据实现的。PDIUSBD12的命令字可以分为三种:初始化命令字、数据流命令字和通用命令字。PDIUSBD12给出了各种命令的代码和地址,单片机先给PDIUSBD12的命令地址发命令,根据不同命令的要求再发送和读出不同的数据。因此,可以编写不同功能的函数,用函数实现各个命令,之后直接调用函数即可。
后台D12中断服务程序和模块式无线数传收发模块中断服务程序与前台主循环程序之间的数据交换,通过事件标志和数据缓冲区来实现。后台中断服务程序由中断触发,通过标志位与主模块通信。主模块循环扫描各标志位,对相应的标志位做出处理。例如,模块式无线数传收发模块接收到有效数据后,送入串口触发串口中断,进入模块式无线数传收发模块中断服务程序,将数据接收后放入数据缓冲区,然后设置UART_DATA标志,退出子模块。主模块查询到UART_DATA被置位,则调用writendpoint()程序将数据发往PC。
根据USB协议,任何传输都是由主机开始的,这样89C52做他的前台工作,等待中断。主机首先要发令牌包(TOKEN PACKET)给PDIUSBD12,D12收到令牌包后就给89C52发中断,89C52进入中断服务程序,首先读D12的中断寄存器,判断USB令牌包的类型,然后执行相应的操作。因此,USB的89C52程序主要就是中断服务程序的编写。在USB的89C52程序中要完成对各种令牌包的响应,其中比较难处理的是Setup包,主要是终端0的编程。单片机软件流程图如图3所示
3.2主机方面软件设计
上位机的程序主要调用4个API函数。根据上位机对USB端口的使用情况,用Delphi调用这4个函数就可以实现上位机对USB端口的操作。
Philips为用户提供了D12的驱动程序,但是用户需要根据自己的要求更改inf文件,然后在Windows DDK中重新编译连接生成新的驱动程序,以满足实际应用的需要。
在编写主机应用程序时要注意对主终端的操作,应该在程序中将数据缓存加大,Philips提供的驱动程序支持64 B~64 kB的缓存,这样可以有效减少设备和主机的握手时间,提高传输速度。程序编译时,需要注意保持编译的路径。
4结语
本文结合USB接口和无线通信两种技术的优点,应用在多点测温控制系统中,为PC和智能仪器之间提供了一种快速方便的数据交换方式。
采用对单片微处理器直接扩展USB接口技 术,连接简单,控制方便。随着USB技术的不断发展,USB也会和串口一样获得广泛的应用。