保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

USB便携式多道γ能谱仪的设计与实现


储器、收发器以及电压调整器,支持DMA方式,采用双缓冲区技术,遵从USB1.1标准。芯片中串行输入引擎(SIE)模块起着至关重要的作用,完成所有USB协议层功能,如同步模式识别、并/串转换、位填充/解填充、CRC检验/产生、包PID产生/确认、地址识别、握手信号包响应产生等。另外,D12还集成了SoftConnect、GoodLink、可编程时钟输出、低频晶振和终端电阻等特性,提高了系统的性价比。

图4

    微控制器采用HYUNDAI公司的GMS90L32,它是一种兼容Intel8032微控制器的产品,其主要特点是工作电压范围宽(2.7V~5.5V)、功耗低、性价比高。D12与GMS90L32的连接如图2所示。本设计使用了多路地址/数据总线复用方式。

此外,本系统选用了美国ST公司的PSD913F2,它是用于8位微控制器的具有大容量FLASH存储器、在系统编程(ISP)能够和可编程逻辑的器件。它将地址锁存器、FLASH、SRAM、PLD等集成在一个芯片内,成功地实现了微控制器系统的“MCU+PSD”两芯片解决方案。这种方案既可简化电路设计,节省PCB印制板空间,缩短产品开发周期,又可增加系统可靠性,降低产品功耗。

2 系统软件设计

2.1 微控制器固件程序

所谓固件程序就是固化在程序存储器中的程序代码。本系统的固件存储在PSD913F2的Flash存储器中,固件开发使用的是Keil C51语言,开发平台为μVision2集成开发环境。

    固件的开发是移植与开发相结合。本设计参考了Philips公司提供的D12固件程序范例,对于USB协议操作的相关代码可以直接移植使用,而数据采集、传输、存储等部分则是全新的开发工作。

固件程序结构如图3所示。硬件抽象层对D12的数据读、写以及各种指令的写入进行函数封装;D12命令接口层对D12的所有控制指令的函数进行封装;USB向量请求模块完成USB上电配置、向量请求等各类事件的响应处理;USB协议层包括对USB协议操作的封装以及对USB标准请求的响应;中断服务进程包括USB中断、ADC中断以及定时器0中断(记录测量时间)等。

主程序及ADC中断服务程序流程图如图4所示。主程序首先完成各种初始化,然后进入主循环,等待中断的发生,并根据标志变量执行相应的函数。当打开控制电路时,脉冲峰值别电路自动启动A/D转换,转换结束信号会触发微控制器外部中断1,进入ADC中断服务程序,读取A/D转换结果并存入缓存中,然后中断返回。

当D12有事件需要处理时,将触发微控制器外部中断0,微控制器读取D12的中断状态寄存器,判断中断的来源并作出相应的处理。若由数据端点触发,则相应地读取或写入数据;若由控制端点0触发,则判断请求的类型。标准请求由USB协议处理模块处理,用户自定义向量请求由USB向量请求模块处理。

    2.2 USB设备驱动程序的设计

在Windows环境下,USB设备驱动程序遵循WDM(Win32 Driver Mode)方式。为了简化设计,并兼顾驱动程序的运行效率,笔者选用了DriverStudio2.7工具软件中的DriverWorks组件进行USB设备驱动程序的开发。DriverWorks为WDM设备驱动程序的开发提供了完善的支持。其中包含一个非常完善的源代码生成工具DriverWizard以及相应的类库和驱动程序范例,它还支持在C++下进行设备驱动程序的开发。通过DriverWizard生成的代码只需要进行少量的修改可以使用,这使得驱动程序开发者可以将精力集中在驱动功能的实现上,而不必理会太多的WDM开发细节。

本设计在DriverWizard的最后自定义了三个IOCTL接口对USB设备进行控制,如表2所示。然后在自动生成的驱动程序代码中向相应的IOCTL函数添加代码,用函数BuildVerdorRequest构建USB

《USB便携式多道γ能谱仪的设计与实现(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/152537.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。