基于CMOS图像传感器的USB接口图像采集系统设计
知CPLD开始传送数据;当完成64B的数据传送后, CPLD向单片机发送TXEND信号,以示64B 传送完毕,并等待下一个TXCOM信号,进行下一个64B的传送。单片机和CPLD通过这两个信号完成握手。CPLD在接收到TXCOM命令后,地址总线正确恢复上次传输到的SRAM地址(第一次传输时地址为0) ,并且控制MCU让出PDIUBD12的数据总线,然后产生SRAM读信号/RD,此时数据总线上就有了要传送的数据; 同时产生PDIUBD12 的写数据标志信号A0和写信号/D12WR,将数据总线上的数据写入PDIUBD12,完成数据从SRAM 到PDIUBD12 的传送。其传送数据的时序如图3。注意, PDIUBD12的写数据信号/D12WR, SRAM 的读数据信号/RD 和SRAM的地址信号ADDR时序要严格配合。当每一次完成64B 的数据传输后, CPLD 要发送TXEND 信号给MCU。整个传输过程控制严密紧凑,所有CPLD逻辑控制程序均采用VHDL 语言编写,经过测试,系统传输速度摆脱了单片机的影响,几乎接近PDIUBD12的极限速度。
图3 图像传输信号时序
系统软件设计
系统的软件包括USB设备固件、设备驱动程序和应用程序。
设备固件程序
设备固件是设备运行的核心,其主要的功能是控制接口芯片PDIUBD12并完成USB1.1协议(包括标准的设备请求、厂商请求处理、设置设备接口等) 。值得一提的是,此系统的单片机程序除了USB设备固件程序外,还有单片机对OV7620 的I2C控制软件,与CPLD的握手程序等,所有程序都用Keil C进行编制,最后链接后下载到MCU中。
设备驱动程序
在Windows操作系统中通过运行内核层的驱动程序才能控制硬件, USB 设备驱动程序采用标准WDM设备驱动。WDM采用IRP驱动机制。当应用程序提出I/O请求时,它调用WIN32AP I函数向设备发出命令,然后由I/O管理器构成一个IRP,USB设备驱动程序收到该IRP后,取出其中的控制码来找到对应的例程入口。在本系统开发中,驱动程序采用了DR IVERSTUD IO提供的DR IVERWORKS工具包,工具包提供了完善的源代码生成工具(DR IVER WIZARD)及相应的类库。开发驱动项目时,应用W IZARD 工具开发,自动生成驱动程序的. INF安装信息文件。对USB 设备驱动DR IVERW IZARD生成的代码只需做少量的修改便可,最后对项目编译链接后生成.SYS驱动程序。
应用程序
在Win2系统中,把每个设备抽象为文件,应用程序就通过几条简单的文件操作AP I函数实现与驱动程序中某个设备通信。USB通信常使用的API函数有:CreatFile, WriteFile, ReadFile, DeviceControl, CloseFile等。在应用程序时只需将上述函数加入到相应的功能模块中便可完成应用程序对USB 设备进行打开、读、写操作,这样就完全实现了两者的通信。应用程序最终实现了VGA, CIF等图像格式的应用。
- DSP内嵌PLL中的CMOS压控环形振荡器设计(03-02)
- 基于DSP内嵌PLL中的CMOS压控环形振荡器设计(05-05)
- 宽动态监控摄像机CCD/CMOS-DSP解析 (07-24)
- DSP与单片机通讯方式解析方案 (08-29)
- 基于ATmega162的智能仪器设计(08-18)
- 基于STC单片机的太阳能热水器智能节水控制系统设计(06-02)