新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于USB总线的实时数据采集系统设计

基于USB总线的实时数据采集系统设计

作者: 时间:2013-02-05 来源:网络 收藏

2 系统软件设计

系统软件包括USB设备驱动程序、设备固件、应用程序。

2.1 USB设备驱动程序开发

即插即用管理模块实现USB设备的热插拔及动态配置。当硬件检测到USB设备接入时,Winodws98查找响应的驱动程序,并调用它的DriverEntry例程,PnP管理器调用驱动程序的AddDevice例程,告诉它添加了一个设备;然后,驱动程序为USB设备建立一个FDO(功能设备对象),在此处理过程中,驱动程序收到一个IRP_MN_START_DEVICE的IRP,包括设备分配的资源信息。至此,设备被正确配置,驱动程序开始与硬件进行对话。当然,在设备运行过程中,如果设备的状态发生变化(拔除、暂停等),PnP管理器也同样发出相应的IRP,由驱动程序进行相应的处理。

电源管理模块负责设备的挂起与唤醒。

I/O功能实现模块完成I/O请求的大部工作。当应用程序提出I/O请求时,它调用Win32 API函数DeviceIoControl来向设备发出命令。然后,由I/O管理器构成一个IRP并设置其MajorFunction域为IRP_MJ_DEVICE_CONTROL。USB设备驱动程序收到该IRP后,取出其中的控制码,并利用一个开关语句来找到对应的例程入口。

2.2 设备固件(firmware)设计

设备固件是设备运行的核心,采用汇编语言设计。其主要功能是控制芯片USB9602接受并处理USB驱动程序的请求(如请求设备描述符、请求或设置设备状态、请求设备设置、请求或设置设备接口等供10种USB1.1标准请求);控制芯片USB962接受应用程序的控制指令;控制A/D模块的数据采集;通过USB9602存储数据并实时上传PC。其程序主框图如图5所示。

在图5中,ALT事件表示硬件检测到USBN96902处于下列状态:Reset、Resume、Suspend,由ALTEV寄存器汇报并产生中断。



评论


相关推荐

技术专区

关闭