FPGA与USB技术在纺织品数字印刷机系统中的应用
3.2 驱动程序
USB设备驱动程序负责建立起主机端和设备端的联系。在Cypress公司提供的EZ-USB FX2LP 开发包里包含了CyUSB.sys文件,这是一个符合WDM规范支持 USB2.0的通用设备驱动程序,开发应用时只需对VID、PID等几处修改即可满足本系统的应用需求。
通过对该驱动程序的CyUSB.inf文件进行客户化设计并随后采用Windows设备管理程序的做法,任何 USB设备均可与CyUSB.sys驱动程序相匹配。该驱动程序面向通用型用途的一个重要特点是其无需重新编译即可进行客户化设计,通过修改该驱动程序的.inf文件,能够使其通告一个与众不同的全局唯一标识符(GUID)。这将允许该驱动程序的不同副本在一台PC上适度地共存。此外,该.inf文件还使得驱动程序能够执行一连串预先记录的控制端点传送。这便允许根据与其相连设备的Vendor ID和 Product ID来对该驱动程序的启动特性进行客户化设计[6]。
3.3 应用程序
主机与设备一般通过主从方式进行数据通信,主机应用程序向设备发送命令数据包,设备接收到命令数据后,接收主机传送过来的数据。主机应用程序通过设备驱动程序完成对设备的控制和通信,采用 VC++6.0编写。
为了提高传输速度与效率,也为防止应用程序在读写数据时产生的“假死机 ”现象,应用程序采用多线程方法编写,一般要把数据传输放在另外一个线程里,即单独开启一个批量传输线程作为区别于主线程的辅助线程。批量传输线程负责向设备写入数据,并通过消息传送机制与主线程通信。主线程负责界面管理、数据处理、向设备发送命令数据包以及启动/停止批量传输线程。
在线程循环中,主要调用BeginDataXfer()、WaitForXfer()、FinishDataXfer()3个函数。其中BeginDataXfer()为发起异步传输,并且立即返回。即发起此次需要传输字节后,并不会等待传输完毕,而是立即开始下一次字节数据的传输;WaitForXfer()为异步传输最大等待时间;执行FinishDataXfer()时才开始真正地将传输数据写入设备存储器中。另外,如果要传输非512 B整数倍的数据,而且不是一次传输完,则应在批量传输线程中利用SetXferSize()函数重新设置传输大小,否则会导致数据不同步。
该系统经过测试,达到了预想的喷绘效果和速度要求。通过对 FPGA器件的使用,减少了分立元件的数量,同时简化了系统设计,增强了系统的可编程性能,使系统易于维护和升级,并有利于技术保密和知识产权保护。该设计方案已应用于实际开发的项目中。
CY7C68013A 纺织品数字印刷机 相关文章:
- 基于USB协议的DSP高速上位机接口设计 (10-02)
- 基于USB接口的LED显示系统设计(10-31)
- 采用CY7C68013A实现USB控制系统(08-30)
- 基于CY7C68013A和FPGA的ADSP-TS101扩展USB接口设计(08-26)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)