关 闭

新闻中心

EEPW首页>安全与国防>设计应用> 基于USB2.0的高速图像传输系统设计

基于USB2.0的高速图像传输系统设计

作者: 时间:2010-08-14 来源:网络 收藏


图2中,CY7C68033的PA3~PA2引脚作为地址线与TMS320DM6437 DSP的HCNTL[1:0]相连,用于选择HPI的寄存器与工作模式;FD[15:0]作为16位数据总线与HPl的数据总线HD[15:0]相连,用于交换数据;CTLx引脚为GPIF的输出控制信号,RDYO引脚为GPIF的输入控制信号。由于访问HPI寄存器需两次半字传输,因此使用CY7C68033的CTL0引脚进行控制。TMS320DM6437的HR/W接至CTL1,用来作为读/写选择标志;HDS1与CTL2相连,作为数据选通信号。HRDY与输入信号线RDYO相连,用于查询HPI接口状态,GPIF通过监测该信号以控制内部存取操作。TMS320DM6437的HINT与CY7C68033的INT0引脚相连,DSP复位时HINT引脚启用,该引脚也用于DSP向CY7C68033发送外部中断请求。另外,TMS320DM6437的HCS3引脚接地表示可对HPI进行连续存取操作。

3 图像采集系统软件设计

当USB设备插入计算机时,计算机和USB设备之间产生一个枚举过程。计算机检测到有设备插入。自动发出查询请求;USB设备回应该请求,发送出该设备的Vendor ID和Product ID;计算机根据这两个ID装载相应设备驱动程序,完成枚举过程。然后就可以传输数据,接收数据,即TMS320DM6437 DSP向PC机传输数据时,首先向CY7C68033发送一硬件中断信号,CY7C68033接收该中断,并启动接收程序,通过HPI接口设置DSP的HPIC寄存器的HINT标志位,使DSP下一次仍通过该位发出中断:然后通过端口6将固定长度(512字节)的数据读人FIFO:端口6读取数据时,为了保证较高的传输速度,CY7C68033中的CPU不能干预数据传输,当FIFO中的数据达到一定数量后,CY7C68033自动将数据打包传送给USB总线;发送数据时,它将数据包直接传输给CY7C68033,CY7C68033接收到数据后,按指定字节长度将数据读到发送端口2的FIFO中,然后自动启动GPIF,将数据传送给DSP,接下来CY7C68033通过HPI接口设置DSP的HPIC寄存器中的DSPINT位(将其置1),向DSP发送请求中断,通知DSP有数据包。

USB设备的软件开发包括设备固件、设备驱动程序以及应用程序3方面设计。

3.1 设备固件

设备固件设计是由主程序和中断处理程序2部分组成,其中,主程序负责系统外设器件的互联以及初始化设置USB端口等。系统上电时,通过USB电缆将固件程序下载到CY7C68033的内部RAM,为了传输可靠,固件程序下载采用批量传输方式。由于系统要求快速持续传输大量数据,因此采用同步传输方式。

3.2 USB设备驱动程序

USB设备驱动程序设计一般采用Windows DDK(devicedriver kil)设计,但由于DDK的复杂性和调试难度,难以开发稳定完善的USB驱动程序。因此,这里选用NuMega公司的开发软件DriverWorks,它是以面向对象的思想完全封装DDK的所有库函数。

通过DriverWorks提供的类,编写大部分驱动程序。最重要的是DriverWorks提供对USB总线的封装,这样大大简化对USB总线的操作接口。DriverWorks通过向导生成USB驱动程序的框架,并利用KDriver、KPnpDevice、KpnpLowerDe-vice等类简化WDM(Win32 driver module)驱动程序编程,它们分别对应的封装是WDM中的PD0、FD0、FiD0。每一个WDM驱动程序都有一个入口函数AddDevice,当PC机监测到USB接口中接入新设备时.立刻调用入口函数AddDevice并且创建设备的PD0,接着将其保存到函数参数指针中。成员函数AddDevice同时创建另外一个设备对象FD0.它被KPnpDevice封装。对WDM总线驱动程序的上层接口通过KpnpLowerDevice类实现FD0和PD0之间的连接,同时它也提供对PD0的操作接口。对USB客户驱动程序从KLow-erDevice类派生出的KusbLowerDevice类封装USB的底层设备对象,通过其接口操作USB总线的驱动程序。

3.3 客户应用程序



评论


相关推荐

技术专区

关闭