光缆检测系统中的USS设备接口设计

时间:2022-09-30 11:30:21

光缆检测系统中的USS设备接口设计

摘要:把CY7C68013成功用于光缆检测系统中,实现了标准的USB接口。该接口实现了标准的USB1.1和USB2.0协议。

关键词:光缆检测;USB;接口;CY7C68013

引言

随着人们对通信的要求越来越高,光通信以其独特的优势而越来越普及,与此同时光缆检测也变得非常重要,为适应对预设光缆线路的可用状态实时监测和管理需求,要求光缆线路监测系统能够对预设通信光缆进行拓扑管理、告警管理、统计分析管理、安全管理、资源管理和系统自维护。

光缆检测系统和计算机之间的接口设计是该系统的一个重要组成部分。RS-232接口曾经取得过巨大成功,但是随着计算机与设备的发展,RS-232串行端口逐渐成为通信的瓶颈。而USB则突破原有接口的限制,不仅具备较高的通信速率,而且其弹性化设计可以取代各种设备所使用的接口,在计算机接口中也占据着越来越明显的优势。

Cypress公司的CY7C68013芯片内部是增强型51单片机,控制简单,并实现了标准的USB1.1和USB2.0协议,而且成本较低,用于光缆检测系统是一个很好的选择,然而,其实现架构较为复杂。本文重点分析和讨论了其固件程序、驱动程序等开发过程,实践表明,本文的方法达到了预期设计目的,效果较好。

光缆检测系统

图1是光缆线路检测硬件模块框图,由DTE接口单元、主控处理单元和PSTN接口单元组成。

DTE接口单元:提供了RS-232接口,USB接口。USB符合1.1和2.0协议。

主控处理单元:是系统的核心模块。主要功能为:从DTE接口单元接收命令,并通过调制解调后发送到远端监测站;从PSTN接口接收远端监测站的信号,解调后发送到DTE。

PSTN接口单元:提供了分别用于轮询和中断两路PSTN标准接口。

本文采用从底层到上层的结构来叙述如何使USB设备完成光缆检测系统和计算机之间数据传输的基本功能。

USB设备接口设计

USB设备接口设计主要包含两方面的内容:USB芯片和光缆检测系统之间的接口;USB芯片和计算机之间的接口设计。其中USB芯片和光缆检测系统之间的接口可分为固件配置程序设计和接口时序设计;USB芯片和计算机之间的接口可分为驱动程序设计以及驱动程序和应用程序之间的通信。

固件配置程序

USB传输类型包括中断传输(interrupt)、批量传输(bulk)、等时传输(iso)、控制传输(control)四种类型,四种类型的相关特性:数据最大长度、数据周期性、发生错误是否重传、可得到的最大带宽等都存在较大区别。根据光缆检测系统和计算机之间数据交互的特点,CY7C68013被配置为slave、异步、bulk模式。图2是固件程序的框架结构,只完成数据读写的功能,不对数据进行任何处理。

要实现最基本的数据读写功能只需要在TD_Init函数中进行配置,由于篇幅原因这里仅列举比较重要的一些寄存器的配置情况(表1)。

这里仅仅配置了端点2和端点6,端点2配置为写设备地址,端点6配置为读设备地址,两个端点都设置为4个缓冲区,缓冲区大小设置为512bytes,两个端口都设置为自动方式,这样设置可以使得读写数据非常方便,大大减少开发时间和复杂性。

接口时序设计

异步slavefifo写时序设计

外部主控器进程如下:

IDLE:当写事件发生时,转到状态1。

状态1:指向IN FIFO,激活FIFOADR[1:O],转向状态2。

状态2:如果FIFO满标志为1(1:FIFO不满;0:FIFO满),则转向状态3,否则停留在状态2。

状态3:传送总线驱动数据。传送一个数据,激活SLWR,转向状态4。

状态4:如果有更多的数据要写,则转向状态2,否则转向IDLE。

实现异步从属FIFO读和实现异步从属FIFO写大同小异,这里不再赘述。

驱动程序设计

驱动程序设计主要包括驱动程序设计、用来安装驱动程序的inf文件设计。Cypress公司为了使用户使用简单,已经完成了大部分工作,用户只需要对其驱动程序和inf文件作一些必要的修改就可以实现需要的功能。用户可以去掉Cypress公司提供的部分不需要的功能,同时需要对USB设备描述符、配置描述符、接口描述符、端点描述符和串描述符进行修改。

固件驱动程序的功能是使计算机认识自己的USB设备,因此需要对设备进行固件程序配置,固件配置程序可以在Cypress公司提供的框架下进行修改,主要是对端点和选择模式相关的寄存器进行配置,然后通过提供的hex2c将生成的十六进制文件转换为一个数组,并将该数组替换驱动程序中的firmware[],用DDK进行编译产生固件驱动程序。计算机通过搜索注册表中的设备VID和PID来识别USB,如果存在EEPROM或者是FLASH,则这个VID和PID可以开发人员自己定制。如果没有EEPROM则VID必须为04b4,PID必须为8613,否则设备将无法被识别。

下载固件驱动程序后,需要下载通用驱动程序,通用驱动程序可以完成需要设备完成的一系列功能。通用驱动程序可以直接使用Cypress公司提供的通用驱动程序。配置的时候VID和PID必须和inf文件中通用驱动程序的VID和PID一致。

lnf文件的编写

所有的USB设备都至少具有一个VID和PID,VID和PID通过设备描述符表提交给Windows系统,同时,Windows系统使用INF文件将某一个VID和PID绑定到某一设备驱动程序。这样,Windows系统在知道了设备的VID和PID后,就通过存储在INF文件中的信息查找该设备的驱动程序。第一次安装后,VID和PID信息就保存在注册表中,以后当该设备重新插上时,系统就会在注册表中很快的查找该设备的驱动程序信息。

固件驱动程序的VID和PID必须为04b4和8613(如果有EEPROM则可以定制),固件驱动程序主要是用来自动加载固件配置;通用驱动程序的VID和PID必须和固件程序中配置的一致;

读写测试的C语言程序

操作设备之前需要安装驱动程序,此时需要把sys文件和inf文件分别拷贝到系统文件夹system32\drivers和inf下,然后依次选择驱动程序目录文件进行安装即可,驱动程序安装成功后就可以对设备进行访问。访问过程通常分为三个阶段:打开设备、操作设备、关闭设备。

打开设备可以通过符号链接名方式,用CreateFile函数可以以同步方式打开设备,获取设备句柄。操作设备通过DeviceIoControl函数可以完成,由于接口时钟不同,所以要用异步方式对设备进行读写,否则设备读写将会出现错误;读取设备时采用直接程序控制方式,即CPU不断查询设备的FULL状态位,当有数据到达时该位变为低电平,CPU就开始读取数据。设备操作完成后通过CloseHandle函数关闭设备句柄。

结语

通过上述从底层到上层设计的几个步骤就可以实现标准的USB1.1和USB2.0协议,实践表明,该设计在光缆检测系统中工作良好。随着个人电脑和各种电子产品,如打印机、扫描仪、调制解调器等,还是新出现的产品,如数码相机、摄像机、移动硬盘、闪存等,几乎100%支持USB,因此USB接口的应用十分广阔。

上一篇:MEMS传感器开创汽车主动安全系统的新时代 下一篇:基于LabVIEW和PXI的汽车数字仪表测控系统