您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页USB总线在同步相量测量单元中的应用模板

USB总线在同步相量测量单元中的应用模板

来源:爱go旅游网



USB总线在同时相量测量单元中应用

摘要本文提出使用USB总线来进行下位机和上位机之间数据通讯,以满足同时相量测量单元对数据传输高速率、低延时和高可靠性要求。这里关键处理是USB接口驱动程序问题,经过编写上位机和下位机硬件驱动程序,实现利用USB接口进行ATMAGE128和上位微机之间数据传输工作。

关键词 USB总线;同时相量测量单元;数据通讯;通讯接口



1 引言

同时相量测量单元(PMU)测量装置和上位计算机之间通讯速率普遍较低,不能将测量数据立即传送到上位机进行分析处理,通讯接口已成为整个系统性能提升一个瓶颈,所以有必需使用一个传输速率、时延、稳定性均能满足同时相量测量数据传输通用接口。

采取USB接口作为上位机和下位机通讯接口方法能够处理这些问题。利用USB接口中止传输速率大,时延小,差错率极低特点来完成实时相量数据传输。在USB接口实际应用中,驱动程序开发是最为困难部分,因为USB接口诞生较晚,现在还未成为多数单片微机标准设备,还需要使用专门接口芯片进行连接,用户必需编写对应驱动程序将数据转化为符合USB系统协议格式进行传输。

本文叙述了ATMAGE128单片机使用PDIUSBD12接口芯片完成USB接口数据通讯过程。经过驱动程序完成对相关硬件设备操作。该驱动程序完成USB接口中止传输功效,用户调用通用命令就能够像使用一个一般存放器一样使用USB接口芯片。该接口实现了各采样点低延时上传功效,能够在1ms内完成一个工频周期全部采样值传输。

2 USB系统及其器件选择介绍

2.1 USB体系概述



USB(UniversalSerial Bus)是一个通用串行总线,为了实现整个计算机系统中总线一致性,COMPAQ/INTEL/MICRSOFTNEC等企业共同开发出一个新、快速、双向、同时传输并能够热拔插数据

传输总线,简称USB总线。USB总线由以下四个关键部分组成:主机和设备:是指USB系统中关键构件。②物理组成:是指USB元件连接方法。③逻辑组成:不一样USB元件所担当角色和责任,和从主机和设备角度出发USB总线所展现结构。④用户软件和设备功

效接口关系。

USB总线有四种数据传输方法:控制传输:关键用于主机把命令传给设备和设备把状态返回给主机。②中止传输:用来支持那些偶然需要少许数据通信,但服务时间受限制设备。③批量传输:用来传输大量数据而没有周期和传输速率设备上。批量传输方法并不能

确保传输速率,但能够确保传输可靠性,当出现错误时候会要求发送方重发。④同时传输:以一个恒定速率进行传输。同时传输方法发送和接收方全部必需确保传输速率匹配,不然会造成数据丢失。

2.2 USB器件介绍及应用

实现USB传输方法关键有使用接口转换芯片和专用接口芯片两种。前者就是将USB接口转换为标准RS232接口使用,在操作方法和传输速度上和RS232接口完全相同。后者则能够实现真正USB传输,使用USB1.1标准接口芯片如PDIUSBD12能够达成最高12Mb/s传输速率,使用USB2.0标准接口芯片如ISP1581则能够达成480Mb/s



输速率。假如要使用专用USB接口芯片就必需编写对应下位机和上位机驱动程序,因为USB传输不一样于串口传输,USB传输方法全部是经过协议要求数据包来完成,所以下位机软件必需实现对接口器件硬件管理功效,及对协议发出多种请求作出响应。而上位机驱动程序需完成对接口芯片枚举、地址分配等工作。

2.3 USB接口在本系统中作用

USB接口在本系统中用来完成下位机和上位机通讯,具体就是连接AVR单片机和PC,将下位机采集数据及部分相关信息传送到PC进行处理。传输数据包含:电压值(每七天期采样64个点,12位数据)。②电流值(每七天期采样64个点,12位数据)。③同时时间信号(取自GPS)

上位机在接收到这些信息后将会对其进行描点,故障录波,远程传送等处理。12位电压电流数据全部要经过变换,成为16位数据,占一个字节。每通道1秒钟传输数据在6KB以上,多个通道累计,接口传输速率最少要40KB/s,这一要求已经超出RS232接口所能提供传输速率。假如使用CAN总线进行传输,则硬件设备较为复杂。综合比较后,采取PDIUSBD12作为接口芯片进行数据传输是较适宜选择。采取塑料极小封装PDIUSBD12能够很轻易安置在电路板上。

而且对上位机要求也较为宽松,只要有USB接口计算机全部能够作为本系统上位机。

3 ATMAGE128单片机



3.1 ATMAGE128单片机介绍

ATMAGE128单片机是由ATMEL企业出品一款高性能低功耗8位微型控制器,最高时钟频率能够达16MHz。片内集成有容量为128KB闪存作为程序存放器,4KBEEPROM, 4KB片内存放器,最高可支持64KB片外存放器。

3.2 开发过程简述

TMAGE128开发通常是由ATMEL企业提供无偿仿真工具
avrstudio完成,和常见51单片机略有不一样,使用c语言进行开发时候必需使用第三方编译器对源代码进行编译后才能在仿真环境下运

行。此次采取是icc作为编译器,本文全部单片机程序全部在此环境下运行调试。USB接口器件采取总线控制方法,数据传输形式采取中止传输。USB接口器件在使用上和一个一般外部存放器相同,全部控制和数据传输全部必需对ATMAGE128中对应寄存器进行读写操作才能完成。

4 USB驱动程序MCU部分

MCU即设备方控制器,能够是各类型单片机或是PC,它们驱动程序在结构上是类似,而具体代码,因为使用系统环境不一样,存在较大差异,下面就具体说明以ATMAGE128单片机作为设备方控制器USB驱动程序结构和具体实现代码。



4.1 程序整体结构

对于CPU而言,PDIUSBD12芯片和一个外部存放器完全相同,CPU经过总线控制方法对PDIUSBD12进行操作。USB接口传输并不会占用很多CPU资源,CPU能够实施前台操作,USB接口传输工作则在后台完成,二者之间经过中止服务程序连接。当
PDIUSBD12USB收到一个数据包,那么就对CPU产生一个中止请求,CPU 立即响应中止。在ISR中固件将数据包从PDIUSBD12内部缓冲区移到循环数据缓冲区,并在随即清零PDIUSBD12内部缓冲区以使能接收新数据包CPU能够继续它目前前台任务直到完成,然后返回到主循环检验循环缓冲区内是否有新数据,并开始其它前台任务。不管是上传或下载数据全部是对循环缓冲区内数据进行处

,主循环只要检验循环缓冲区内是否有要处理新数据。

各模块分工以下:
(1)硬件提取层:对单片机I/O口、数据总线等硬件接口进行操作。 (2)PDIUSBD12命令接口:PDIUSBD12器件进行操作模块子程序集。

(3)中止服务程序:PDIUSBD12向单片机发出中止请求时,读取PDIUSBD12中止传输来数据,并进行相关处理。

(4)标准请求处理程序:USB标准设备请求进行处理。

(5)厂商请求处理程序:对用户添加厂商请求进行处理。

(6)主循环程序:发送USB请求、处理USB总线事件和用户功效处理等。



4.2 硬件提取层相关程序

硬件提取层实施对单片机I/O口、数据总线等操作,包含向PDIUSBD12发送数据或命令子程序及从PDIUSBD12读取数据子程序,该部分代码需对地址总线和数据总线进行直接操作。

PDIUSBD12任何操作全部是由命令指令和数据指令组合完成,经过改变A0引脚电平就能够完成命令模式/数据模式切换。

4.3 命令接口

该部分是由一系列命令接口子程序组成,包含了全部PDIUSBD12给出访问功效接口命令。在命令接口中调用了硬件提取层中子程序。

PDIUSBD12全部功效全部必需由类似方法完成,先发送一条命令,然后写该命令具体参数。有命令参数是多个字节,如设置模式命令,此时就必需调用两次写数据线指令。命令接口程序编写格式相对固

,根据PDIUSBD12说明书中给出命令汇总表依次编写即可。

4.4 中止服务程序

中止服务程序代码处理由PDIUSBD12产生中止,它将数据从PDIUSBD12内部缓冲区内取出,并建立正确标志,通知主循环进行处理。当PDIUSBD12向单片机发出中止请求后,单片机调用读取中止寄存器标准命令接口子程序d12_readinterruptregister()来决定中止源,然后跳转到对应中止服务子程序进行处理。中止服务程序从PDIUSBD12搜集数据,而主循环程序对数据进行处理。当中止服务



程序搜集到足够数据时,它通知主程序已经做好准备等候处理。比如在发送数据包阶段建立包时,中止服务程序将建立包和数据全部存入缓冲区内,然后将setup_packet标志送到主循环,这么主循环就能够节省无须要服务时间。

4.5 总线复位和挂起

当接收到总线复位或挂起请求时,中止服务程序将bus_setsuspends标志位置位,然后退出。

控制传输总是由建立阶段开始,以后为可选数据阶段,然后结束于状态阶段。单片机需经过选择控制输出端点来提取建立包内容来

决定端点是为满还是为空。假如控制端点是为满,单片机将从缓冲区内读出内容并将其存入存放区。以后,单片机将从存放区使主设备请求生效。假如是一个有效请求,单片机需向控制端点发送应答建立命令,以重新使能下一个建立阶段。接下来单片机需要证实传输是控制读还是写,这能够经过建立包重定向请求类型位来实现。

建立阶段结束后,主机就会实施数据阶段。PDIUSBD12等候接收控制输入包。单片机首先需要读取最终处理状态寄存器清零中止标

志位。确定PDIUSBD12处于传输模式后,进行数据包发送。

当下一个控制输入标志来到时,单片机将确定剩下字节是否为零。

假如已经没有数据要发送,单片机需要发送一个空包以指示主机数据已经发送完成。假如建立包为取得描述符请求,那么建立包中控制传输将指示此包为控制写类型。在实施完取得描述符请求过程后,



单片机处于等候数据阶段。主机发送一个控制输出标志,单片机从PDIUSBD12缓冲区内减去数据。此时单片机确定PDIUSBD12是否处于USB接收模式,然后单片机经过检验选择控制输出端点确定缓冲区是否已满,并将数据从缓冲区内读出。

4.6 标准请求处理程序

标准设备请求是由USB协议决定,由主机发出,以数据包形式传送到单片机。当单片机接收到这些标准设备请求时就转入对应处理

程序。其过程包含:获取状态。②清除特征。③设置特征。④

设置地址。

获取设备描述符。

设置配置。

获取配置信息。⑧获

取接口信息。⑨设置接口。⑩同时帧。其中同时帧用来设置和汇

报一个端点同时帧,在同时传输中才使用,假如设备不支持这个请求,返回停止标志。

4.7 主循环程序

主循环程序关键功效是设置单片机初始化,和设定各个相关子程序入口。因为使用了中止服务程序和一系列命令接口子程序,主循环程序中包含USB接口部分只是设定相关寄存器。

5 USB驱动程序上位机部分

5.1 驱动程序基础概念



主机驱动程序功效是将硬件和用户应用程序连接起来。编写方

法有多个,能够直接和硬件相连接,在应用程序中直接读写系统应将,或将和硬件直接交换数据底层工作交给操作系统自动完成,应用程序象读写一般文件一样完成对硬件设备操作。前一个方法代码开销

,不过编写工作量很大,移植性也较差。后一个方法需要大量库函数支持,但编写较为简单,且移植性好,甚至只需少许修改就能够完成对另一个硬件支持。在本系统中使用是由厂商提供驱动程序,为了充足说明USB系统工作,还是有必需对主机驱动程序工作方法做一个介绍。

从驱动程序角度出发,每个设备全部被看成若干个设备对象,这些设备对象来历各不相同,每个对象全部有驱动程序和之对应。它们依据一定规则组成设备对象堆栈,也就是对应驱动程序堆栈。处于最底层是物理设备对象,它通常由总线生成,驱动程序抵达这里时候,总线只是根据标准作部分动作,即可完成对设备物理上操作。一个设备只能有一个物理设备对象,但能够有若干个其它设备对象。功效设备对象是由所编写驱动程序生成,它负责从逻辑上操作设备。

其它层次设备对象能够处于功效设备对象上面或下面,它由另部分驱动程序或其它系统组件生成,能够统计部分设备信息,但层次设备对象不是必需。因为驱动程序这种层次结构,在编写驱动程序时候无须考虑内存分配、IO端口配置、DMA申请等。Windows将资源申请全部自动化,由总线完成,编写驱动程序时只要考虑控制设备本身即可。



5.2 即插即用设备状态及它们之间转换

USB接口设备一个显著特点就是接入或拔出时不需要关闭主机和重新开启系统,而是能够在系统运行时直接插入或拔出。这和USB接口硬件设置相关,USB接口是经过检测接口上拉电阻来判别是否有设备存在。当然,还必需有对应驱动程序来完成对此功效支持。下面就将简明描述一个设备完成即插即用过程。

用户将设备插入计算,此时设备还没有被系统检测到。要开始对设备进行软件配置,必需由即插即用管理器和总线驱动对设备进行枚举。即插即用管理器,有时还可能要在用户模式下组件工作,检测出设备驱动程序,包含功效驱动程序和其它层次驱动程序。假如此时驱动程序还未调入,则即插即用管理器调用设备插入例程。驱动程序完成初始化以后,接着必需对设备进行初始化。即插即用管理器调用驱动程序中添加设备例程来初始化该驱动程序控制每个

设备。当一个驱动程序从即插即用管理器中收到开始设备请求时,驱动程序使设备开启而且做好处理IO操作。在Windows及更高版本操作系统中,和停止相关请求只有在重新分配硬件资源时候才会使用。意外卸载时是指硬件在物理上被卸载(热拔出),驱动程序处理这个请求使系统损失尽可能降低。硬件卸载时,调用对应卸载请求,使得该设备在软件上也不可用。假如不对意外卸载进行处理,就有可能造成硬件在物理意义上已不存在,但在系统逻辑中仍然存在,造成系统访问该设备时候出现错误,严重情况可能会造成处理器



进入死循环。当在软件意义上对设备进行停止时,需要等其它请求全部操作完成后才能进行。

5.3 驱动程序结构

USB驱动程序从结构上能够分成两大部分,驱动程序入口和处理各个事件例程。驱动程序入口是由系统定义一组常数,该部分关键完成两件工作:一件是将注册表项复制到一个全局变量中;另一件是给不一样设备事件指示处理例程。剩下工作就是根据这些设备事件编写各自例程。这些设备事件关键包含下面多个部分:
(1)打开文件:当用户以打开文件名义打开设备准备读写时候,调用该部分例程进行准备。

(2)关闭文件:当用户关闭文件(关闭设备)时候,调用该例程清扫系统。

(3)即插即用处理:处理即插即用相关事件,该部分例程包含很多硬件相关子程序,具体功效见第2节。

(4)处理读操作:当用户读取文件时,调用该例程将接口芯片缓冲区内信息返回主机。

(5)处理写操作:当用户写文件时,调用该例程将数据以包形式发送到接口芯片。

(6)设备操作:该部分例程完成对设备硬件控制,通常含有IO控制码,这些控制码在用户头文件中定义,该例程依据不一样IO控制码,完成对设备各项控制任务。



(7)驱动程序初始化:当第一次安装硬件时调用该部分例程,创建物理设备对象。对所包含各个变量进行初始化。这部分程序通常操

作系统中有自带。

(8)驱动程序卸载:用于清除硬件在系统中留下痕迹,释放全局变量中注册表路径字符串所占用内存,将资源归还系统。

(9)电源管理:全部和电源相关例程全部由这里发出,它发出请求能够是指定一个新电源状态,或查询更改一个状态是否可靠。此部分对于总线供电USB设备较为关键,包含设备挂起和唤醒等操作。在本系统中此部分无作用,全部下位机设备全部是自供电形式,设备处于长时工作状态。

5.4 USB设备读写

USB设备读写操作是大部分用户关键关心内容。因为设备驱动程序作用,用户应用程序和USB设备读写操作变很简单,用户打开USB设备就像打开文件一样。这是在添加设备中申请了一个符号链接,并在开启设备例程中将此链接激活而实现。USB中读写操作分为四种:
(1)控制型:控制型传输关键为对USB本身配置,前面所描述USB配置实际上全部是经过控制传输实现。

(2)批量型:批量型传输用来处理大量对时间要求不紧迫数据。底层协议确保了无差错传输,但不确保传输时延。



(3)中止型:中止型传输对服务时间有较强限制,但一次传输数据量不多,关键为部分需要实时对应消息。

(4)同时型:同时传输能够确保传输时延、确保带宽和确保恒定数据传输速率,不过在传送失败情况下。不使用重试来传输数据,所以可能会有一定犯错概率。

USB接口读写是根据和数据文件读写相同方法进行,第一步要打开文件,即打开设备。当用户以打开文件名义打开设备时,首先要检验设备状态,看设备是否处于工作状态,设备接口信息是否已经准备好。接着检验从上面传下来文件对象正当性(指针不为空)。然后检验文件名长度,当为0,说明打开只是设备本身;不为0时说明打开是某个管道,调用管道相关例程,将管道明转换为指向对应管道综合信息指针即可。读写USB设备实际上是调用同一个传输例程,所区分是传输方向符不一样,因为通讯双方遵守全部是USB协议,全部数据包格式全部是一致,所以这没有什么问题。驱动程序控制上位机读写过程和单片机情况类似,所不一样是,单片机使用接口芯片将数据放入硬件缓冲区内,而上位机驱动程序则会构建一个虚拟缓冲区来完成相同工作。当要发送数据大于缓冲区容量时,同单片机情况一样,也要对数据进行分割。当数据发送完成以后,例程返回一个发送成功标志。

5.5 USB上位机应用程序设计介绍



编写好驱动程序以后,要在应用程序中调用USB设备,其做法就和调用硬件类似,能够使用WIN32API函数像调用程序文件一样对设备进行读写,也能够使用如同串口mscomm那样控件来实现。因为本系统上位机程序是用VB开发,显然调用成品动态链接库能降低很多工作量。这里就调用由广州周立功单片机发展开发称为

easyd12.dll动态链接库。

6 结论

USB接口驱动程序编写是一项繁琐工作,因为硬件条件限制,上述程序仅在仿真器上运行经过,无法实地调试,其中肯定存在很多漏洞和不足。USB接口本身是并不是为智能仪表开发,作为批量数据传输用USB总线在智能仪表上使用显得有些复杂。在更高性能通用型总线出现以前,为了实现信息高速传输使用USB还是一个性价比很好方案。本系统只使用了USB部分功效,付出软硬件资源代价却和一个完整功效USB传输系统没有多大区分。假如能开发出一个比USB总线更简便易用通用型总线,那一定会引发智能仪表革命。实际上,现在用驱动程序完成工作完全能够用纯硬件方法来实现,不过现在而言,代价肯定较大。假如能找到一个方法来直接控制USB接口各个引脚电平,那么即使用中规模集成电路也能够完成同时串行通讯工作,遗憾是,在整个设计过程中,本人一直没有发觉这种方法,包含USB协议和计算机主板上相关控制器最底层内容仍然无法洞悉。



参考文件

[1]周立功.PDIUSBD12固件编程和驱动开发[M.北京:北京航空航天大学出版社,.2
[2]萧世文.USB2.0 硬件设计[M].北京:清华大学出版社,.10 [3] 郭军义.微机电力参数交流采样技术[J农村电气化,1999

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务