基于USB总线和89C51单片机的数据采集设计.doc

上传人:laozhun 文档编号:4141558 上传时间:2023-04-07 格式:DOC 页数:37 大小:228.50KB
返回 下载 相关 举报
基于USB总线和89C51单片机的数据采集设计.doc_第1页
第1页 / 共37页
基于USB总线和89C51单片机的数据采集设计.doc_第2页
第2页 / 共37页
基于USB总线和89C51单片机的数据采集设计.doc_第3页
第3页 / 共37页
基于USB总线和89C51单片机的数据采集设计.doc_第4页
第4页 / 共37页
基于USB总线和89C51单片机的数据采集设计.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《基于USB总线和89C51单片机的数据采集设计.doc》由会员分享,可在线阅读,更多相关《基于USB总线和89C51单片机的数据采集设计.doc(37页珍藏版)》请在三一办公上搜索。

1、论文题目:基于USB总线和89C51单片机的数据采集系统设计学生姓名:所在院系:机电学院所学专业:应用电子技术教育导师姓名:完成时间:摘 要本文介绍了基于USB总线的数据采集设备的开发法,包括数据采集硬件设计、USB总线的硬件设计,同时也简单的介绍了设备固件设计、基于USB的远程数据采集。89C51通过对多路采集模块进行控制,选出一路通道的数据寄存在单片机,再通过USB芯片将89C51采集到的数据上传给上位机。关键词:数据采集,89C51,通用串行总线Based on the USB bus and 89C51 single-chip data acquisition system desig

2、nAbstract This paper introduces the acquisition based on USB bus-based data acquisition, including the data acquisition hardware design and USB bus of the hardware design. Also introduces USB-based remote data acquisition system and firmware design. 89C51 selects the way data storage channel in the

3、single-chip by controlling multi-channel module, and then the data collected by 89C51 upload to the host computer. through the USB chipsKey word: Data Acquisition, 89C51 Single-chip, Universal Serial Bus目 录1 引言12 总体方案设计12.1 设计思路12.2 设计方框图13 数据采集设计23.1 模拟信号的多路选择23.2 多路开关原理23.3 A/D转换介绍33.3.1 分辨率33.3.2

4、 误差和精度43.3.3 转换速率43.3.4 A/D转换的方法43.4 数据采样电路44 单片机介绍64.1 单片机的基本组成64.2 单片机引脚及功能65 USB接口电路设计75.1 USB芯片内部结构85.1.1 端点085.1.2 端点195.1.3 端点295.1.4 外部固件参考流程95.2 USB芯片与单片机的接口电路105.3 USB设备驱动程序设计116 应用程序设计127 设备固件设计138 远程数据采集系统设计149 结束语15致谢15参考文献15附录一 整体电路图17附录二 CH375芯片管脚18附录三 程序清单191 引言在工业生产和科学技术研究过程中,常常需要对各种

5、数据进行采集,现在常用的数据采集方式是在PC机或工控机内部安装数据采集卡,如A/D卡、RS-422卡及RS-485卡。采集卡不仅安装麻烦,易受机箱内其他电路的干扰,而且由于受计算机插槽数量和地址、中断资源的限制,不可能挂接很多设备。本设计利用通用串行总线(Universal Serial Bus,简称USB) 设计了基于USB总线的数据采集设备很好地解决以上这些冲突。2 总体方案设计2.1 设计思路 本设计主要包括三部分:数据采集设计部分,单片机控制部分和USB设计部分。数据采集由多路模拟开关、滤波采样保持、隔离放大、A/D转换、光电隔离器组成。单片机采用AT89C51。USB电路主要采用CH

6、375芯片。单片机再从地址寄存器中发出地址控制信号经光耦控制多路模拟开关。多路模拟模拟开关根据地址控制信号选择一路信号进行滤波、放大、A/D转换后送至单片机的移位寄存器。移位寄存器将采集到得数据转换为8位并行是传送到USB芯片的数据缓冲区中;一旦数据缓冲区存满,USB芯片自动将数据打包即时请求读入数据,然后89C51系统将数据从数据缓冲区中读出,由收发器通过数据线(D+、D-)送至主机。2.2 设计方框图光 电 隔 离 器多 路 模 拟 开 关单 片 机USB 电 路上 位 机滤 波 采 样隔 离 放 大A/D 转 换 图1 设计方框图3 数据采集设计3.1 模拟信号的多路选择32路模拟电压信

7、号(如1-5V)送往多路模拟开关组成的模拟数据选择器,选择控制信号决定其中1路模拟信号经滤波、隔离放大、A/D转换,变为M位十进制数据,存到单片机的移位寄存器中移位寄存器,单片机再将采集到得数据转换为8位并行数据由USB接口电路送到上位机。当地址线为8位是,最多可达2的8次方256路。如不采用数据选择方案,则所需的隔离放大器、A/D转换器也将多达256个4。3.2 多路开关原理多路开关是切换数字信号和模拟信号的器件,也称多路转换器或多路复用器,记为MUX,能切换数字信号的多路开关也称数据选择和数据分配器;能切换模拟信号的多路开关也称多路模拟开关,模拟开关同时也能切换数字信号。早期的多路开关曾采

8、用继电器,但它有速度慢、体积大、噪声大、使用寿命短等缺点。现在的数据采用电路中多采用集成的多路开关,典型的多路开关有4双通道多路开关、单8通道多路开关、双8通道多路开关、单16通道多路开关等。其中单8通道多路开关典型的产品型号为CD4051,但由于它们是早期标准CMOS产品,性能已经不能满足控制系统的许多要求。AD公司的ADG658/659是CD4051/CD4052的改进型。现已ADG658/ADG659为例介绍其机构和功能,ADG658/ADG659引脚图如图2所示,其功能见表1。 图2 ADG658/ADG65引脚图表1 ADG658功能表A2A1A0EN/输出DXXX1与输入断开000

9、0S10010S20100S30110S41000S51010S61100S71110S8ADG658有一个使能端EN/和三个选择/分配控制端A2、A1、A0,S1-S8和D分别为多路开关引出端,S1-S8既可作输出,也可做输入。S1-S8做输入时,D做输出。当把ADG658视为8选1数据选择器时,A2、A1、A0为选择控制端,S1-S8做输出,D为输入:当把ADG658视为1至8数据分配器时,A2、A1、A0为分配控制端,使能端EN/=1是,S1-S8与D之间断开。EN/和A2、A1、A0为逻辑信号输入端,S1-S8与D之间可传逻辑信号4。表2 ADG659功能表A1A0EN/输出DA输出D

10、BXX1与输入断开与输入断开000S1AS1B010S2AS2B100S3AS3B110S4AS4BADG659有一个使能端EN/和两个选择分配控制端A1、A0,S1A-S4A和DA、S1B-S4B和DB分别构成4:1MUX,它同时受EN、A1、A0控制。3.3 A/D转换介绍 3.3.1 分辨率分辨率是用来表示ADC对于输入模拟信号的分辨能力,也即ADC输出的数字编码能反映多么微小的模拟信号变化。ADC转换器的分辨率定义为满量程电压于在最小有效值之比值。例如,具有12位分辨率的ADC能够分辨出满量程的1/4096,对于10V的满量程能够分辨输入模拟量电压变化的最小值约为1.5mV.对3位半A

11、/D转换器,满量程数据位1999,其分辨率为1/1999。显然ADC数字编码的位数越多,其分辨率越高8。3.3.2 误差和精度误差包括量化误差、偏离误差、线性度登。量化误差是由于ADC的有限分辨率所引起的误差。偏离误差时指输入信号为0是输出信号不为0的值,所以有时也称零值误差。线性度有时也称非线性度,它是指ADC实际的输入/输出特性曲线与理想直线的最大偏差。精度通常也称转换精度,有绝对精度和相对精度之分。绝对精度是指为例产生某的数字码,所对应得模拟信号值与实际值之差的最大值,它包括所有的误差。相对精度是绝对精度与满量程输入信号的百分比。它通常不包括能够被用户消除的误差。对于线性编码的ADC,相

12、对精度就是非线性度,其值为加减1/2LSB.精度通常与分辨率密切相关,高精度的前提必须有高分辨率,当然单有高分辨率还不一定就可达到高精度。3.3.3 转换速率ADC的转换速率就是能够重复进行数据转换的速度,即每秒转换的次数。有时也用完成的一次A/D转换所需要的时间来表示,称为转换时间。转换时间也就是转换速度的倒数。不同转换方式的ADC其转换速率有很大不同。低的只有1次/秒,高的可达百万次/秒。3.3.4 A/D转换的方法A/D转换的实现方法有多种,随着大规模集成电子技术的飞速发展,新型设计思想的A/D转换器就不断涌现。不同方法实现的A/D转换器也就使用于不同的场合。比如说并行式ADC它的特点就

13、是转换速度最快但是分辨率不高,适合高频采样的场合;逐次比较式ADC它的转换速度高,转换分辨率比较高,速度和分辨率能满足大部分要求,但常态干扰的抑制能力较差。适用于温度、压力、流量、语音、电量等信号的采集。3.4 数据采样电路图3给出的是1个利用4片ADG658和1片ADC0831组成的32路数据采样电路。32路模拟量输入的为毫伏级电压,经多路开关选取其中1路信号,送至RC滤波电路,再经高精度运放OP-07放大然后送至ADC0831进行A/D转换,转换后的数据以串行输出。放大器的增益电压约为100,ADC0831的Ref基准电压为2.5V,由MAX6034_25提供,因而可测量输入信号的电压范围

14、为2.5V/100=25mV.假定输入信号来自K分度号热电偶,在输出电势为0-25mV时,对应的测量温度为0C-600C。该数据采用电路如应用于热电偶的检测,还有三点需要考虑,一是零点补偿,二非线性校正,三是量程校正。零点补偿电路可加在放大器之前,也可通过其他传感器测量冷端温度,然后通过软件补偿。非线性校正一般可采用软件方法,在精度要求不高的情况下,对K分度热偶也可省略非线性校正。量程校正即对放大器增益的校正,通过电路中的电位器微调增益。如希望K分度热电偶600C时的电势24.902mV与输出2.5V对应,则电压增益应校正为2.5/0.24902=100.39另外可以通过对ADC8031的Re

15、f经电阻衰减作为校正信号,从输入通道中引入,通过软件自动校准,但此时会减少1路输入。图3 32路数据采样电路采样电路控制信号通过光电隔离与单片机相连,输入信号由P1.5-P1.0控制,P1.6和P1.7用于控制A/D转换,A/D转换结果由T1引入。4 单片机介绍4.1 单片机的基本组成89C51单片机包括一个:一个8位的80C51微处理器。片内256字节数据存储器RAM/SFR,可以存放可以读/写的数据,如运算的中间结果以及预显示的数据等。片内4KB程序存储器Flash ROM,用以存放可以程序、一些原始数据和表格。4个8位并行I/O端口P0P3,每个端口既可以用作输入,也可以用于输出。两个1

16、6位的定时器/计数器,每个定时器/计数器都可以设置成计数方式,用以对外部进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。具有5个中断源、两个中断优先级的中断控制系统。一个全双工UART(通用异步接受发送器)的串行I/O口,用于实现单片机之间或单片机与PC机之间的串行通信。片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接,最高允许振荡频率为24MHz。89C51单片机与8051相比,具有节电工作方式,即休闲方式及掉电方式9。以上各个部分是用静态逻辑来设计的,其工作频率可下降到0Hz,并提供两种可用软件来选择省电方式空闲方式和掉电方式。在空闲方式中CPU停止工作,而

17、RAM、定时器/计数器、串行口和中断系统都继续工作。此时的电流可降到大约为正常工作方式的15%。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,故只保存片内RAM中的内容,直到下一次硬件复位为止。4.2 单片机引脚及功能 各个引脚及其功能:VCC(40脚):电源端,为+5V。Vss(20脚): 接地端。XTAL2(18脚):接外部晶体和微调电容的一端。在89C51片内它是振荡电路反向放大器的输出端,振荡电路的频率就是晶体的固有频率。若须采用外部时钟电路,则该引脚悬空。要检查89C51的振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。XTAL1(19脚

18、):接外部晶体和微调电容的另一端。在片内,它是振荡电路反向放大器的输入端。在采用外部时钟时,该引脚输入外部时钟脉冲。RST(9脚):RST是复位信号输入端,高电平有效。定时器T0(3.4)和定时器T1(3.5)是两个16位的定时器/计数器,都具有定时和事件计数功能,可用于定时控制、延时、对外部事件计数和检查等场合。P1:P1口是一带有内部上拉电阻的8位双向I/O口。P1口的输出缓冲能接受或输出4个TTL逻辑门电路。当对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。P2:P2是

19、一带有内部上拉电阻的8位双向的I/O端口。P2口的输出缓冲能驱动4个TTL逻辑门电路。当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。P2口在访问外部程序存储器或16位地址的外部数据存储器(例如MOVX DPTR)时,P2口送出高8位地址数据。在这种情况下,P2口使用强大的内部上拉电阻功能当输出1时。当利用8位地址线访问外部数据存储器时(例MOVX R1),P2口输出特殊功能寄存器的内容。当EPROM编程或校验时,P2口同时接收高8位地址和一些控制信号。P3口:P3是一带有内部上拉电阻的8位

20、双向的I/O端口。P3口的输出缓冲能驱动4个TTL逻辑门电路。当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。P3口同时具有的多种特殊功能,具体如下表所示:表3 P3口的第二功能端口引脚第二功能P3.0RXD (串行输入口)P3.1TXD(串行输出口)P3.2 (外部中断0) P3.3(外部中断1)P3.4T0(定时器0)P3.5T1(定时器1)P3.6 (外部数据存储器写选通)P3.7 (外部数据存储器读选通)5 USB接口电路设计USB接口芯片采用南京沁恒公司的一种专用芯片HC375。全

21、速设备接口,兼容USB V1.1即插即用,外围元器件只需要晶体和电容。提供一对主端点和一对辅助端点,支持控制传输、批量传输、中断传输。具有省事的内置固件模式和灵活的外部固件模式。内置固件模式下屏蔽了相的关USB 协议,自动完成标准的USB 枚举配置过程,完全不需要本地端控制器作任何处理,简化了单片机的固件编程。支持5V 电源电压和3.3V 电源电压,CH375 芯片还支持低功耗模式。CH375芯片是CH372芯片的升级版,CH375在CH372基础上增加了USB主机方式和串口通讯方式等功能,所以硬件功能更多,但是其它功能完全兼容CH372,可以直接使用CH375 的WDM 驱动程序和DLL 动

22、态链接库。采用SSOP-20 封装其功管脚能见附录二。5.1 USB芯片内部结构该芯片CH375 芯片内部集成了PLL 倍频器、USB 接口SIE、数据缓冲区、被动并行接口、命令解释器、通用的固件程序等主要部件。PLL 倍频器用于将外部输入的12MHz 时钟倍频到48MHz,作为USB 接口SIE 时钟。USB 接口SIE 用于完成物理的USB 数据接收和发送,自动处理位跟踪和同步、NRZI 编码和解码、位填充、并行数据与串行数据之间的转换、CRC 数据校验、事务握手、出错重试、USB 总线状态检测等。数据缓冲区用于缓冲USB 接口SIE 收发的数据。被动并行接口用于与外部单片机交换数据。命令

23、解释器用于分析并执行外部单片机提交的各种命令。通用的固件程序用于自动处理USB 默认端点0 的各种标准事务等。CH375芯片内部物理端点:5.1.1 端点0端点0 的接收缓冲区和发送缓冲区各是8个字节。SETUP事务和OUT 事务使用同一个接收缓冲区,但是使用不同的事务应答方式。当CH375成功完成端点0的SETUP 事务后,CH375将自动设置端点0 的接收器和发送器的同步触发标志为1,然后才以中断方式通知外部单片机读取SETUP 数据并处理。当CH375成功完成端点0的OUT事务后,CH375将自动触发端点0的接收器的同步触发标志,由0 触发为1,由1 触发为0。当CH375 成功完成端点

24、0的IN事务后,CH375将自动触发端点0 的发送器的同步触发标志,由0触发为1,由1 触发为0。对于控制读操作,由于CH375完成SETUP 事务后自动设置同步触发标志为1,所以默认情况下CH375发送的第一组数据是DATA1,接着是DATA0,然后是DATA1,以此类推。一般情况下,外部单片机只需要准备好数据并发送,不必考虑同步触发标志。由于CH375在完成端点0的OUT事务时不分析同步触发标志,不管数据是否同步都会以中断方式通知外部单片机,所以对于控制写操作,单片机可以通过GET_TOGGLE 命令确定当前OUT 事务是否同步再作处理。SET_ENDP2命令对SETUP的事务响应方式没有

25、影响。如果没有释放USB缓冲区,则端点0 的接收器对SETUP 事务返回NAK,如果已经释放USB 缓冲区,那么返回ACK。如果在SET_ENDP3 命令之后执行WR_USB_DATA3 命令,那么端点0 的发送器自动将事务响应方式设置为对IN 事务返回DATA,数据长度根据WR_USB_DATA3 命令确定。如果在WR_USB_DATA3 命令之后执行SET_ENDP3 命令,那么端点0 的发送器将保持数据不变,但是按SET_ENDP3命令设定的事务响应方式处理事务,如果设定的事务响应方式为对IN返回DATA,那么发送长度将由SET_ENDP3 命令重新确定。5.1.2 端点1端点1的接收缓

26、冲区和发送缓冲区各是8个字节。当CH375成功完成端点1的OUT事务后,CH375将自动触发端点1的接收器的同步触发标志,由0 触发为1,由1触发为0。当CH375成功完成端点1的IN事务后,CH375将自动触发端点1的发送器的同步触发标志,由0触发为1,由1 触发为0。CH375在完成端点1的OUT 事务时自动分析同步触发标志,如果数据不同步则不会以中断方式通知外部单片机,外部单片机只会接收到数据同步的OUT 事务中断。如果在SET_ENDP5 命令之后执行WR_USB_DATA5 命令,那么端点1 的发送器自动将事务响应方式设置为对IN 事务返回DATA,数据长度根据WR_USB_DATA

27、5 命令确定。如果在WR_USB_DATA5 命令之后执行SET_ENDP5 命令,那么端点1 的发送器将保持数据不变,但是按SET_ENDP5命令设定的事务响应方式处理事务,如果设定的事务响应方式为对IN返回DATA,那么发送长度将由SET_ENDP5 命令重新确定。 5.1.3 端点2WR_USB_DATA命令,那么端点2 的发送器自动将事务响应方式设置为对IN 事务返回DATA,数据长度根据WR_USB_DATA命令确定。如果在WR_USB_DATA命令之后执行SET_ENDP命令,那么端点2 的发送器将保持数据和长度不变,但是按SET_ENDP命令设定的事务响应方式处理事务。端点2 的

28、接收缓冲区和发送缓冲区各是64 个字节。当CH375成功完成端点2的OUT事务后,CH375将自动触发端点2的接收器的同步触发标志,由0 触发为1,由1 触发为0。当CH375成功完成端点2的IN事务后,CH375将自动触发端点2 的发送器的同步触发标志,由0触发为1,由1 触发为0。CH375在完成端点2的OUT 事务时自动分析同步触发标志,如果数据不同步则不会以中断方式通知外部单片机,外部单片机只会接收到数据同步的OUT 事务中断。如果在SET_ENDP7 命令之后执行5.1.4 外部固件参考流程在CH375中提供了外部固件模式下的单片机源程序,下述流程供外部单片机处理USB标准设备请求时

29、参考。 单片机启动后,首先初始化CH375为使用外部固件的USB设备方式,然后设置中断。 当单片机收到中断后,使用GET_STATUS命令获取中断状态,分析处理如下:(1)如果是端点2 或1的OUT成功,则使用RD_USB_DATA命令读取数据再通知主程序处理。(2) 如果是端点2 或1的IN成功,则使用UNLOCK_USB命令释放缓冲区再通知主程序继续。(3)如果是端点0 的SETUP成功,则使用RD_USB_DATA命令读取数据,分析处理如下: 如果是USB请求CLEAR_FEATURE,那么根据请求中的FEATURE以及端点号等分析处理,对于ENDPOINT_HALT,可以使用SET_E

30、NDP 命令。 如果是USB请求GET_DESCRIPTOR,那么使用WR_USB_DATA3命令返回描述符5.2 USB芯片与单片机的接口电路CH375通过被动并行接口电路可以方便地挂接到89C51单片机的系统总线图4 CH375的接口电路上,并且可以与多个外围器件共存。并口信号线包括8位双向数据总线D7-DO、读选通输入RD、写选通输入WR、片选输入CS、中断输出INT及地址输入线AO。CH375的RD和WR可以分别连接到单片机的读选通输出引脚和写选通输出引脚。INT可以连接到单片机的中断输入引脚,中断请求是低电平有效。当CS、RD及AO都为低电平时,CH375中的数据通过D7-DO输出;

31、当CS和WR以及AO都为低电平时,D7-DO上的数据被写入CH375;当CS、WR都为低电平而A1为高电平时,D7-DO上的数据被作为命令码写入CH375。USB电路图4在USB 电源供给线中串接保险电阻或者自恢复保险丝F1,一般500mA以下,最大1A。串联电感L1 限制峰值电流,感抗在47uH到200uH之间,直流电阻应该不超过3 欧姆,尽量小些。在USB 插座的电源上并联独立的储能电容C16缓解电压瞬时下降。在USB信号线D+和D-上串接共扼电感T1,减少信号干扰,在一些计算机的主板中可以见到。U13为P 监控电路,为单片机和CH37X 提供可靠的上电复位。U12为ESD 保护器件/瞬变

32、电压抑制器件,内部一般为高速二极管阵列,在频繁带电插拔USB 设备的应用中和静电较强的环境下,建议使用此类器件保护CH37X的USB信号引脚,型号为CH412Z 或者CH412A 或者NUP4301MR6T1(引脚不同)等,注意不能选用内有电阻的器件。CH412 能够承受15KV的HBM 人体模型ESD冲击,具体设计可参考CH412 芯片手册。如果不外加任何专用ESD保护器件,CH37X也能够承受4KV左右的HBM 冲击,CH374 能够承受8KV 左右的HBM 冲击。电容C14 用于CH37X 电源退耦,实际电路还应该在U13 附近连接0.1uF 退耦电容。该图适用于5V 电源电压,如果VC

33、C 为3.3V,那么应该将CH375 的9 脚与28 脚短路。图中X1 是频率为12MHz 的石英晶体,需要两个振荡电容C11 和C12,也可以用12MHz 有源晶振。5.3 USB设备驱动程序设计USB系统驱动程序的设计是基于WDM(Windows driver model 驱动程序模型)。WDM采用分层驱动程序模型,分为较高级的USB设备驱动程序和较低级的USB函数层。其中USB函数层由两部分组成:较高级的通用串行总线模块(USBD)和较低级的主控制器驱动程序模块(HCD) 11。在上述USB分层模块中,USB函数层由Windows98提供,负责管理USB设备驱动程序和USB控制器之间的通

34、信,加载及卸载USB驱动程序,与USB设备通用端点(endpoint)建立通信来执行设备配置、数据与USB协议框架和打包格式的双向转换任务。 目前Windows98提供了多种 USB设备驱动程序,但并不针对数据采集设备,因此需用DDK开发工具设计专用的USB设备驱动程序。在本设计中由四个模块实现:初始化模块、即插即用管理模块、电源管理模块以及I/O功能实现模块12。 初始化模块提供一个入口函数DriverEntry(),所有对各种IRP(I/O Request Packet,IRP请求包)的处理例程都在此入口函数中做出定义。即插即用管理模块实现USB设备的热拔插及动态配置。当硬件检测到USB设

35、备接入时,Windows98查找响应的驱动程序,并调用它的DriverEntry例程,PnP(即插即用)管理器调用驱动程序的AddDevice例程,告诉它添加了一个设备;在此处理过程中,驱动程序收到一个设备启动请求(IRP_MN_START_DEVICE)的IRP。同理,当要拔除时,PnP管理器会发出一个设备删除请求(IRP_MN_REMOVE_DEVICE)的IRP,由驱动程序进行处理。通过对这些PnP请求的处理,可支持设备的热插拔和即插即用功能。电源管理模块负责设备的挂起与唤醒。I/O功能实现模块完成I/O请求的大部分工作。若应用程序想对设备进行I/O操作,它便使用Windows API函

36、数,对WIN32子系统进行WIN32调用。此调用由I/O系统服务接收并通知I/O管理器,I/O管理器将此请求构造成一个合适的I/O请求包(IRP)并把它传递给USB设备驱动程序,USB设备驱动程序接收到这个IRP以后,根据IRP中包含的具体操作代码,构造相应的USB请求块并把此URB(USB请求块)放到一个新的IRP中,然后把此IRP传递到USB总线驱动程序,USB总线驱动程序根据IRP中所含的URB执行相应的操作(如从USB设备读取数据等),并把操作结果通过IRP返还给USB设备驱动程序。USB设备驱动程序接收到此IRP后,将操作结果通过IRP返还给I/O管理器,最后I/O管理器将此IRP中

37、操作结果返还给应用程序,至此应用程序对USB设备的一次I/O操作完成。6 应用程序设计用户态的应用程序是数据采集系统的中心,其主要功能为:开启或关闭USB设备、检测USB设备、设置USB数据传输管道、设置A/D状态和数据采集端口、实时从USB接口采集数据、并分析数据11。应用程序主流程图如图5所示。由于HC375提供的FIFO不超过64字节,当它存满后,HC375自动将数据打包即时请求读入数据,由SIE自动发送数据包。另外,当系统启动A/D模块后,便会创建两个线程:采样线程和存盘线程。采样线程负责将采集据写到应用程序提交的内存;而存盘线程负责给应用程序发送存盘消息。当应用程序接收到此消息后,便

38、从它提交的内存中读取数据并存盘。此处需要注意的是采样线程和存盘线程在读写应用程序提交的内存时要保持同步。首先是要启动USB设备,启动USB设备成后功检测USB设备。检测USB成功后设置设备参数,设置USB参数成功后启动A/D模块。启动A/D模块后等待数据请求上传数据。上传成功请求后看是否获得了有效的数据,如果没有获得有效数据就看下组数据有没有准备就绪。如果下组数据已经准备就绪,就回到请求上传数据。如果获得了有效的数据,就把获得的有效数据存储。存储后就等待下组数据准备就绪。如果下组数据已经准备就绪再回到请求上传数据如此循环上传数据。启动USB设备设置设备参数启动A/D模块请求上传数据包存储延迟至

39、下数据包就绪Y 检测USB设备获得有效数据?报告数据丢失NNY下组数据准备就绪? 图5 应用程序主流程7 设备固件设计此处固件是指固化到89C51E2PROM中的程序,其主要功能是: (1)控制A/D转换器的采样。(2)控制芯片CH375接受并处理USB驱动程序的请求及应用程序的控制指令。现主要介绍89C51USBCH375接受并处理USB驱动程序的请求及应用程序的控制指令。现主要介绍89C51系统如何控制USB控制器(USBCH375)与主机的通信12。89C51系统对USB控制器的操作是严格按照USB协议1.1进行的,按照USB协议1.1的规定,USB传输方式分为4种:控制传输,块传输,同

40、步传输和中断传输。在实际开发中使用了控制传输和块传输。控制传输主要用来完成主机对设备的各种控制操作,也就是用来实现位于主机上的USB总线驱动程序(USBD.SYS)以及编写的功能驱动程序对设备的各种控制操作。块传输主要用来完成主机和设备间的大批量数据传输以及对传输数据进行错误检测(若发生错误,它支持“重传”功能)。89C51系统控制USB控制器的工作过程可以简单地概括为:当USB控制器从USB总线检测到主机启动的某一传输请求后,通过中断方式将此请求通知89C51系统,89C51系统通过访问USB控制器的状态寄存器和数据寄存器获得与此次传输有关的各种参数,并根据具体的传输参数,对USB控制器的控

41、制寄存器和数据寄存器进行相应的操作,以完成主机的传输请求。8 远程数据采集系统设计传输距离是限制USB在工业现场应用的一个障碍,即使增加了中继或Hub,USB传输距离通常也不超过几十米,这对工业现场而言显然太短了。现在工业现场有大量采用RS-485传输数据的采集设备,其优点主要为传输距离可达到1200米以上,并且可以挂接多个设备,但传输速度慢,且需要板卡支持,安装麻烦。但将RS-485与USB结合起来就可以优势互补,产生一种快速、可靠、低成本的远程数据采集系统。设计这样一个系统的关键设备是RS-485USB转换器。可以采用CH375+89C51+ MAX485实现这一功能,整个系统的基本思想是

42、:将传感器采集到的模拟量数字化以后,利用RS-485协议将数据上传,上述RS-485USB转换器在主机端接收485的数据并通过USB接口传输至主机进行处理,而主机向USB发送数据时,数据通过RS-485USB转换口转换为485协议向远端输送,从而能够实现远程数据的双向传输。由于RS-485通信是一种半双工通信,发送和接收共用同一物理信道。在任意时刻只允许一台单机处于发送状态。因此要求应答的单机必须在监听到总线上呼叫信号已经发送完毕,并且没有其它单机发出应答信号的情况下才能应答。半双工通信对主机和从机的发送和接收时序有严格的要求。如果在时序上配合不好,就会发生总线冲突,使整个系统的通信瘫痪,无法

43、正常工作。要做到总线上的设备在时序上的严格配合,必须要遵从以下几项原则。(1)复位时,主从机都应该处于接收状态 RE和DE端相连为低电平时从机处于接收状态,在上电复位时,由于硬件电路稳定需要一定的时间并且单片机各端口复位后处于高电平状态,这样就会使总线上各个分机处于发送状态,同时上电时各电路的不稳定,可能向总线发送信息。因此,如果用一根口线作发送和接收控制信号,应该将口线反向后接入 MAX485的控制端,使上电时 MAX485处于接收状态。(2) 制端RE,E的信号要求在 RS-232、S-422等全双工通讯过程中,发送和接收信号分别在不同的物理链路上传输,发送端始终为发送端,接收端始终为接收

44、端,不存在发送、接收控制信号切换问题。在 RS-485半双工通信中,由于MAX485的发送和接收都由同一器件完成,并且发送和接收使用同一物理链路,必须对控制信号进行切换。控制信号何时为高电平,何时为低电平一般以单片机的TI,RI信号作参考。发送时,检测TI是否建立起来,当TI为高电平后关闭发送功能转为接收功能;接收时,检测RI是否建立起来,当RI为高电平接收完毕转为发送功能。(3)发送控制信号在时序上的要求总线上所连接的各单机的发送控制信号在时序上完全隔开。了保证发送和接收信号的完整和正确,免总线上信号的碰撞,总线的使用权必须进行分配才能避免竞争,接到总线上的单机,发送控制信号在时间上要完全隔

45、离。总之,送和接收控制信号应该足够宽,保证完整地接收一帧数据,意两个单机的发送控制信号在时间上完全分开,免总线争端。9 结束语基于USB外设的应用目前在国内外处于高速发展阶段,利用USB进行数据采集在工业控制已得到成功应用,特别是随着USB协议2.0的推出,数据传输速率高达480Mbps,如此高的传输速率必将使USB在数据采集中的优势更加体现出来,同时会使其在更广阔的领域得到更深层次的应用。致谢在本次毕业设计过程当中,指导老师以及同学们都给予了很大的帮助支持,指导老师严谨的治学态度和务实的求知精神给我留下了很深的印象,他们鼓励我孜孜不倦,锐意进取,特别是在困难的时候,她有意识地培养我独立思考和

46、解决问题的能力。俗话说“严师出高徒”,相信指导老师的严格要求,令我以后的工作和生活当中受益匪浅。在此,对他们所给予的指导和帮助表示最衷心的感谢。参考文献1李朝青.单片机原理及接口技术M.北京:北京航空航天大学出版社,20052张念淮,江浩.USB总线接口开发指南M.北京:国防工业出版社,20023李朝青.PC机及单片机数据通信技术M.北京:北京航空航天出版社,20004徐大成,邹丽新,丁建强.微型计算机控制技术及应用M.北京:高等教育出版社,2003 5胡大可,方路平.基于单片机8051的嵌入式开发指南M.北京:电子工业出版社, 20036康华光.电子技术基础M. 北京:高等教育出版社,200

47、27张凯.MCS-51单片机综合系统及其设计开发M.北京:科学出版社,19968马明建.数据采集与处理技术M.西安:西安交通大学出版社,20059何立民.单片机与嵌入式系统应用M.北京:北京航空航天大学出版社,200310戴佳,苗龙,陈斌.51单片机应用系统开发典型事例J.北京:中国电力出版社,2005,8(5):495211张弘.USB接口设计M. 西安:西安电子科技大学出版社,2002.12许永和.8051单片机USB接口程序设计M.北京:北京航空航天大学出版社,200413赵负图.数据采集与控制系统计算机测控技术J.北京:北京科学技术出版社,1987,28(3): 293214廖焕霖. P

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号