DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 895|回复: 0
打印 上一主题 下一主题

[GPS] 基于USB总线的GPS数据采集系统设计

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-29 20:08:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于USB 总线的GPS 数据采集系统设计
潘福彬, 周蓉生
( 成都理工大学应用核技术与自动化工程学院, 四川 成都 610059)
  摘要: 通用串行总线( USB) 是一种高传输速率的串行接口总线, 由于它具有即插即用、易于扩展和
高速传输的特点, 非常适合作为现代智能仪器的通信接口。现在被广泛应用于计算机的各种外设、数
字设备和工业领域当中。对USB 技术应用于GPS 数据采集系统的可行性进行了分析, 并重点介绍了
硬件设计、设备固件设计、设备驱动程序设计及应用程序设计等方法。
关键词:USB; 固件; WDM; 数据采集
中图分类号:TP274  文献标识码:A  文章编号: 1002- 1841( 2004) 11- 0025- 03
Design of GPS Data Acquisition System Based on USB
PAN Fu-bin, ZHOU Rong-sheng
( College of Application Nuclear Technology and Automation, Chengdu University of Technology , Chengdu 610059, China)
Abstract:Universal Serial Bus( USB) is a kind of the serial buses with high speed on transmitting, because it has such advantages
as plug and play, easy to be expanded and the high speed on transmitting, USB is the most available communicaltion interface of modern
intelligence instrument. At present it has been used widely for the peripheral equipment, digital device and the industrial field. The feas-i
bility of application USB to GPS data collector system was analyzed and design method of GPS data collector system on USB was discussed,
including hardware design, device firmware design, device driver design and application program design.
Key Words:USB; Firmware;WDM; Data Acquisition
1  引言
GPS 数据采集系统是应用在实时监测的X 荧光
分析的数据采集系统。对所需测量地带的地矿元素
进行X 荧光分析, 确定矿物元素的含量, 并用GPS 高
精度定位矿带分布的具体位置。这两部分信号到达
上位机是通过两种途径: ( 1) GPS 定位信号通过室外
GPS 数据采集模块用无线通信的传输方式, 把数据传
输给室内GPS 数据收集模块, 然后再把收集到的信号
通过USB 总线传输到上位机数据库中; ( 2) X 荧光分
析的谱数据, 先通过多道能谱分析器处理, 然后信号
到达PDA 掌上电脑时, 在移动公司的GPRS 传输协议
的支撑下,PDA 能够采用无线上网功能把谱数据直接
传输到上位机的网页上, 然后再通过网页把数据下载
到数据库中, 当这两部分信号到达上位机后, 通过上
位机应用软件对数据库进行管理, 然后采用地理信息
系统制图软件对矿带的分布情况以点密度图和等值
线图的形式进行显示。由于GPS 的高精度定位和
USB 的高传输速率, 因而能够保证实时显示矿带的具
体分布情况。利用这一原理, 可以把USB 的应用引伸
到其他领域, 如车辆的定位、滑坡的监控、海量存储、
图像采集等需要高速数据传输的系统中。
常见的数据采集系统与上位机的传统接口主要
有并口、RS- 232 串口、红外线端口。并口方式数据线
比较多, 传输距离较近, 而且在Windows 环境下, 开发
消息驱动方式的并口双向通信比较复杂; RS- 232 串
口方式虽然连接简单, 但其主要缺点是传输速率慢,
难以保证现场多道、快速、实时显示的可靠性; 红外线
端口, 通信距离短, 易受光、热源干扰, 只能单点通信,
功耗较大, 也不适合于现场实时测量。
2  硬件设计
21  总体结构
基于USB 总线的GPS 数据采集系统硬件电路从
大方向上分为室外采集部分和室内采集部分。其原
理框图如图1 所示。室外采集部分电路主要包括甄
别电路、峰值保持电路、ADC 转换器、微控制器系统、
GPS 收发模块及掌上电脑( PDA) 。室内采集部分电
图1  基于USB 总线的高精度GPS 数据采集系统硬件框图
路主要包括主机、USB 接口电路、微控制系统及GPS
收发模块。
22  PDIUSBD12 芯片
 2004 年
 第11 期
仪表技术与传感器
Instrument Technique and Sensor
2004 
No11 
由于USB 的本身控制协议较复杂, 需要使用相应
的USB 接口芯片, 系统采用只有USB 通信功能的接口
芯片, 在设计USB 接口时再配以适当类型的微控制
器, 如Philips 公司的PDIUSBD12 芯片。这样可以灵活
地选择单片机及其开发系统进行外设开发, 从而保证
设计出的系统能够达到最佳的性能。
PDIUSBD12 是有并行总线和局部DMA 传输能力
的全速USB 接口器件。
3  系统软件设计
31  固件设计
固件是指被固化在89C58 Flash 程序存储区中的
程序代码。固件开发使用的是Keil 51 语言, 开发平台
采用的是uVision2 集成开发环境。固件设计的目的是
确保最佳的传输速率和更好的软件结构, 同时简化编
程和调试。将PDIUSBD12 的固件设计成完全的中断
驱动。当CPU 处理前台任务时, USB 的传输可以后台
进行, 其前后台工作的原理图2 所示。
图2  前后台工作原理
  后台ISR( 中断服务程序) 和前台主程序之间的数
据交换通过事件标志和数据缓冲区来实现, 主程序不
关心数据的来源, 它只检查循环缓冲区内需要处理的
新数据。主循环程序专注于数据的处理, 而ISR 能够
以最大可能的速度进行数据传输。因而, PDIUSBD12
芯片的固件积木式结构如图3 所示。
图3  固件积木式结构图
  硬件提取层是最底层代码, 主要作用是对单片机
的I/ O 口及数据总线等硬件接口进行操作; PDIUSBD12
命令接口包括了对PDIBUSD12 器件进行进行操
作的模块子程序集; 标准请求处理程序对USB 的标准
设备请求进行处理; 厂商请求处理程序对用户添加的
厂商请求进行处理。
中断服务程序由GPS 传输控制信号及USB 通信
传输组成。GPS 对微处理器的中断处理比较简单,
USB 通信传输ISR 处理由PDIUSBD12 产生的中断, 它
将数据从PDSIUBD12 的内部FIFO 取回到CPU 存储器
并建立正确的事件标志以通知主循环进行处理。首
先, 固件读取中断标志位来决定中断源, 然后进入相
应的子程序进行处理, 其流程如图4 所示。USB 通信
传输ISR 与前台主循环通过事件标志 EPPFLAGS 和
数据缓冲区 CONTROL_XFER进行通信。
32  设备驱动程序设计
Windows 操作系统下的设备驱动程序运行在内核
模式下, 在该模式下, 代码不限定访问系统资源, 所以
在Windows 下,USB 设备驱动程序的设计是基于WDM
(Windows Drivers Model ) 的。这是因为驱动必须和系
统的总线驱动进行通信, 而系统总线驱动是WDM 驱
动。因此, 驱动程序是保证应用程序访问硬件的软件
组件, 它是应用软件与固件之间相互联系的桥梁。
与传统PC 总线设备的驱动程序相比, USB 设备
驱动程序不直接与硬件对话, 它靠创建URB( USB 请
求块) 并把URB 提交到总线驱动程序就可完成硬件操
作。USB 的设备驱动使用IRP( I/ O 请求包) 传递总线
通信, 处理USB 通信。
开发USB 设备驱动程序难度较大, 传统开发工具
主要是Microsoft 公司的Windows DDK. 利用NuMega 公
司开发的DriverStudio 套件中的Driver Works 工具模块
进行WDM 设备驱动程序的开发, Driver Works 对于
Windows 98 和Windows 2000 共同支持的W32 驱动模
型设备驱动程序的开发提供完全支持。Driver Works
中包含一个非常完善的源代码生成工具( Driver Wizard)
以及相应的类库, 它提供了在C++ 下进行设备驱
动程序开发的支持。通过Driver Wizard 生成的代码只
   
 26 Instrument Technique and Sensor Nov2004 
需要少量的修改便可以使用, 它使得驱动程序开发将
精力集中在驱动功能的实现上。
33  应用程序设计
在Win32 系统中, 把每一个设备都抽象为文件,
此时的应用程序只需通过几条简单的文件操作API
函数, 就可以实现与驱动程序中一个设备通信。应用
程序设计在Visual C++ 开发环境下进行。根据实际
要求, 需要在软件中对采集的数据进行整理、分析并
显示。其功能模块主要有文件管理、数据采集、谱数
据显示、地图显示、网络编程管理等模块。其结构框
图如图5 所示。
图5  软件系统结构框图
  Win32 规范规定了Win32 应用程序调用设备驱动
程序的方法, 可以使用函数像访问一个文件一样访问
设备。
在应用层, 用Visual C++ 60 编制的应用程序通
过WDM 设备驱动程序与USB 设备进行数据交换。应
用程序向USB 设备传递数据的部分关键代码如下:
void PanfubinusbView: : senddata ( char comusb, int
t ime0, int data)
{ 
/ / 打开USB 设备
wsprintf (Filename, SCANUSB, i) ;
hComm = CreateFile ( Filename, GENERIC_WRITEGENERIC_
READ, 0,NULL,OPEN_EXISTING,
FILE_FLAG_DELETE_ON_CLOSENULL) ;
If( hComm== INVALID_FHANDLE_VALID)
MessageBox(  open USB device fail! ) ;
/ / 发出写请求给USB 设备文件
hComm= WriteFile( m_chand, buff, 16,&rwet, null) ;
if( hComm== 0)
MessageBox(  write usb device fail) ;
free( buff) ;
/ / 完成USB 设备的使用, 关闭文件句柄
CloseHandle( h_Comm) ;
}
应用程序从USB 设备收集数据的代码编写主要
就是使用ReadFile 函数, 发出读请求给USB 设备文
件, 需要注意的是最后要释放缓冲区。
4  实验结果
整个系统设计完成后, USB 部分传输数据的实验
结构如图6 所示。
图6  测试USB 总线传输数据的测试结果
5  结束语
将USB 总线技术应于GPS 数据采集系统, 充分利
用了USB 总线的特点, 提高了数据传输速率, 增强了
灵活性, 使其在室内实时监测显示矿带分布成为可
能。通过USB 总线把当前的GPS 高新技术很好地联
系在一起, 为今后的数据采集系统指明了一个发展方
向。稍加修改便可应用于其他基于微机的数据采集、
自动化测控系统当中。
参 考 文 献
[ 1]  张宏.USB 接口设计. 西安: 西安电子科技大学出版社, 2002.
[ 2]  周立功.PDIUSBD12 USB 固件编程与驱动开发. 北京: 北京航空航
天大学出版社, 2003.
[ 3]  伍红兵.Visual C++ 编程深入引导. 北京: 中国水利水电出版社,
2002.
[ 4]  朱磊, 周彬. Windows 下的C/ C++ 高级编程. 北京: 人民邮电出版
社, 2002.
[ 5]  贾文懿, 周蓉生. 核方法全谱测量快速分析技术及应用研究. 国土
资源部科技报告, 1999.
[ 6]  袁启兵. 基于单片机的现场多道核能谱数据采集系统研究: [ 学位
论文] . 成都: 成都理工大学, 2003.
[ 7]  王广运, 郭秉义, 李洪涛. 差分GPS 定位技术与应用. 北京: 国防工
业出版社, 1996.
[ 8]  党安荣.ArcGIS 8 Desktop 地理信息系统应用指南. 北京: 清华大学
出版社, 2003.
欢迎访问!
WWW. globalsensors. com
全球传感器专业网站
六十类传感器 数千家传感器企业
超亿种传感器产品
   
基于USB总线的GPS数据采集系统设计.pdf (425.18 KB, 下载次数: 3)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-16 03:04 , 耗时 0.096328 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表