基于USB总线和89C51单片机的数据采集系统设计.pdf
现代计算机!总第二一五期!#$%&!()*+%,-./!实践与经验引 言在工业生产和科学技术研究的各行业中#常常要对各种数据进行采集#现在常用的采集方式是在#机或工控机内安装数据采集卡#如$%&卡$()*+卡和()*,-卡%采集卡不仅安装麻烦#易受机箱内环境的影响#而且由于受计算机插槽数量和地址$中断资源的限制#不可能挂接很多设备%而通用串行总线./01234567(34167 895:简称/(8;的出现能很好地解决以上这些冲突%我们利用,单片机设计了基于/(8总线的数据采集设备#并可与?$*,-结合起来实现数据的远程采集%!系统硬件设计/(8数据采集系统硬件模块主要由串行$%&转换器$,芯片$/(8接口芯片和多路模拟开关等组成%硬件总体结构框图如图所示%图硬件总体结构框图/(8接口芯片采用A6B1C067(3D1EC0F9EBC4公司的一种专用芯片/(GAHIJ+%该芯片内部集成微处理器接口$KLKM存储器$时钟发生器$串行接口引擎.(LN;$收发器$电压转换器#支持&?$微波接口%多路模拟输入信号经多路模拟开关控制将其中的一路接入串行$%&转换器#$%&转换器经光电隔离后串行输出到移位寄存器#移位寄存器将此结果转为O位并行数据#O系统通过O位的并行接口传送$%&转换器采集的数据#存储在KLKM存储器中&一旦KLKM存满#(LN立刻对数据进行处理:然后O系统将数据从KLKM存储器中读出#由收发器通过数据线.&P$&);送至主机%/(8AIJ+与,的具体接口电路如图+所示%图+中/(8AIJ+的=QRM/S与O的S$Q相连#即/(8AIJ+的时钟输出为O提供时钟输入%/(8AIJ+的复位端接=电路以保证复位电路可靠地工作%由于晶振频率较高#结合/(8AJJDK电容及*TJDU电感#起稳定内部振荡频率的作用%图+/(8AIJ+与O接口电路基于/(8 总线和 O 单片机的数据采集系统设计丁伟雄#宋晓光#杨定安佛山科学技术学院计算机系#佛山-+OJJJ(摘要)本文介绍了基于!#总线的数据采集设备的开发方法#包括硬件设计$%&()&*+固件,设计$基于-%./0(1驱动程序模型+-23,的设备驱动程序设计以及应用软件的设计#同时也介绍了基于!4的远程数据采集系统%关键词)通用串行总线&数据采集&单片机!T!#$%&!()*+%,-./!实践与经验现代计算机!总第二一五期!系统软件设计系统软件包括设备固件#$设备驱动程序和应用程序$%!&设备固件#$%&(%)*设计此处固件是指固化到%&()*+,-./中的程序其主要功能是0!控制123转换器的采样(控制芯片4$5&67+接受并处理4$驱动程序的请求及应用程序的控制指令(现主要介绍8&()系统如何控制4$控制器94$5:67+;与主机的通信(%&()系统对4$控制器的操作是严格按照4$协议)进行的(按照4$协议)的规定4$传输方式分为=种)控制传输块传输同步传输和中断传输(在实际开发中使用了控制传输和块传输(控制传输主要用来完成主机对设备的各种控制操作也就是用来实现位于主机上的4$总线驱动程序940$34;以及编写的功能驱动程序对设备的各种控制操作(块传输主要用来完成主机和设备间的大批量数据传输以及对传输数据进行错误检测9若发生错误它支持*重传+功能;(%&()系统控制4$控制器的工作过程可以简单地概括为)当4$控制器从4$总线检测到主机启动的某一传输请求后通过中断方式将此请求通知%&()系统%&()系统通过访问4$控制器的状态寄存器和数据寄存器获得与此次传输有关的各种参数并根据具体的传输参数对4$控制器的控制寄存器和数据寄存器进行相应的操作以完成主机的传输请求(%+&,-.设备驱动程序设计4$系统驱动程序的设计是基于?3/9?ABCDE3FGHF/CBHI驱动程序模型;的(?3/采用分层驱动程序模型9见图J所示;分为较高级的4$设备驱动程序和较低级的4$函数层(其中4$函数层由两部分组成)较高级的通用串行总线模块94$3;和较低级的主控制器驱动程序模块9K3;(在上述4$分层模块中4$函数层由?A0BCDE&8提供负责管理4$设备驱动程序和4$控制器之间的通信加载及卸载4$驱动程序与4$设备通用端点9HABLCAM;建立通信来执行设备配置,数据与4$协议框架和打包格式的双向转换任务(目前?ABCDE&%提供了多种4$设备驱动程序但并不针对数据采集设备因此需用33N开发工具设计专用的4$设备驱动程序(在本设计中由四个模块实现)初始化模块#即插即用管理模块#电源管理模块以及O2.功能实现模块(图J 4$系统驱动程序层次关系初始化模块提供一个入口函数3FGHF*AMFP9;所有对各种O-,9O2.-HQRHEM,STUHMVO-,请求包;的处理例程都在此入口函数中做出定义(即插即用管理模块实现4$设备的热拔插及动态配置(当硬件检测到4$设备接入时?ABCDE:%查找响应的驱动程序并调用它的3FGHF*AMFP例程,A,9即插即用;管理器调用驱动程序的1BB3HGTH例程告诉它添加了一个设备-在此处理过程中驱动程序收到一个设备启动请求9O-,W/5W4X1-XW3*YO*;的O-,(同理当要拔除时,A,管理器会发出一个设备删除请求9O-,W/5W-*/.Y*W3*YO*;的O-,由驱动程序进行处理(通过对这些,A,请求的处理可支持设备的热插拔和即插即用功能(电源管理模块负责设备的挂起与唤醒(O2.功能实现模块完成O2.请求的大部分工作(若应用程序想对设备进行O2.操作 它便使用?A0BCDE 1,O函数V对?O5J+子系统进行?O5J+调用(此调用由O2.系统服务接收并通知O2.管理器O2.管理器将此请求构造成一个合适的O2.请求包9O-,;并把它传递给4$设备驱动程序4$设备驱动程序接收到这个O-,以后 根据O-,中包含的具体操作代码构造相应的4$请求块并把此-$94$请求块;放到一个新的O-,中 然后把此O-,传递到4$总线驱动程序4$总线驱动程序根据O-,中所含的-$执行相应的操作9如从4$设备读取数据等;并把操作结果通过O-,返还给4$设备驱动程序(4$设备驱动程序接收到此O-,后将操作结果通过O-,返还给O2.管理器 最后O2.管理器将此O-,中操作%7现代计算机!总第二一五期!#$%&!()*+%,-./!实践与经验结果返还给应用程序#至此应用程序对#$设备的一次%&操作完成$%!&应用程序设计用户态的应用程序是数据采集系统的中心#其主要功能为开启或关闭()设备(检测($设备(设置($数据传输管道(设置*+,状态和数据采集端口(实时从($接口采集数据(显示并分析数据$应用程序主流程图如图-所示$图-应用程序主流程图由于($./012提供的3%3不超过0-字节#当它存满后#(4./052自动将数据打包即时请求读入数据#由(%6自动发送数据包$另外#当系统启动*7,模块后#便会创建两个线程采样线程和显示存盘线程$采样线程负责将采集数据写到应用程序提交的内存)而显示存盘线程负责给应用程序发送显示和存盘消息$当应用程序接收到此消息后#便从它提交的内存中读取数据并显示和存盘$此处需要注意的是采样线程和显示存盘线程在读写应用程序提交的内存时要保持同步$!远程数据采集系统设计传输距离是限制(4在工业现场应用的一个障碍#即使增加了中继或89:#4传输距离通常也不超过几十米#这对工业现场而言显然太短了$现在工业现场有大量采用;(传输数据的采集设备#其优点主要为传输距离可达到?2米以上#并且可以挂接多个设备#但传输速度慢#且需要板卡支持#安装麻烦$如果将A(与(4结合起来就可以优势互补#产生一种快速(可靠(低成本的远程数据采集系统$设计这样一个系统的关键设备是A(B(4转换器#可以采用(4./02C=/DEC F*G-=实现这一功能$整个系统的基本思想是将传感器采集到的模拟量数字化以后#利用A(协议将数据上传#上述A(B(4转换器在主机端接收-=的数据并通过(4接口传输至主机进行处理#而主机向(4发送数据时#数据通过A(B(4转换口转换为-=协议向远端输送#从而能够实现远程数据的双向传输$如图所示$软件方面的设计跟前所述类似$图采用(4和A(实现远距离数据传输结 语基于(4外设的应用目前在国内外都处于高速发展阶段#利用(4进行数据采集和工业控制已得到成功应用$特别是随着(4协议2H的推出#数据传输速率高达-=F:IJ#如此高的传输速率必将使(4在数据采集中的优势更加体现出来#同时会使其在更广阔的领域得到更深层次的应用$参考文献KEL张念淮#江浩H#4总线接口开发指南H北京 国防工业出版社#22K2L李朝青H MN机及单片机数据通信技术H北京O北京航空航天出版社#2555KPL原嵩#林浒H通用串行总线的原理及实现H小型微行计算机系统#E/QRK-L张洪润#蓝清华H单片机应用技术教程H北京O清华大学出版社#E/SKL徐有青#余胜生H通用串行总线设备接口的设计H电子计算机与外部设备#E/=QR%收稿日期#$%#!%&%英文摘要见下页&=E!#$%&!()*+%,-./!实践与经验现代计算机!总第二一五期!#$%&#()#&*+,-.)/0-11#2 322-45*,+-6 7$8/,5 9:0;#$%&()*(+,-./0$%1(2+)-32,-.45$%(,-)2,67289:,9+;.?+2,A,(B8(9C.?+2,DEFGG?I(289(=J(,98+K3=K 9 KBJ+7:,9:9+K 2=+8K(,-9+A/L K292=+JJ=9 M3(7:,9.(,=J3K 928KN28 K(-,.;(8:N28 K(-,2,K 9 K(-,+;9 78+-82:K(-,2,K 9 277J(=29(+,+;9N28 2=+8)K(,-9+9&(,K+N K8(B.2J+(,98+K3=(,-9+9=+JJ=9 C9:2=+8K(,-9+9 A/L J+,-82,-K292O6%A-45&#A/L$292+JJ=9$P(9C+;?(,2,=2,K T=+,+:C.L,-U3 EVVGWX 9 9(8K 78+;(9+38=.J+-(9(=(7J2C(,-2:+8 2,K:+8(:7+89:2,9 8+J(,9,29(+,2J=+,+:C2,K 9 7+7J J(BJ(+KO TB8C J+-(9(=+87+829(+,(8(,;+8=(,-(9:2,2-:,9.7=(2JJC 9(,;+8:29(+,:2,2-:,9O I(7278 78,9 9 K(-,2,K 82J(Z29(+,+;2 9(8K 7289 J+-(9(=:2,2-,):,9(,;+8:29(+,C9:O6%A-45&?I I(8K 289+-(9(=V)2C8/983=938 TJ=98+,(=292#,98=2,-!&上接第!页FE