基于ARM的传感器数据采集与网络传输系统.docVIP

基于ARM的传感器数据采集与网络传输系统.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ARM的传感器数据采集与网络传输系统.doc

基于ARM的传感器数据采集与网络传输系统 传感器数据采集、传输因微处理器的不同而方式各异,微处理器之间可采用串口、总线、无线等方式实现数据传输.但微处理器与上位机的数据传输方式单一,大部分采用串口与上位机通信,无法实现多远程主机对同一检测对象的访问.本文设计了基于ARM 的数据采集与网络传输系统,以便多个主机访问同一检测对象,并实现多机远程监控某钢件的受力. ? 1 采集平台硬件设计 ??? 基于ARM920T的ARM 处理器将A/D转换结果网络打包后通过CS8900传递到网络上,网络上的主机可接收传感器结果.并在此系统上实现远程监控某钢件所受力(图1). ? ? ? 1.1 微处理器 ??? 基于ARM920T内核的微处理器因微型化、多样的外围设备接El(如触摸屏接口、LCD接口、IICISP、IIS、A/D、USB),适合多传感器检测平台架构,并可移植Linux、uclinux等操作系统和miniGUI、QT 应用程序.基于ARM9体系的$3C2440、$3C2410是两款16/32位RISC嵌入式微处理器,芯片上集成了MPLL,使得微处理器工作频率最高达到203 MHz.这两款微处理器有两个8位的SPI串行接口,可工作在查询、中断、DMA 3种工作方式,通过设置适当的数据传输频率和主从工作方式,可直接与外围SPI器件通信,需要注意的是每次读取外部设备数据时必须向8位传输寄存器写1. ?? 1.2 传感器电路 ??? 图2所示为测重传感器变换电路Ll .利用金属应变片单臂电桥检测直径为1 cm的钢件所受压力.应变片灵敏度系数K为2,电桥的阻值为120 Q.为提高传感器的灵敏度,电桥由LM358构成的恒流源提供5 mA 电流,压力信号经过电路处理后可放大2 178倍.可以通过调节滑动变阻器RP 实现调零操作.压力检测所用的A/D芯片为MAX147,它是具有SPI接口的12位串行8通道模数转换模块,可以与ARM 的SPI接口相接.通过软件选择所需通道.为保证A/D转换模块的工作精度,由LM385为MAX147提供2.5 V的参考电压.可以与ARM 的SPI接口相接.通过软件选择所需通道.为保证A/D转换模块的工作精度,由LM385为MAX147提供2.5 V的参考电压. ? ? 2 采集系统软件设计 ??? 采集系统的软件部分包括A/D驱动部分和TCP程序部分.ARM 平台中位于用户空间的TCP程序可调用A/D驱动实现传感器数据采集. 2.1 驱动程序设计 ??? Linux设备驱动程序可分为字符流设备驱动程序,块设备驱动程序和网络设备驱动程序.MAX147的采集结果为12位的字符流设备,为实现在Linux环境下访问MAX147,需要编写字符流驱动函数.以下是A/D驱动的读写函数部分代码. A/D芯片MAX147的写参数函数为: ? static ssize— t write(struct file *filp,const char_ user*buffer,size— t count,loff_t*offset) {? If(readb(rSPSTA) C241o— SPSTA_READY) {copy_from_user(~buff,buffer,1); writeb(buff,rSPTDAT); return count;) ? ) 读函数为: static ssize— t read(struct file * flip,char— user * buffer, size— t count。lof_ t*offset) {? ; if(readb(rSPSTA)$3C2410一 SPSTA_ READY) {writeb(OxO0,rSPTDAT); . if(readb(rSPSTA)$3C2410一 SPSTA _ READY) {from_buff=readb(rSPRDAT); copy_to_user(buffer,from— buff,count);return count;} }.··; ? ??? 在嵌入Linux系统的ARM 处理器中,用户空间访问的只能是虚拟地址,所以为访问SPI控制器,需要通过ioremap()函数将宏rSPTDAT映射为发送寄存器的虚拟地址,rSPTDAT — iorema(01),参数0发送寄存器的实际物理地址.为实现软件查询的工作方式,需要利用函数write(readb(rSPCON)~$3C2410—SPCON— TAGD $3C2410一SPCON — CPH A 一FMTA $3C2410一SPCON — SM OD — POLL$3C2410一 SPCON— CPOL_HIGH,rSPCON)向SPI控制器写入$3C2

文档评论(0)

aiwendang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档