2.1 USB固件程序
固件设计主要完成设备枚举、主机与设备的数据交换、设备端的数据处理和控制等工作,固件程序设计成前后台模式,把设备端数据处理和控制作为MCU的前台任务,枚举及枚举成功之后的USB数据交换放在后台进行。实现设备与主机以最大的传输速率通信。
设计时将USB端口1和端口2定义为普通输入/输出类型,对应于PDIUSBD12的模式0。控制端口0完成响应USB标准请求的功能,输入端口用于把数据采集电路采集并打包的硬度值数据送给USB主机,输出端口接收USB主机发送的包。
PDIUSBD12从USB收到一个数据包,就对MCU产生一个中断请求,MCU立即响应中断,中断服务子程序用来处理由PDIUSBD12引发的中断,它将数据从PDIUSBD12的FIFO中取回到MCU存储器中。各端点中断处理程序如下:
在各端点的中断处理程序中,MCU主要是通过对PDIUSBD12端点缓冲区写入或读取数据包来完成处理过程的,其流程如图2和图3所示。
2.2 USB上位机驱动
采用DriverStudios开发USB的WDM(Windows Driver Model)驱动程序。WDM支持即插即用、电源管理和WMI技术。
Driver Studio嵌入在VC 6.0中,在Driver Studio中的Driver Works提供了USB驱动程序设计向导,只要按照向导完成相应的操作和设置就可以设计出一个简单的USB驱动程序,Driverwizard会根据设定给出一个WDM驱动程序的框架。
在使用驱动程序向导过程中,系统会提示用户输入USB设备的Vendor ID和Product ID,这时应该注意与具体使用的芯片对应,这里PDIUSBD12对应的Vendor ID为0471,Product ID为0888。向导完成后,在WDM驱动程序的框架中添加需要实现的USB端口1和端口2的读写功能代码。然后编译驱动程序工程文件,生成需要的USB 功能驱动程序。
2.3 上位机应用程序
本方案中,硬度测量系统的上位机应用程序集合了与设备进行数据传输、数据查询、参数设置、计量标准转换、测量误差修正、统计分析、及数据导出、数据打印等功能。该系统可以在单机工作模式或连接工作模式下使用,并设置了用户认证和密码保护功能。
实现和USB控制器进行数据的批量传输,主要在系统界面的“接收”页面的控键的程序段中编写功能代码,主要完成在设备驱动程序中查找设备,以进行USB通信传输,并将设备发送来的数据进行显示和保存。接收到的数据可以在页面上直接显示,并且可以在参数设置页面中预先设置硬度值上下限,对接收到的超出范围的数据自动进行识别和标识。上位机应用USB的数据接收界面如图4所示。
|