您现在的位置是:首页 > 传感器

基于USB2.0的红外数据传输系统的设计与实现

2020-05-28 01:02:11

基于USB2.0的红外数据传输系统的设计与实现

摘要:针对有线传输的缺点或不足,为避免经常插拔接口造成测试仪器损坏,设计基于USB2.0的红外数据传输系统。详细论述系统的总体结构和关键硬件电路的设计及实现,并阐述系统的固件程序、驱动程序及应用程序的设计方法。利用USB2.0接口技术与红外传输技术实现测试仪与PC机之间的无线数据传输。


1 引言
    随着测试技术和无线通信技术的发展和应用,测试仪器向微型化、低功耗发展,红外数据传输成本低廉,简单易用,在很多小型设备中得到广泛应用。为避免接口插拔造成仪器损坏,实现测试仪器与PC机间的无线数据传输,减少不必要的线缆连接,这里设计一种基于USB2.0的红外数据传输系统,该系统具有低功耗、控制简单、实施方便,传输可靠性高等特点。

2 系统硬件设计
2.1 主要器件选型
    Cypress公司的CY7C68013器件包含USB2.0的集成微控制器。它内部集成有1个增强型的8051、1个智能USB串行接口引擎、1个USB数据收发器、2个UART、3个8位I/O口、16位地址线、8.5 KB RAM和4 KB FIFO等。增强型的8051内核完全与标准8051兼容、而性能可达到标准8051的3倍以上。每条指令占4个时钟周期,在48 MHz晶振下工作时,单指令周期为83.3 ns,执行速度远快于标准的8051单片机。EZ-USB FX2支持3种接口模式,即GPIF控制器模式、从属FIFO模式和端口模式。GPIF控制器模式和从属FIFO模式与外围设备是8位或16位数据并行传输,根据本系统需要,选择串行通信的端口模式。
    由于USB传输的数据是基带二进制信号,而红外收发器传输的数据是3/16归零码,因此选用编解码器HSDL-7001实现CY7C68013器件与红外收发器之间的数据转换。为了实现系统的小体积,选用TFBS4652型红外收发器,该收发器是最小的红外收发器之一(6.8 mmX2.8 mmX1.6 mm),质量仅为0.05 g。最大传输速率达115.2 Kbit/s(SIR),发光二极管的工作电压范围为2.4~3.6 V,温度为-25~85℃。此外,该收发器还具有发送接收的使能控制端,当系统不工作时,可将此端口置低,这样收发器就处于关闭状态,降低系统消耗。

2.2 系统设计组成
    本传输系统主要由USB2.0接口电路(包括接口器件CY7C68013、电源转换、串行E2PROM)、红外编码解电路和红外收发器3部分组成。当需将外围设备中存储的数据读取到PC机时,PC机向USB2.0接口器件CY7C68013发送读取数据的请求命令,CY7C68013接收到请求命令后,把与外围设备通信的校验码通过串行通信接口发送至红外编解码HSDL-7001,然后将接口器件发送出的串行二进制数据编码成3/16归零码的脉冲,3/16归零码数据通过串行数据线传送至红外收发器,此时接口器件开启红外收发电器的收发使能端,红外收发器以红外光信号的形式发射3/16归零码脉冲数据,完成命令的发送;当外围设备连接的红外收发器接收到发送的3/16归零码数据命令后,将其送至外围设备,外围设备收到命令后响应发送数据,即完成一次从PC机到外围设备的数据通信。其具体实现原理如图1所示。

 


2.3 红外编解码电路
    图2为红外编解码电路,主要用到红外编解码器HSDL-7001,该器件遵循IrDA1.0通信协议物理层规范,接口与SIR收发器相兼容,可与标准的16550 UART连接,具有内部或外部2种时钟模式,工作电压范围为2.7~5.5 V,可发送/接收1.63μs或3/16脉冲数据形式。其中16XCLK为16倍波特率的时钟输入端,只在外部晶振时使用。

 

   OSCOUT、OSCIN为晶振接口,低电平时选择内部时钟。TXD引脚接收CY7C68013单片机串行端口发送的数据,经编码调制后,以脉冲的方式传输到IR_TXD端口。红外光脉冲数据转变来的电平脉冲信号,经IR_RX端口进入HSDL-7001,经内部解调后,通过RX引脚将数据发送到CY7C68013单片机的串行端口。引脚A0、A1、A2用于改变HSDL-7001的波特率选择,以匹配外同设备与PC机之间数据的传输。
    本系统选用外部晶体振荡器,选用频率为1.843 2 MHz有源晶振,在数据编码过程,HSDL-7001接收TXD传送的串行数据,在TXD的每个下降沿开始,IRRXD延迟7CYCLES的时间(16CYCLES为一个晶振周期),然后输出1个正脉冲,脉宽为3CYCLES,如果TXD0一直为低电平,则每个晶振周期内,IRRXD都会输出1个宽度为3CYCLES的正脉冲。如果TXDO为高电平,则IRTXD输出低电平,如图3所示。

 


    解码过程相反,编码过程看作是把TXD脉冲变窄的过程,而解码过程则看作是把脉冲拉宽的过程。解码过程中,当IRRXD传送1个宽度为3CYCLES的负脉冲,RXD就输出1个宽度为16CYCLES的负脉冲,如图4所示。

 


3 系统软件设计
    系统软件包括固件程序、USB设备驱动程序和应用程序。整个软件包括系统初始化、采样控制、数据传输和波形显示等部分。USB设备端固件及外围电路的底层控制程序主要采用C51编写,计算机端客户应用程序采用Visual Basic和Visual C++混合编程。
3.1 USB固件设计
    USB数据传输有4种方式:块传输、中断传输、同步传输和控制传输。当需要快速精确大批量传输数据时,一般采用块传输方式。设计中主要考虑本系统要求高速持续传输大容量的数据,并且对数据的完整性要求较高,故采用块传输方式。
    固件程序的编写采用Keil公司的Keil C51编译器(V6.10)。它为8051微控制器的软件开发提供C语言环境,同时保留汇编代码高效、快速的特点,相对于传统的汇编开发环境更加灵活、高效和易于使用。将代码在Keil C51环境中进行编译。编译通过后,将固件代码下载到USB单片机中,就可实现与外围设备的数据传输。

在整个固件程序中,EZ-USB FX2设备上电或复位后,首先初始化所有内部状态变量,随后调用任务初始化函数TD_Init(),开启中断,此时固件程序不断检测控制端口0是否收到SETUP包。一旦收到,固件程序就开始调用用户函数TD_Poll(),其中用户需要完成的功能代码在TD_Poll()函数中。调用完成后,重复检测端口O是否收到SETUP包,若有,继续执行设备请求,调用TD_Poll()函数;否则检测USB核是否有USB挂起信号。若有则调用用户函数TD_Suspend(),其返回值为真时,检测USB核是否有重新开始事件,没有时,设备进入挂起状态,反之,调用TD_Resume()进行下一次循环;当。TD_Suspend()函数返回值为假时,直接转入下次循环。
    此外,固件程序框架中还定义许多中断处理函数,当用到时可在相应的位置加入用户编写的代码,这样既清晰又便于理解,就可在无需改变整个程序的前提下,仅通过改变相应的模块,来实现用户设置的功能,本系统采用串口中断处理函数实现红外传输数据的接收。
3.2 驱动程序设计
    USB系统驱动程序采用分层结构模型(WDM),该模型定义分层的驱动程序,USB设备驱动程序不直接与硬件对话,而是通过USB驱动程序接口将USB请求快速提交到总线驱动程序进而完成硬件操作。从系统的角度来说,在USB设备插入主机后,主机检测到USB设备,读取设备描述符,然后主机根据设备描述符中提供的厂商ID和产品ID等,启用相应USB设备驱动程序,读取USB设备中的配置描述符、接口描述符和端点描述符,根据需要选择恰当的配置、接口和端点,确定传输方式。这一过程完成后,PC机与USB设备之间就可传输数据。
3. 3 应用程序设计
   应用程序是测试系统软件的核心,其对USB设备的操作功能为:开启或关闭USB设备,检测USB设备,设置USB数据传输管道。设置数据端口的初始状态,通过USB接口回传数据、存储、显示并分析数据。

4 结论
    本文设计的数据传输系统具有低功耗、控制简单、实施方便等特点,系统将USB2.O接口技术与红外传输技术结合,实现了测试仪与PC机之间的无线数据传输,达到了设计应用要求。
    为了保证传输数据的正确性,避免其他光波对传输数据的干扰,系统壳体安装红外滤光片:一方面,消除或减少散射辐射或背景辐射的有害影响:另一方面,分出具有特定波长区的红外波长。经多次试验证明,该系统能够可靠稳定传输数据,具有很好的实用性。