ARM数据采集

2024-07-12

ARM数据采集(精选10篇)

ARM数据采集 篇1

1 引言

随着我国电力行业的迅猛发展, 电网供电品质越来越受到电力部门和用户的关注。电力参数能够反映电网供电品质的高低, 对其进行准确、快速的测量对于实现电网调度自动化、保证电网安全与经济运行具有十分重要的意义。目前, 在交流电参量测量系统中, 普遍采用数字方法处理模拟信号取代用模拟系统处理信号。作为其关键组成部分, 交流电参量测量仪走过了从简单到智能, 从基于8位、16位微处理器到基于32位微控制器、数字信号处理器 (DSP) , 其性价比也随之不断提升的历程。其中基于ARM核的处理器以其开放性、高可靠性、低功耗和嵌入式操作系统的易移植性普遍应用于汽车、消费电子、工业控制等各类产品市场, 相信在电力系统及电力设备自动化相关产品中必将得到越来越广泛的应用。本文描述了对基于ARM的智能交流电量数据采集系统的设计与实现。

2 系统的总体方案设计

2.1测量方法

电力参数作为典型的交流信号, 其测量方法分为直流采样法和交流采样法[1,2]。目前电网中的谐波污染日益严重, 电网电压、电流波形发生畸变, 而电网频率并不是固定不变, 是在50 Hz附近波动, 传统的直流采样算法已不能满足需求。交流采样实时性好、相位失真小, 虽然算法复杂, 但采用高精度ADC和高性能CPU作为基础, 同时充分考虑谐波的实时监测与分析, 可以保证测量电力参数的快速性和准确性。基于以上分析, 本系统选择在电力系统中应用广泛的基于傅里叶变换 (FFT) 的检测方法。基于FFT的技术对信号采样的同步性有严格的要求, 当不满足同步采样的条件时, 会产生频谱泄露和栅栏效应现象, 给结果带来较大误差。本系统采用锁相环倍频技术实现硬件同步采样, 以保证参与分析的信号长度为其周期的整数倍;利用加窗差值算法对FFT算法进行修正, 以抑制频谱泄露;采用增加信号分析长度的方法来增加频谱分辨力[3], 即通过过采样技术保留较多的有用信号分量来参与运算, 有效抑制频谱混叠。

过采样技术[4]是用一个很简单的抗混叠滤波器把M·ΩN (M为整数, 为过采样率;ΩN为有用信号的最高频率。) 以上的信号显著衰减;接着用比2ΩN高得多的采样率实现A/D转换;然后在数字域内实现锐截止的抗混叠, 再将采样率降低。这样, 保证信号频谱不会发生混叠的同时, 后续的数据处理量得以降低, 而抗混叠滤波器又比较容易设计。若选取采样周期T满足π/ (M·T) = ΩN, 则混叠的部分可以用截止频率为π/M的理想锐截止数字滤波器滤除。

本系统采用MAXIM公司推出的单片集成滤波器芯片MAX274实现模拟低通滤波功能。MAXIM公司网站提供免费设计软件, 省去了手工计算。利用Matlab工具箱设计FIR数字滤波器, 采用C语言编程实现锐截止数字滤波。以分析31次谐波为例, 信号的最大频率fmax=1 550 Hz, 则2fmax=3 100 Hz, 取模拟低通滤波器通带截止频率fsmin=3 200 Hz。采样频率fs=M×fsmin, 一般过采样率取2~8之间, 若此处取M=4, 则fs=12 800 Hz, 即采样点N=256, 可计算出模拟低通滤波器阻带截止频率fco=12 800-3 200=9 600 Hz。则信号频谱在3 200~9 600 Hz内存在混叠, 设计数字滤波器阻带截止频率为1 600 Hz (数字频率为π/M) , 保证1 550 Hz以内的有用信号无混叠。最后将经过FIR数字滤波器 (31阶) 滤波处理的数字信号通过FFT算法进行计算, 求出各次电压/电流谐波含有率, 总电压/总电流有效值, 有功功率, 视在功率, 功率因数以及频率变化等交流电参量。

2.2系统硬件总体方案

系统硬件设计原则采用模块化设计, 整个装置分为:信号采集 (模拟) 和ARM控制器处理 (数字) 两大部分。系统具体工作过程如下:通过霍耳电压/电流传感器分别采集交流电压、电流的瞬时值, 将其转化得到的弱电信号经信号调理电路、模拟滤波电路送入高精度ADC, 将模拟信号转换为数字信号, 并送入CPU中进行数据运算处理, 最后完成数据的实时显示或远程传输。由逻辑/时序电路 (CPLD) 负责将硬件同步电路送来的采样信号送入ADC开始采样;在转换结束后负责向双口RAM发出地址信号, 将ADC转换的结果存入双口RAM中;当双口RAM中存储了一定数据后, CPLD负责向CPU发出中断信号, CPU读双口RAM中的数据。系统硬件框图如图1所示。

3 系统软硬件设计

3.1系统硬件模块设计

本系统选择基于ARM7内核的PHILIPS的芯片LPC2292作为主控芯片[5]。LPC2292有以下特点:

1) 最大操作频率可达60 MHz, 可满足高速数据采样、大容量数字滤波和FFT的要求;

2) 系统集成了GPIO、外部中断、PWM控制器、I2C串行接口、UART、看门狗定时器、捕获/比较定时器、CAN接口、外部存储器控制器和向量中断控制器等接口, 可以方便连接系统所需的ADC, SRAM, FLASH, LCD, USB等外设, 以及实现频率测量、RS232/485串口、CAN、键盘管理、实时时钟等功能;

3) 片内16 kB RAM和256 kB FLASH, 数据/程序存储空间非常大, 系统扩展余地大, 有利于系统升级和功能扩展。

考虑到传统的电压互感器/电流互感器 (PT/CT) 只能工作在特定频率50 Hz/60 Hz下, 在短路故障时存在磁路饱和现象且有相移, 本系统采用测量精度高、线性度好、相移小、响应快、可测频率范围宽的霍耳电压传感器 (VSM025A) 和霍耳电流传感器 (CSM025AY) 获取模拟信号。

系统设计硬件锁相环倍频电路, 以实现采样频率fs对工频f的在线自动跟踪。具体电路设计结构是:首先由一个高Q模拟低通滤波器 (MAX297, 截止频率为60 Hz) 和一个高通无源滤波器 (滤除可能含有的直流分量) 来提取一路基波信号 (synchronous signal) 送入过零滞回比较器 (LM339) 并经高速光耦 (6N137) 隔离, 实现将输入为±5 V的正弦波信号转换成频率相同的0~5 V方波信号 (output signal) , 然后送到锁相环倍频电路 (CD4046与分频电路构成的闭环回路) 和整形电路 (CD4528) , 最终输出信号即作为ADC的同步采样信号 (synchronous output signal) , 其中分频电路由基于CPLD (EPM7128) 设计的逻辑电路实现。硬件锁相环倍频电路原理图如图2所示。

LPC2292芯片自带有A/D转换器, 但由于电量采集的精度、速度要求较高, 本系统选用外置的6通道12位ADC ADS7864实现模数转换, 采用差分输入, 时钟信号由CPU的PWM4 (P0.8口) 脚提供, 最大时钟频率为5 MHz左右, 硬件同步信号 (synchronous output signal) 经CPLD倍频后作为采样保持触发信号, 复位信号由P1.17口给出。由于该款芯片与其同系列的16位ADC ADS8364可以实现多路采样信号同步快速转换, 所以在电力系统的电力测量装置中使用非常广泛。具体选用时需要考虑实际需要及市场供应量。

由于本系统程序量和数据量均较大, 在LPC2292片外扩展了一片4 Mbit的SRAM (IS61LV25616) 以方便在线调试, 同时扩展了一片16 Mbit FLASH (SST39VF160) 用作历史数据保存。在具体设计时, 由于Bank0可以进行中断向量重新映射操作, 故将SRAM分配为Bank0地址用于程序调试, 地址范围为:0x80000000-0x8007FFFF;分配FLASH为Bank1地址, 地址范围为0x81000000-0x811FFFFF。双口RAM、LCD液晶模块和USB接口电路共同占用Bank3存储器组, 片选信号由CS3经译码电路给出, 其中经译码得到的多余片选信号以及Bank2的片选信号CS2均引出, 以备扩展。其中双口RAM选用CYPRESS公司的CY7C136-25JC, 需要考虑电平转换问题。采用双口RAM作为ADC转换完成后的数据缓存, 可以避免CPU频繁响应中断的同时, 保证采样数据的完整性和实时性, 实现对实时波形的全部采样。由于需要实时监测和记录相关交流电参量, 保存历史数据以及掉电保存重要参数及数据信息, 系统外扩了一片实时时钟芯片DS1302, 与CPU串行接口, 通过软件模拟时序完成对芯片的操作。

本系统使用专用于键盘和LED驱动的芯片ZLG7290来实现键盘管理, 共设计9个按键, 部分按键功能复用。该芯片价格低廉、功能强大, 最多可支持64个按键, 且采用I2C总线接口, 提供一个中断引脚可用来判断是否有按键输入, 便于与CPU接口和编写软件程序。LCD选用内藏驱动器和控制器的SMG240128A点阵图型液晶模块, 可显示复杂的文字和图形, 能检测电压、电流的实时波形。

本系统设计了RS232/RS485, USB等通信接口, 可根据实验需要采用不同的方式进行数据的远程传输, 同时设计CAN接口电路以便今后进行功能扩展。本系统还设计有2路开关量输入、4路开关量输出电路、蜂鸣器和若干LED指示灯, 用来完成控制、故障报警、故障信息指示以及保护等功能。电路设计中要考虑电平转换、隔离、芯片驱动能力等因素。

3.2系统软件设计

软件设计基于前后台工作方式, 采用模块化设计的思想和菜单驱动[6]的工作方式, 以增强程序的可读性, 便于功能扩充。即首先对系统的功能进行详细规划, 将紧密相关的操作分在一起, 系统功能的分组数即为系统主菜单的项目数, 凡是当前不可知的操作都不会出现在当前的菜单上。按照主要功能需求将软件设计分为以下几大主任务模块:初始化模块、实时波形显示模块、数据分析模块、参数设置模块和历史数据查询模块, 以及按键判断、液晶显示、定时器和数据通信等其他子程序模块。系统上电后调用初始化模块完成硬件模块、系统变量及菜单号的初始化, 然后进入主菜单等待运行各任务模块。系统的主菜单结构如图3所示。

基于前后台工作方式的软件系统开发过程中经常会遇到程序跑飞或是陷入死循环的现象, 在ARM系统中嵌入实时操作系统μC/OS-Ⅱ将增

强系统管理和调度的可靠性, 降低用户代码复杂度并使得调试程序变得简单。因此在上述软件开发的基础上, 又完成了基于μC/OS-Ⅱ的底层驱动程序的编写、基本数据采集和USB通信接口设计。实践证明, 采用基于μC/OS-Ⅱ实时操作系统的软件系统设计比基于前后台工作方式的软件系统设计具有更好的移植性。

3.3系统的抗干扰措施

系统的硬件电路设计包括模拟、数字两部分, 工作频率较高, 涉及的电磁兼容性问题需考虑多方面因素, 主要采取如下措施。

1) 器件选型时尽量选择抗干扰能力强的CMOS器件, 对易于产生噪声的器件、小电流电路和大电流电路等尽量远离逻辑电路, 信号频率较快的电路尽可能靠近CPU, 合理布线。

2) 提高电源电路的抗干扰能力。采用开关电源, 在电源输入端跨接电解电容, 一些较大芯片的电源引脚与地之间设计去耦电容, 模拟、数字电源采用磁珠隔离。

3) 慎重处理地线。容易产生相互干扰的电路分开走地线, 最后一点接地;相关联的电路中各器件采用多点接地;关键信号线可以包地线进行隔离。

4) 采用隔离和屏蔽措施。正确利用光耦, 加装金属屏蔽层, 使用屏蔽电缆。

4 系统误差分析

本文以一台三相交流异步电动机为监测对象, 针对测量结果存在的误差对系统误差给出定性分析。电动机由接触器控制直接启动运行或者通过变频器控制运行。电动机数据为:Pe=3 kW, Ule=380 V, cos φ=0.8, ηe=91.5%, 三相接近平衡。具体方法是采用一个单相调压器作为信号输入源, 对4条通道的数据分别测量, 将测量结果与万用表测到的调压器输出端电压相比较, 信号输入源输入范围是200~260 V, 表1给出了测量结果。

由测量结果可以看出, 各通道测量误差基本小于等于0.5%, 但通道3误差较大, 可知模拟采集通道带来的误差对结果影响最为严重。理论上经模拟采集通道得到的信号应与待测信号呈线性关系。模拟采集通道共包括3部分电路:输入端调理电路、模拟滤波电路和ADC输入端的调理电路。通过分段测量的方法, 最终确认误差主要来源于模拟滤波电路。虽然设计时模拟滤波芯片MAX274是按放大增益为1设计的, 但是由于实际电阻取值与理论值有差距, 使得它成为造成误差的主要原因, 而主电路板上的该部分电路无法修改, 故可以后续在软件中通过对实验结果作适当补偿的方法来减小误差。另外, 软件算法和LCD显示值的读取均可能引入误差。软件算法采用定点运算可以大大加快数据的处理速度, 但也会对测量结果产生不小的影响, 需要选择浮点运算。今后可以考虑采用FPGA/CPLD实现数字滤波功能, 从而通过改进硬件设计方案来减轻CPU的负担, 提高系统的精度和实时性。

5 结论

基于ARM的交流电量数据采集系统的测量方法采用硬件同步采样和过采样技术相结合, 硬件结构采用CPLD、高性能ADC、双口RAM和基于ARM核的主控制器LPC2292协调工作, 软件算法采用FIR数字滤波和复序列FFT算法, 共同完成对相关交流电量的测量。实验表明, 该系统具有较好的实时性和测量精度。系统的软硬件设计充分考虑了可扩展性、开放性和可移植性, 对于进一步开发智能化多功能电参量监测仪具有很好的借鉴意义。

摘要:基于ARM的智能化多功能电参量监测仪有较高的性价比和实用意义。在此背景下, 提出了一套交流电量数据采集系统的总体设计方案。首先介绍了采用硬件同步采样和过采样技术相结合的测量方法;之后详细介绍了利用基于ARM7核的主控制器LPC2292实现多通道同步交流电量数据采集的硬件电路设计, 简要介绍了软件开发思想;最后分析了系统的抗干扰问题, 对系统误差进行了分析。实验表明, 该系统具有较好的实时性和测量精度。

关键词:同步采样,过采样技术,谐波分析,μC/OS-Ⅱ

参考文献

[1]刘春玲, 王咏, 田国红.电力参数数字化测量的常用算法研究[J].辽宁工学院学报, 2001, 21 (6) :17-19.

[2]许大宇, 李先允, 王芳, 等.电力系统运行参数交流同步采样算法研究[J].南京工程学院学报:自然科学版, 2005, 3 (4) :37-42.

[3]陆以彪.交流电量参数现场综合测试仪的研制[D].哈尔滨:哈尔滨理工大学, 2003.

[4]张新刚, 王泽忠.基于过采样技术提高数据采集精度的新方法[J].电力系统自动化, 2004, 28 (14) :58-62.

[5]周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社, 2005.

[6]周航慈.单片机应用程序设计技术[M].第2版.北京:北京航空航天大学出版社, 2002.

ARM数据采集 篇2

一 首先说说ARM的发展 二 ARM是硬件还是软件 三 要不要买开发板 买哪家

四 要不要有51 AVR等单片机基础 五 开发都需要学习哪些软件

七 选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用 八 学习要用多长时间

九 ARM都玩什么 十 我用的什么板子 十一 开发流程

十二 关于JTAG访真器 十三 哪个公司的ARM 我的笔记刚公布就有很多朋友来找我,把我当高手,问我“ARM怎么入门”。我不是高手,仍然是菜鸟。

但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。

首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。

所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵 以下问题常被问到,我就想到哪说到哪吧。一 首先说说ARM的发展

可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。广义的嵌入式无非几种:传统的什么

51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。

客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。

FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。

而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!很佩服他们的战略眼光!

值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。

写的多的是什么?“嵌入式LINUX”

到这相信大家看出来了吧,需要的是硬件中的软件。二 ARM是硬件还是软件

很难说,ARM是硬件,LINUX是软件。

ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。

实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬件。所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师” 三 要不要买开发板 买哪家

我的答案是“在你个人的学习方法”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。1 买

买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。

另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0 160个脚!那叫一个麻烦~~花了多少钱呢?2层板,制版费就300块!当然 我把接口都外引了,还做了个20X18的LCD背板,板子比较大。

总体下来 元件+LCD屏+PCB=11XX块!够2410的了。

再有就是买的资料相对来说比较全,但是不要指望有技术支持!都是骗人的,卖你之后就不会理你。2 做

自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、GPRS模块、SD卡模块,扩了个IIC的35个键子的键盘、把LCD接口按照买的LCD改装了,可以用FPC线直接连接。做的很爽的。玩一把吗。

当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。其他的如SD了 什么的自己做。都达到了~~就是费钱,费时间。

再有就是给做的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。

网上流传的原理图多数是龚俊03年画的,再这里对龚俊表达一下我的敬意!牛人!但是那个图有个小BUG,我指的是03版的,后来的没这问题了。8019那地址线和地址有问题。还有人仿照他的PDF图画的SCH,更是漏洞百出!谴责!顺便谴责把龚俊板子偷卖 的人。买哪家

个人感觉分3类吧

1)首先是ZLG的,资料非常的全,感觉他是真正想教你怎么开发ARM,而不是像有的公司自己技术都没做好就做个板子出来卖钱。但是最大的不利就是价格太贵!而且主要是PHILIP的,货源比较麻烦~~可能有人说21XX系列的不贵啊,那是总线不外扩的,只能跑UCOS,不能跑UCLINUX。但是说是话,21XX系列才是ARM7的价格性能结合点。ARM7最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM7来的,而44B0是典型的商业片子。但是,这里如果你看中的是为工作做准备,还是选能跑UCLINUX的吧。但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!在这里被ZLG的务实*感动!你看人家那代码写的。

2)感觉硅谷芯微的2440不错

硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~ 3)找个最便宜的

好象最便宜的有卖350的吧?也是没别的,就是即省了钱 还省时间搜集资料,至于资料全不全,别计较了~~硬件肯定好使就行吧。四 要不要有51 AVR等单片机基础

有更好,但没有也无所谓。

两个月以前,我只是看别人做,耳濡目染~~,本科学过单片机,从来没做过。我们这的技术主干做AVR和51,我就跟他们调过C语言程序。你看出来了?我是个不折不扣的菜鸟吧? 但是做这个之前我特意找了ZLG的两本书,看了里面的例子和原理图,这很重要。例程里有汇编有C,都看懂了就OK,不用自己现写 五 开发都需要学习哪些软件 总结起来最主要的有以下几个吧 ADS调试用

确切的说是ADS+AXD。ADS里包含AXD。原来都用SDT后来ARM公司停止对SDT支持了,改支持ADS了,还是用ADS吧。

有的人的程序发布的仍然是SDT版本的,但基本都可以找到相应ADS的,新人在这里不要发蒙。ADS是编译器,AXD是调试器。便宜成AXF以后再在ARM的RAM里调试。2 PLASHPGM FLASH烧写的软件。AXD在RAM里调试,掉电就没有了,方便程序修改。调试好的程序再下到FLASH里,上电直接运行。

同类的软件还有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人还问FLASH不支持BIN格式文件的问题就要看我写的PLASHPGM使用了。BANYANT调试代理(不知道名对不,起这么个难记的,我一般都叫它“半羊”因为知道它那几天刚吃了烤羊)

调试代理就是用它帮你使用更简单的JTAG(便宜啊)来实现原本1K才卖的JTAG仿真器的大部分功能。JTAG调试原理看我另一篇笔记。简单的就可以把他理解为你自己做的JTAG的驱动就行了。

调试代理还有很多种,什么H-JTAG了、ARM7了(不知道具体叫什么,就记得可执行文件叫ARM7.EXE)都是,BANYANT比较好。

需要注意的是,没种调试代理安装方法虽然都简单 但都不一样,需要看说明。而且AXD调试之前都要运行。省钱了,就别怕麻烦了。4 ARM-ELF-TOOLS工具链

里面是UCLINUX开发用的工具比如ARM-ELF-GCC只类的。工具链就是把很多工具打包在一起发布的方便你开发的东西。具体安装方法看我另一篇笔记。另外如果你开发LINUX就要用ARM-LINUX-TOOLS,不一样,不通用。5 U-BOOT 大名鼎鼎的BOOTLOADER生成工具,同类的好象还有VIVI(名字很暧昧~~)生成的BOOTLOADER烧到FLASH里,然后就可以用BOOTLOADER下载 烧写其他了 有了BOOTLOADER才能下UCLINUX。BOOTLOADER就像电脑上的BIOS。当然UCOS的不用这个,用什么我不知道:)最新版本是1.1.4 具体使用方法看我另一篇笔记吧。6 UCLINUX包

UCLINUX的源码包,不用多说了吧?建议大家用现成的先体会一下,然后再自己编译,裁剪。因为单独UCLINUX的编辑技术上比较简单,但涉及的方面还是比较广的。7 VMWARE

老牌的虚拟机软件,在一个机器上虚拟出一个机器装LINUX(PC上用的),省得你来回开关机了。记得装VMWARE-TOOLS,安装方法在我另一篇笔记里。七 选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用 搞开发,工程设计,用UCOS,小巧,多进程,简单,体现了ARM7的精髓。2 LINUX 正根的嵌入式系统,LINUX消费与通信领域用的比较多,但缺点是必须ARM9才能跑,ARM9的板子自己做就不行了,6层板太贵。买开发板500-1500吧。但是还是推荐选ARM9+LINUX 3 UCLINUX 算投机嵌入式系统:)ARM7上可以跑,由有LINUX近亲,学好好可以比较方便的转向LINUX,像我一样的穷鬼用吧,呵呵 VXWORKS 学好后可以找到高薪工作,但工作机会本身并不比LINUX好找。5 当单片机用

不推荐,虽然我景仰的ZLG一直号召这么干。因为对于学习来说多进程的系统设计才是ARM7的玩头,至少你也要整个UCOS啊:)

有朋友问我先学这个当基础不行吗?那当然可以~~但我当时就用了1周搞定,就是我先的ADS在RAM中调试的笔记。后来我清空FLASH用的小段程序还是当时写的LED闪烁程

序呢。另外1周里其中还因为自己过于菜,没把OM设置好导致晶阵不阵 哈哈。这个是必须做的,但一带而过。目标放的远一点。

八 学习要用多长时间

我从菜鸟到现在两个多月,中间被打扰数次。仍然搞定了PCB设计与制版,RAM调试,FLASH下载,UBOOT移植和下载UCLINUX(没剪裁,用现成的),LCD驱动。

再次坦诚的说:我确实比较菜,说这些不是让大家羡慕,只是告诉你们“你们应该比这个更好”

我相信良好的态度+合适的方法+及时的总结=成绩 九 ARM都玩什么 就几点 1 硬件设计 2 系统移植 3 驱动开发 4 应用开发

没了。其中推荐把注意力放在后两个上,3有难度,4比较灵活,最重要的是都是找工作的砝码。十 我用的什么板子

很多人问我这个问题,我特意写过一个的。再说一次吧。

我是自己做的,RAM、ROM、8019等比较麻烦而当时的自己不理解的都按照龚俊的做的。保持其他不便的情况下做了如下改动。1 加了串口通信的GPS模块、GPRS模块

一个UART0,一个UART1,当与要用超级终端时用跳线切换。2 SD卡,和7843触摸屏

同时挂在SPI总线上,因为SPI只能挂一个设备,同时还做了I/O模拟的准备,把两个设备又通过跳线挂在4个IO上。3 扩了个IIC的35个键子的键盘

用的ZLG的7290,不占用CPU,最大支持64个键子,只上了35个,其他留接口。4 把LCD接口按照买的LCD改装了,可以用FPC线直接连接。

所以改动虽然多,但真正很移植了,初期调试有关的并没动,就是为了现在不那么菜的时候做准备:)十一 开发流程

这里是我的开发流程 设计原理图(含WIGGLER的JTAG访真器)2 设计PCB(含WIGGLER的JTAG访真器)3 制版 焊接电压,确定电压没问题 焊接44B0+JTAG电路+WIGGLER的JTAG访真器+周边电路,用BANYANT+仿真器连接,BANYANT提示错误,但可以显示44B0编号,好象是0X0F0F0F0F只类的,说明44B0没问题 焊接晶体+RAM+ROM+周边电路,用BANYANT+仿真器连接,可以显示正确的44B0了 7 用BANYANT+仿真器连接,开AXD,在命令行窗口操作RAM,看可不可以修改,可以的话(用内存窗口看RAM地址)RAM就没问题 可以用这个命令“setmem 0xc000000,0xffffffff,32”

我的RAM挂在BANK6上 所以地址是0XC000000,你要是改了就也得改。8 用我写的《自己写了个C工程模板又写了个使用说明 》里的方法调试程序吧,写个简单的,我当时写个LED闪烁的。看好使不。把程序按照《FLASH烧写总结 》里的烧到FLASH里,测试一下 10 按照《UBOOT 移植操作》移植UBOOT 11 按照《UCLINUX下载简单说明》下个UCLINUX 12 看看驱动开发的方法,自己写个驱动看看 13 还有很多事东西着你玩 呵呵

十二 关于JTAG访真器

JTAG访真器现在用的多是简板的,一个244那种,用的没什么不好。

按照并口定义不同分几种,建议选WIFFLER定义的,因为支持的软件多。这个网上多的是,不多说了。

值得提的是有的JTAG访真器原理图上有跳线用来使能复位信号,这个一般不跳上。就是不用复位信号,因为JTAG协议里本身也可以控制44B0复位。当然,板子上的复位信号跳线也不用跳。十三 哪个公司的ARM 这个是问题比较简单。1 ARM7主要就几个公司的

三星,PHILIP,ATMEL的

ATMEL的有比较便宜的AT91SAM7S32 和AT91SAM7S64 专为8位应用产品量身定做,价格很便宜好象《3刀吧。和PHILIP的21XX差不多,资料太少,项目中选还不错。其他两家上面说了的不多说了吧 ARM9 这个玩2410和2440的多吧,现在2440还比较火啊 可以考虑买个了 但是2410就比较便宜了,作为学习来说反到和不错,推荐整一个:)

其实ARM9用的最多的领域应该是消费电子,比如手机PDA,而这上面用的多的应该是INTEL的和TI的吧。

但是INTEL的TI的入门材料少,价格高,自己看情况定吧。

硅谷芯微技术中心: 芯片级IT教育第一品牌 开设课程:单片机、嵌入式、ARM、Linux、Android、iphone、PCB设计 硅谷芯微推荐:嵌入式ARM9驱动实战开发班

ARM数据采集 篇3

关键词:气象数据;Linux ARM;串行通信

中图分类号:TP368.2 文献标识码:A文章编号:1007-9599 (2011) 15-0000-02

Multi-Channel Weather Data Serial Communication Design Based on ARM System

Huang Jiansong,Wu Yue,Hu Hanfeng

(Institute of Atmospheric Physics,Nanjing University of Information&Technology,Nanjing210044,China)

Abstract:In this paper,multi-field weather observation data transfer and storage requirements,a core processor with ARM9 S3C2440 development platform,focusing on the serial communication interface is designed.Paper describes meteorological data multiple serial communication research background and significance of structures based on the ARM S3C2440 processor hardware platform and Linux-based development environment,and established under Linux cross-compiler for ARM board environment,prepared serial communication applications and its structure was analyzed.

Keywords:Meteorological data;Linux ARM;Serial communication

一、引言

隨着大气探测科学研究的深入和传感器技术的进步,各类气象传感器和大气探测设备在科学试验和日常业务中正在发挥日益重要的作用。如今在进行外场试验时,通常会使用较多类型的探测设备观测各种气象要素和环境参数。这些探测设备一般具有串行通信接口,以便向上位机传输数据。如果使用普通计算机接收各类观测数据,通常需要多台PC机,并且数据的收集和存储将会变得非常麻烦。而以ARM核为处理器的嵌入式数据采集系统具有功耗低、体积小、接口多、程序编写调试方便等特点。因此,鉴于国内外气象数据采集系统的发展趋势,结合串行通信技术和ARM系统的特点,本文在一款以ARM9 S3C2440为核心处理器的开发平台上,重点对串口进行设计,以实现多路气象数据串行通信数据的传输和存储。

二、嵌入式系统硬件部分设计

作为嵌入式系统的核心,选择一款合适型号的ARM芯片非常重要。经过多方调研,本文的硬件部分采用以三星公司生产的S3C2440芯片为处理器的ARM9开发板。该开发板提供3个独立UART接口,可外接多路串行通信智能传感器,实现传感器与开发板间的数据传输与控制。

利用RS232串口线以及USB数据线连接好宿主机和目标,通过执行BIOS功能指令和运行dnw.exe软件,即可实现数据的烧写和下载。在windowsXP系统中,通过建立一个超级终端,设置好串口参数,进入BIOS模式界面。之后安装好ARM板的USB驱动,配合使用dnw.exe软件,就可以实现ARM板和电脑之间的Linux系统和应用程序文件的移植和烧写。

三、嵌入式系统软件开发平台的搭建

建立嵌入式系统开发平台,首先要在宿主机和目标机上安装指定的操作系统。根据本文设计要求选择Linux系统。对于一般的PC机,通常都带有windows系统,因此,宿主机的操作系统选择虚拟系统Red Hat Linux5.0,使用虚拟机(Vmware-workstation)的方式建立开发环境。

安装好Vmware,即可在宿主机上安装Red Hat 5.0 Linux系统。首先根据宿主机的配置来确定虚拟机的内存和硬盘配置。虚拟机硬盘大小根据目标需求分配,默认为8G。本文选择利用虚拟光驱来安装系统。系统安装完毕后即可设置ARM板的交叉编译环境,在Linux系统下安装arm-linux-gcc编译器。

构建嵌入式系统的软件开发平台,需要在ARM板上安装Linux系统。利用之前安装好的USB驱动和dnw.exe软件,通过操作BIOS模式的指令完成Linux系统的安装。Linux系统的安装过程主要包括以下几个步骤[1]:对Nand Flash进行分区、安装BootLoader、安装Linux内核文件、安装根文件系统。

四、数据采集功能程序设计

本文的设计目的是利用RS-232串口实现气象仪器与嵌入式系统之间的数据传输和存储。因此,设计的嵌入式系统的工作流程[2,3]是:首先系统上电进行初始化操作系统和外设模块操作,然后就可以运行特定的应用程序,流程图如图1所示。

图1:嵌入式系统串口通信应用程序流程图

其中初始化部分由设备驱动程序来完成。RS-232串口驱动程序主要包括串口初始化,字符发送程序,字符接受程序等。应用程序部分包括打开串口和文件,重新设置串口参数,读取数据,将数据存储到SD卡中,关闭串口和文件。由于驱动程序代码无需自行编译,因此,以下只对应用程序关键部分进行分析。

(一)打开串口和文件:通过使用标准的文件打开函数open(参数1,参数2)来实现的[4]。设备的打开方式本文选择可读可写方式。程序中三个串口的打开方式都一样,只是路径不同,所以在程序的开始,将设备和文件的路径定义为字符串常量,将其分别放在两个数组中,从而简化应用程序。

(二)设置串口信息:Linux系统中定义了一个查询和操纵各种终端的标准接口,称为termios。它包含了各终端特性的完整描述,相关联的函数可以查询和修改这些特性。在本设计中,串口参数分别设置为:波特率115200、8位数据位、无校验方式、无数据流控制、1位停止位。

(三)串口数据的读写:串口数据的读写类似于文件数据的读写。向串口发送数据,使用write()函数;而读取串口数据,使用read()函数。读写函数的返回值分别为函数读到或写入的数据的字节数。若返回值为-1,则表示出错。对于read函数,若返回值为0,则表示已经到达文件尾[5,6,7]。在打开串口和文件并设置好串口信息之后,每隔一段时间依次读取三路串口的数据,同时将读取数据存在SD卡中,存储格式为二进制。

应用程序编写完成后,在arm-Linux-gcc交叉编译环境中编译。利用交叉调试器进行分析和调试,使得该应用程序能够在开发板上运行,从而实现气象传感器与嵌入式系统之间的通信。

五、结论与展望

本论文利用嵌入式技术,搭建了基于ARM芯片S3C2440的硬件平台和基于嵌入式Linux系统的软件平台,并在Linux系统下建立了针对ARM板的交叉编译环境。根据实际需要,编写了嵌入式Linux系统下的串口通信应用程序,初步实现了多路RS-232串口的数据传输和储存。其应用程序还有待于进一步开发,例如实现应用程序的界面化、实时分析显示数据等功能。

参考文献:

[1]张景璐,杜辉,吴友兰.ARM9嵌入式系统设计与应用案例[M].中国电力出版社,2008,16

[2]李筠,邬登风.基于linux的RS-232C串口通信的研究[J].仪表技术,2010,7:43-47

[3]云霞,曾连荪.基于VC++6.0的RS-422串口通信设计[J].信息技术,2010,9:73-75

[4]刘盛辉.嵌入式多路数据采集平台的开发与研究[D].长安大学硕士学位论文,2006,47-55

[5]刘小成,朱佳华,林峰.Linux下串口通信在工业控制方面的应用技术[J].机械制造与自动化,2010,12,39(6):96-98

[6]马洪连.嵌入式系统设计实验教程[M].大连理工大学出版社,2007,6:65-79

ARM数据采集 篇4

在科研、生产和人们的日常生活中,模拟量的测量和控制是很常见的。为了对温度、压力、流量、速度、位移等物理量进行测量和控制,通过传感器把上述物理量转换成能模拟物理量的电信号,即模拟电信号,将模拟电信号经过处理并转换成计算机能识别的数字量,送入计算机,这就是数据采集[1]。

数据采集的主要问题是采集速度和精度。采集速度主要与采样频率、A/D转换速度等因素有关,采集精度主要与A/D转换器的位数有关。高速数据采集系统的设计需要解决系统在速度、精度、数据存储等方面的矛盾。

2 数据采集系统的结构

本文介绍的数据采集系统采用Samsung公司的S3C2410微处理器。数据采集系统按照功能可分为以下几个部分:模拟信号调理电路,模数转换器,数据采集和存储,时钟电路和系统时序及逻辑电路,如图1所示。

3 数据采集系统关键技术分析

3.1 系统时钟电路设计

时钟信号的稳定性决定了采样系统的性能。相位噪声和相位抖动是反映时钟稳定性的的两个主要指标。其中相位噪声描述时钟信号的频谱纯度,相位抖动直接影响时钟的过零点。通常高速的AD采样系统采用三种时钟源:锁相环、晶振、模拟混频器[2]。由于锁相环一旦失去基准频率,输出频率会立刻跳回振荡器本身的频率,此外当进行频率调整的时候,输出频率会产生抖动,频差越大,抖动会越大,不利与高速AD采样系统。模拟混频器速度慢,只适合在低频的条件下工作。因此,在高速电路的设计中,一般选择高频晶振作为时钟源。

在高速AD采样系统中,取样时钟的稳定性与信噪比的性能密切相关。任何时钟信号噪声及时钟信号相位抖动都会影响采样系统的精度,时钟信号相位抖动对模数转换信噪比(SNR)的影响,可通过公式计算:

undefined

其中:fs为采样时钟频率,N为模数转换器位数,Δclk为时钟信号相位抖动量。

3.2 模数转换器的选择

ADC的选择除了要考虑数据输出电平,接口方式,控制时序,参考源,带宽等因素外,最重要的是根据设计需求计算动态指标:信噪比,采样率,满度范围等,从而可以得到ADC的位数、最高时钟频率、模拟输入范围等参数,既可选择所需要的ADC。本设计根据要求:采样频率20 MHz,实时采样20 Msps,转换位数12位,选择了美国AD公司的AD9224芯片。

3.3 模拟信号调理电路设计

被采样的信号经过模拟信号调理电路的低噪声放大,滤波等预处理后,进入输入通道。由于高速数据采集系统的输入信号多为高频信号,需要进行阻抗匹配和前置放大。因此可以选择高速低噪声信号前置放大器和信号变压器。

信号前置放大器的优势是放大系数可变,信号输入的动态范围大,还可以配置成有源滤波器,但是放大器的最高工作频率和工作带宽必须满足系统的需要,以避免信号失真。

信号变压器的性能指标要优于信号放大器,而且信号失真小。但是信号变压器的信号放大系数固定,输入信号的幅度受到限制。

3.4 硬双缓冲实现连续采集存储

在高速的数据采集过程中,要求数据存储和S3C2410读数据同时进行,在相关文献中提出了一种基于软件系统双缓冲模式的存储技术,但是经过分析发现其在解决连续存储和读数的同时也降低了微处理器的性能[3]。在本设计中提出的基于硬件的双缓冲模式可以很好地解决这个矛盾,其工作原理如图2所示。

图中序号1~6代表工作流程,采集数据经CPLD控制首先由FIFO写入存储器1,当存储器1数据写满后,产生硬件中断信号,该信号有两个作用:通知微处理器系统数据已经准备好,由微处理器从存储器1取回数据放入缓冲区;通知CPLD控制逻辑关闭FIFO与存储器1之间的数据通道,同时开启FIFO与存储器2之间的数据通道,后续数据得以连续无间断的存入存储器1。此时,存储器1的数据正被微控制器读出,当存储器2数据就绪后,同样产生硬件中断信号。如此交替循环就可以实现采集数据长时间连续无断点存储。

3.5 多路同步采集存储时序分析

要完成多路信号的同时存储且数据连续无间断点、无差错,对时序逻辑的设计提出了较高的要求,本文采用的CPLD器件,利用其在结构、密度、功能、速度和性能上的特点,并配合在线可编程(ISP)技术,实现了精确的时序控制,大大减少线路的噪声和功耗[4]。

对多路信号同时锁存,若不允许丢失数据,必须在单个采集时钟周期内把多通道锁存的数据存入同一存储器中。假设同步采样频率为fs,通道数量为m,每个通道的存储时间为tn(n=1,2,3,…,m),则有 t1+t2+t3+…+tm=1/fs,既所有通道存储时间之和为采样周期。

假设t1=t2=…=tm=T,则各通道存储时间相同的条件为:

undefined

从实际角度出发,在一个采集时钟周期内还有其他的时间消耗,如保持时间和转换时间等,假设其他时间消耗为ta,则:

undefined

如果fs的占空比为1∶1,根据ADC实际工作时的情况,可以近似认为ta=1/(2*fs),既在一个采集周期中只有半周期的时间可供存储数据,则单个通道的存储时间:

undefined

根据上面的设计可以实现单采样周期内多路数据存储。

3.6 系统抗干扰设计

高速数据采集系统在抗干扰方面的问题远远大于中低速系统,例如信号连线上的延迟、反射、串扰、器件内部过度干扰和热噪声,电源干扰,地噪声等。轻则影响运算放大器、AD转换器等模拟器件的精度,严重时系统将无法正常工作。因此在高速数据采集系统设计中,整个系统的采集精度主要取决于系统的抗干扰设计。在电路设计初期和制板阶段就必须采取各种措施,以减小或者消除可能的干扰源。本文主要从以下几个方面进行考虑:

(1) 电源设计方面

根据高速电路设计理论,AD采集系统中的电源应当采用线性电源,以避免开关电源引入噪声。为了降低电源阻抗,减小噪声对电源的干扰,通常采用电源层设计,尽可能增大电源面积。在设计每个芯片的供电电路时,在每个芯片的电源附近并联去耦电容和旁路电容。去耦电容为芯片提供局域化的直流。旁路电容可以消除高频辐射噪声和抑制高频干扰。

(2) 接地技术方面

高速数据采集系统的模拟地和数字地应严格分开,最后单点共地。共地点通常选择在ADC芯片管脚所需电流最大的位置,这样可以使大电流对地回流最近,以避免对模拟电路的干扰,提高系统的采集精度。

模拟地和数字地可以通过磁珠连接,由于磁珠的高频阻抗大,而直流电阻为零,能够滤除高频电流减少地线上的高频噪声。

4 结 语

高速数据采集系统一直是测控领域内研究的热点,本文就基于ARM9的高速数据采集系统的结构,详细讨论了系统时钟电路设计、模数转换器的选择、模拟信号调理电路的设计、硬双缓冲实现连续采集存储、多路同步采集存储的时序分析,系统抗干扰设计等关键技术。经实践证明,该设计方案效率是很高的。

参考文献

[1]郭虹,艾延廷,盛元生.数据采集与处理[M].北京:航空工业出版社,1999.

[2]张卫杰,侯孝民.高速大容量数据采集系统设计与实现[J].电子测量与仪器学报,2005,19(4):51-55.

[3]杨坤德,赵亚梅,马远良.高速大容量多通道数据采集系统设计[J].数据采集与处理,2002,17(4):455-458.

[4]宋万杰,罗丰,吴顺君.CPLD技术及其应用[M].西安:西安电子科技大学出版社,1999.

ARM学习方法 篇5

一步一步学习uCOS和ARM体系结构的心得

学习必备条件:

1、一块开发板——例如44B0开发板,建议初学者不要去购买那些ARM9体系结构的,因为作为初学者来说ARM9体系的东西是很复杂的,买块ARM7的就可以了(先入门,然后再提高);

2、学习必备书籍

《Pointer on C》中文名字叫《C和指针》(美)里科|译者:徐波 前提你的了解C指针吧(这本书时非常经典的书籍,完全可以看中文版的,作者翻译的非常到位)

《嵌入式实时操作系统μCOS-II(第二版)》--邵贝贝翻译的(不能不承认邵贝贝是一个非常好的翻译者)

《μC/OS-Ⅱ标准教程》--杨宗德

对于英文不好的朋友可以购买《ARM体系结构与编程》--杜春蕾(该书其实还是有很多翻译错误的,大家在看的时候要注意一下,但是不可否认的是这本书到目前为止算得上是我见过最好的讲解关于ARM体系结构的书籍了)

对于英文过关的兄弟姐妹可以直接看

《ARM+Architecture+Reference+Manual(2nd+Edition)》

3、有条件的兄弟姐妹可以选购一个仿真器 JLINK V8全功能版(这个的感谢中国的优秀工程师,是他们把原价1999多的JLINK变成了几十元钱的东西

4、开发环境--MDK350或者IARARM

如果要熟悉这些开发环境,就需要好好读一些这些开发环境的手册资料,不好意思,这个就只有英文的了。

以上4个条件具备下来,可能也不会超过500元钱。

下面来讲讲我的学习经历:

我刚开始学习的时候,自己走了不少弯路,这里就省略不说了。

第一步:在开发板上跑跑简单程序

因为你有开发板,所以你就先在网上找一下对应开发板上的ARM芯片的datasheet,你都不先搞懂芯片的手册,又谈何让自己实现很多功能呢。

熟读数据手册后,就尽可能的在开发板上实现芯片对应的每个功能,像GPIO实验,UART通讯,I2C,ADC,DAC,PWM,RTC,SPI等等。自己写自己的程序,然后在开发板上好好实践一下。

当每个功能模块都实现以后,建议你让你的开发板实验一下多个功能复合使用,比如用UART打印出ADC的值什么的。

第二步:学习uCOS

鉴于你已经购买了《嵌入式实时操作系统μCOS-II(第二版)》,除开以下三个文件:

1、OS_CPU_C.c2、OS_CPU.H,3、OS_CPU_A.asm(这个是MDK环境下的汇编文件)或OS_CPU_A.a(这个是IAR开发环境下的汇编)

这三个文件的处理机制暂时可以不用先了解怎么做的,怎么移植的,以后再说

第一次读这本书时,搞清楚什么是任务,什么是前后台,为什么要在系统中加入嵌入式操作系统。

第二次读这本书时,详细了解他的TCB(Task Control Block)和ECB(Event Control

Block)的数据结构,搞清楚整个uCOS的实现机制(这里不要先就去看uCOS的移植,这样只会让你云里雾里的)

第三次读这本书是,详细了解信号量,互斥信号量、消息队列、邮箱和时间标志组

鉴于你又购买了《μC/OS-Ⅱ标准教程》,你 可以想在VC++ 6.0开发环境下实现对信号量,互斥信号量、消息队列、邮箱和事件标志组的上机实验代码。

如果还是不能了解uCOS怎么工作的,建议你多看几遍(我可是足足看了6、7遍了,书都翻得脱页了。汗说明我很笨,希望各位看官都比我聪明,呵呵)

第三步:建立对uCOS的初步认识

在网上下载对应你的开发板ARM芯片移植好了文件OS_CPU_C.c,OS_CPU.H,OS_CPU_A.asm(当然有的开发板已经提供了这样的基础实验)

在你的开发板上跑跑uCOS,建立起自己对于uCOS在ARM7开发板上的认识。

在你所购买的ARM7开发板上编写一个自己跑uCOS得任务(这里先不要去搞中断,初学者对于uCOS下的中断程序设计根本就搞不清楚)

第四步:熟悉ARM体系结构

因为是基于ARM7的移植,建议英文不好的去看看这本书《ARM体系结构与编程》(虽然这本书的作者在翻译时有很多操作,但是还是建议初学者去购买来好好看看),对于英文好的直接在网上下载《ARM+Architecture+Reference+Manual(2nd+Edition)》看就可以了

在看这个《ARM体系结构与编程》或

《ARM+Architecture+Reference+Manual(2nd+Edition)》时,务必注意多看几次,了解以下几个方面的知识:

1、ARM模式下的指令集

2、Thumd模式下的指令集

3、异常模式及进入异常时ARM如何处理

4、一定能熟悉ARM中的汇编指令

5、熟悉CPSR,R0-R7,R8-R14,R15及在各个模式下,这些寄存器的映射。熟悉以后,再来自己做uCOS的移植了。

第五步:uCOS移植

当然在自己编写代码做移植uCOS之前,有必要看看别人的移植代码。

其实对于uCOS的移植,我们只需要编写关键的三个文件,文件如下:

1、OS_CPU_C.c(堆栈初始化操作OSTaskStkInit函数)

2、OS_CPU.H:完成在该芯片下的数据定义,比如什么unsigned char 之类的,注意一下OS_STK和OS_CPU_SR的定义,定义下关中断和开中断的方式,有三个只能选择1个,ARM芯片一般是定义为第三种方式

3、OS_CPU_A.asm(这个是MDK环境下的汇编文件)或OS_CPU_A.a(这个是IAR开发环境下的汇编),这个文件的内容就多了,要做以下几个函数的重写:

1、OSStartHighRdy函数

2、任务级的任务切换函数OSCtxSw,3、中断级的任务切换OSIntCtxSw,其实只要写好了OSCtxSw,OSIntCtxSw自然就copy一下就完了(copy的时候记者要把保存当前任务的寄存器去掉就可以了。第六步:测试自己的uCOS移植代码

第七步:在自己写的uCOS移植代码中跑跑任务。

[分享]ARM初学者学习ARM的步骤

很多人学完单片机就想学arm,但不知如何去学~现在列出一下学习这方面的步骤-----基于linux系统的学习步骤如下:(一步步来哦:)

其实这也只是个基础,以后实际做项目了还要去学很多

1、Linux 基础

安装Linux操作系统

Linux文件系统

Linux常用命令

Linux启动过程详解

熟悉Linux服务 能够独立安装Linux操作系统

能够熟练使用Linux系统的基本命令

认识Linux系统的常用服务 安装Linux操作系统

Linux基本命令实践

设置Linux环境变量

定制Linux的服务 Shell 编程基础使用vi编辑文件

使用Emacs编辑文件

使用其他编辑器

2、Shell 编程基础

Shell简介

认识后台程序

Bash编程熟悉Linux系统下的编辑环境

熟悉Linux下的各种Shell

熟练进行shell编程熟悉vi基本操作

熟悉Emacs的基本操作

比较不同shell的区别

编写一个测试服务器是否连通的shell脚本程序

编写一个查看进程是否存在的shell脚本程序

编写一个带有循环语句的shell脚本程序

3、Linux 下的 C 编程基础

linux C语言环境概述

Gcc使用方法

Gdb调试技术

Autoconf

Automake

Makefile

代码优化 熟悉Linux系统下的开发环境

熟悉Gcc编译器

熟悉Makefile规则编写Hello,World程序

使用 make命令编译程序

编写带有一个循环的程序

调试一个有问题的程序

4、嵌入式系统开发基础

嵌入式系统概述

交叉编译

配置TFTP服务

配置NFS服务

下载Bootloader和内核

嵌入式Linux应用软件开发流程

熟悉嵌入式系统概念以及开发流程

建立嵌入式系统开发环境制作cross_gcc工具链

编译并下载U-boot

编译并下载Linux内核

编译并下载Linux应用程序

4、嵌入式系统移植

Linux内核代码

平台相关代码分析

ARM平台介绍

平台移植的关键技术

移植Linux内核到 ARM平台 了解移植的概念

能够移植Linux内核移植Linux2.6内核到 ARM9开发板

5、嵌入式 Linux 下串口通信

串行I/O的基本概念

嵌入式Linux应用软件开发流程

Linux系统的文件和设备

与文件相关的系统调用

配置超级终端和MiniCOM 能够熟悉进行串口通信熟悉文件I/O 编写串口通信程序

编写多串口通信程序

6、嵌入式系统中多进程程序设计

Linux系统进程概述

嵌入式系统的进程特点

进程操作

守护进程

相关的系统调用了解Linux系统中进程的概念

能够编写多进程程序编写多进程程序

编写一个守护进程程序

sleep系统调用任务管理、同步与通信 Linux任务概述 任务调度

管道

信号

共享内存

任务管理 API 了解Linux系统任务管理机制

熟悉进程间通信的几种方式

熟悉嵌入式Linux中的任务间同步与通信

编写一个简单的管道程序实现文件传输

编写一个使用共享内存的程序

7、嵌入式系统中多线程程序设计

线程的基础知识

多线程编程方法

线程应用中的同步问题了解线程的概念

能够编写简单的多线程程序编写一个多线程程序

8、嵌入式 Linux 网络编程

网络基础知识

嵌入式Linux中TCP/IP网络结构

socket 编程

常用 API函数

分析Ping命令的实现

基本UDP套接口编程

许可证管理

PPP协议

GPRS 了解嵌入式Linux网络体系结构

能够进行嵌入式Linux环境下的socket 编程

熟悉UDP协议、PPP协议

熟悉GPRS 使用socket 编写代理服务器

使用socket 编写路由器

编写许可证服务器

指出TCP和UDP的优缺点

编写一个web服务器

编写一个运行在 ARM平台的网络播放器

9、GUI 程序开发

GUI基础

嵌入式系统GUI类型

编译QT

进行QT开发熟悉嵌入式系统常用的GUI

能够进行QT编程使用QT编写“Hello,World”程序调试一个加入信号/槽的实例

通过重载QWidget 类方法处理事件

10、Linux 字符设备驱动程序

设备驱动程序基础知识

Linux系统的模块

字符设备驱动分析

fs_operation结构

加载驱动程序了解设备驱动程序的概念

了解Linux字符设备驱动程序结构

能够编写字符设备驱动程序编写Skull驱动

编写键盘驱动

编写I/O驱动

分析一个看门狗驱动程序

对比Linux2.6内核与2.4内核中字符设备驱动的不同 Linux 块设备驱动程序块设备驱动程序工作原理

典型的块设备驱动程序分析

块设备的读写请求队列了解Linux块设备驱动程序结构

能够编写简单的块设备驱动程序比较字符设备与块设备的异同编写MMC卡驱动程序

分析一个文件系统

对比Linux2.6内核与2.4内核中块设备驱动的不同

11、文件系统

虚拟文件系统

文件系统的建立

ramfs内存文件系统

proc文件系统

devfs 文件系统

MTD技术简介

MTD块设备初始化

MTD块设备的读写操作了解Linux系统的文件系统了解嵌入式Linux的文件系统

了解MTD技术

能够编写简单的文件系统为 ARM9开发板添加 MTD支持移植JFFS2文件系统

通过proc文件系统修改操作系统参数

分析romfs 文件系统源代码

ARM数据采集 篇6

1 ADS8341与STM32F103ZET6接口电路设计

1.1 ADS8341芯片

ADS8341是Texas Instruments公司设计生产的具有串行接口和两个字节数字量输出的高速逐渐逼近式A D转换芯片[3]。ADS8341具有SPI串行总线功能, 可实现4路独立模拟输入或两路差动模拟输入, 16位数字数据的输出。ADS8341选用5 V供电, 其具有86 d B的信噪比。当ADS8341选用5 V供电和采样频率为100 k Hz时, 其最低的功率损耗为8 m W, VREF (基准电压) 的选取范围为500 m V~5 V, 对应的模拟输入电压范围为0~VREF, 当ADS8341芯片工作在低功耗模式时, 其功率消耗很小[3]。供电电压以2.7 V分界, 高于2.7 V时, 正常使用, 反之, 低于2.7 V时, 正常工作。ADS8341采用SSOP-16封装, 其体积很小, 便于电路板布局和加工。其在-40~85℃时可正常工作, 超出这个温度范围芯片无法正常工作[4]。ADS8341芯片可在同一时间对4路模拟输入信号进行采样, 所以在需要采集多路模拟输入时使用ADS8341芯片, 因此本采集系统选用ADS8341芯片将模拟输入信号转换为数字输出信号[4]。

1.2 ADS8341与STM32F103ZET6接口电路设计

采用软件实现ADS8341与STM32F103ZET6接口控制连接[5]。本设计中ADS8341采用外部时钟供电模式, 最高频率为72 MHz, A/D转换输入引脚DIN接STM32F103ZET6的PA2, A/D转换输出引脚DOUT接STM32F103ZET6的PA4, A/D转换结束控制引脚BUSY接STM32F103ZET6的PA3, A/D转换片选引脚CS_1接STM32F103ZET6的PA1, A/D转换时钟引脚DCLK接STM32F103ZET6的PA0。当采用软件连接时, STM32F103ZET6使用芯片14 (DIN) 引脚把控制字命令逐位传送给ADS8341, 实现芯片的初始化。芯片的第2~第5引脚 (CH0~CH3) 为四路模拟输入通道, 6引脚为COM引脚, 当不使用COM引脚时, 即COM接-IN、选中的的CHX (X=0~3) 接+IN, 采用的是单通道输入模式, 当使用COM引脚时采用的是差分输入模式[3]。本文选择单通道模拟输入模式即选取CHX (X=0~3) 中的一个模拟输入通道[3]。其具体的接口电路如图1所示[5]。

为了保证A/D采样精度, 还需要注意:正确区别模拟、数字地。由于ADS8341芯片内部对模拟地和数字地有明确的区分, 所以必须正确地区分和使用它们[5]。PCB电路板设计布线时, 需将模拟地和数字地分开与在ADS8341芯片相接处, 在设计多层板时必须将电源层和地层分开。VREF的布线应尽量短, 防止其他信号对其产生严重影响[6]。

2 A/D采集控制

由硬件电路知, ADS8341芯片工作所需的CLK时钟信号不能自己产生而是由STM32F103ZET6向其提供所需的时钟信号[4]。在STM32F103ZET6的准确控制之下, 严格按照ADS8341芯片的采样时序图由PA0引脚提供ADS8341的工作时钟。为了更加高效地采集数据, 选用100 k Hz作为实际的采样率。当A/D转换开始时, 以片选信号 (15引脚) 的下降沿作为起始标志, 最初的8个时钟信号将8位的控制字通过DIN引脚传送给ADS8341芯片, 当ADS8341芯片接收完控制字的第八位后, 等待一个时钟周期, 然后A/D转换芯片通过硬件方式将BUSY引脚设置为高电平, BUSY引脚为高电平标志着转换已完成, 已经产生了16位的数据, 随后16位数据将在16个时钟信号下降沿的作用下逐位的从DOUT引脚输出, 此时只需要将输出的数据放到事先定义好的数组中便可以将其存储起来, 以便后续的输出或查看[4]。当MSB出现时BUSY引脚才被设置为低电平, 此过程用一个CLOCK周期完成, 16位数据逐位地输出需要16个CLOCK周期, 因此单次采样最少需要25个时钟周期, 本系统采用的单片机采用8 b传输数据, 因此需额外增加一个时钟信号用于LSB位, 为满足采样周期和快速采样要求, 决定选用24个时钟信号作为每次采样的时钟周期[4]。当控制字的首位出现在输入引脚上时, 上一次的LSB同时出现在DOUT引脚上。当BUSY引脚拉低后, 标志通道的转换已全部完成, STM32F103ZET6开始读取数据, 完成后将片选信号设置为高电平, 输出引脚和忙标志引脚进入高阻态, 等待直到再次的转换开始[4]。ADS8341的工作时序如图2所示。

如图3所示为采集流程图。程序设计时, 通过定时器0控制采集系统的采样率, 将采集程序与定时器程序相结合, 可以按编程者的需求方便的控制采集过程。程序开始运行时, 首先将对ADS8341芯片和单片机系统进行初始化, 初始化结束以后, A/D转换过程开始。转换完成标志 (BUSY引脚) 接PA3引脚, 在此对BUSY脉冲进行计数, 每完成一次采集, 计数变量累加1 (初值设为0) , 系统等待BUSY拉低判断转换是否完成 (即BUSY信号是否拉低) 。当完成时, 从DOUT引脚读取输出数据;当相反时, 表明转换过程非正常, 对系统复位, 重新采集数据。系统以1 000个数据为一次采集周期, 因此要判断是否达到1 000个数据, 当达到时进行相应的的后续处理。

3 结论

基于ADS8341芯片和STM32F103ZET6芯片的高速数据采集方案, 选用STM32F103ZET6芯片作为单片机, ADS8341芯片作为转换芯片, 具有高效的数据传输效率以及非常方便的软件编程环境。结果表明, 此设计方案可非常高效、实时以及准确地对土壤状态进行采集处理, 具有传输速度快, 过程稳定等优点。在日后实际推广应用时, 需要对实际情况进行评估并进行多次试验。

摘要:为了对冻土区土壤环境进行实时采集处理和检测, 在此选取ADS8341作为A/D转换芯片, STM32F103ZET6芯片作为微处理器, 设计并实现了将ADS8341芯片和STM32F103ZET6芯片相结合用于采集土壤环境数据的硬件电路和A/D采集软件控制过程。经过实际的检测与分析, 该设计可以对冻土区土壤进行实时高效的采集、处理以及对数据的保存, 以便后期数据的查询和土壤环境总体趋势的预测。

关键词:ADS8341,STM32F103ZET6,接口电路,采集控制

参考文献

[1]佚名.STM32开发指南V1.0库函数版本[EB/OL].[2013-02-18].http://wenku.baidu.com.

[2]佚名.Cortex-M3权威指南[EB/OL].[2011-09-18].http://wenku.baidu.com.

[3]刘明伟.16位模/数转换器ADS8341的应用[J].宝成科技, 2003 (1) :4-10.

[4]Anon.ADS8341E[EB/OL].[2013-08-07].http://www.dzsc.com/xi.

[5]刘品, 李松岩, 徐赫.基于ADS8364高速数据采集模块接口设计[J].现代电子技术, 2011, 34 (8) :138-140.

[6]王霞, 李淑民, 裴培, 等.基于ADS8364的数据采集系统设计[J].电子技术应用, 2009 (7) :95-97.

ARM数据采集 篇7

尽管目前微控制器加模数转换( AD) 芯片的采样方案在精度和速度上已经达到了较高的水平,但是直接采用内部集成AD的ARM芯片相对来说更简单,并且减少了器件之间的通讯,增强了系统的抗干扰性能。

虚拟仪器因其成本低、灵活性和功能强大的优点在信号处理领域已经得到了广泛的应用,USB总线的即插即用和高速率数据传输使得USB设备具有操作方便,效率高的优势,本文综合了虚拟仪器技术和USB总线技术实现了与传统示波器功能相媲美的数据采集系统[1,2]。

1系统整体设计

本文的总体结构框图如图1所示,主要包括信号调理部分、 数据采集部分和上位机用户软件部分[3]。

信号调理电路负责对输入的模拟电信号滤波,电压值调整; 数据采集部分负责将输入的模拟信号转为数字信号,并高速传输到上位机程序; 上位机用户软件部分负责对接收到的数据进行处理。该系统最终实现采集双通道0 V ~ ± 24 V,带宽为200 k Hz。上位机实现了波形显示,存储和回放,波形数据的检测与分析功能。

2系统硬件设计

2.1处理器选型

本文的核心控制部分是由微控制器独立完成,需要控制器具有丰富的外设资源,包括Flash和SRAM存储资源,支持USB 2. 0协议的高级USB通讯模块,精度和采样率高的ADC以及直接存储控制器( DMA) 。据此,系统选用了高性价比LM3S9B96为主控制器,其是由美国德州仪器( TI) 公司推出的32位微控制器,兼容了ARM的Thumb和Thumb - 2指令集[4]。

2.2信号调理电路

信号调理电路根据功能分为输入保护电路、抗混叠低通滤波电路、衰减电路、增益电路和电压抬升电路。

( 1) 输入电压幅值最高在24 V,为防止输入电压超出可测范围,在输入端采用两个24 V的稳压管支路进行电压钳位保护,并且分别在两个支路串联不同颜色的发光二极管以显示正反向超压。

( 2) 为了消除高频噪声信号和被测信号中的高频成分对信号采集的混叠效应,设计了二阶低通抗混叠滤波电路。为保证较好的抗混叠效果和测量带宽,设定滤波器的截止频率为300 k Hz。 滤波电路形式固定如图2所示,其频域传递函数为:

其中R、C分别为滤波器输入端的电阻和电容。用jω 代替s,且令得传递函数为:

式中f0称为特征频率,j为虚数单位。

由式可得滤波器的截止频率fp≈0. 64f0, fp = 300 k Hz ,得RC = 3. 4 × 10- 7s。 通过multisim仿真比较确定参数值 。 抗混叠低通滤波电路如图2所示 。

( 3 ) LM3S9B96的ADC的输入电压范围是0 V ~ 3 V,要实现采集0 V ~ ± 24 V的输入信号需要对信号进行衰减处理,衰减网络采用兆欧级精密电阻组成,其中固定电阻设定为1 MΩ。这里选择8,4,2,1四级衰减,后期处理的数据可以通过移位操作进行数据还原。电路实现选用OMRON公司G5V - 1小信号继电器作为开关控制,根据上位机传输的命令来选择合适的电阻支路。具体的数值对应关系如表1所示。

( 4) 为满足采集小信号的需求,采用TI公司的增益可编程仪表放大器PGA205。PGA205具有四级数控增益,数控端直接连接到微控制器的I/O引脚[5]。输入幅值、放大倍数和数控端的对应关系同上述衰减电路类似,这里不列表赘述。增益电路如图3所示,PC4、PC5为数控端。

( 5) 信号经过衰减和放大电路的调理后电压范围为0 V ~ ± 3 V电压信号将信号调理至0 V ~ 6 V范围,再经过比例运算电路做1 /2分压处理。运放选择TL052,是由TI公司生产的低失调加强型的JFET运算放大器, 相对于TL07和TL08系列具有更快的转换速度。

2.3电源供电系统

本文中需要三级电 源供电: 3. 3 V,5 V,± 10 V。5 V电压通过SPX1117 - 3. 3 V稳压芯片转变为3. 3 V为系统供电,± 10 V要是给可编程放大器PGA205和运放TL052供电,该电压需要5 V电压经过Boost升压电路得到,设计选用TPS61040开关电源芯片,其为低功耗的DC/DC Boost转换芯片,内部集成开关管,开关频率可达1 MHz,输出电压纹波低[6]。双电源供电电路如图4所示。

3系统软件设计

本文软件设计任务主要是LM3S9B96芯片的初始化和内部各模块之间的逻辑控制,包括根据上位机的指令来设定调理电路。数据采集系统总的软件任务框图如图5所示。信号调理任务负责根据上位机发出的指令完成调理电路的设定; 采样任务实现对模拟信号的采集; 数据转移存储任务负责将数据从ADC转移到内存,再转移到USB缓存。数据转移任务利用DMA来实现,DMA的工作模式分为基本模式、乒乓模式和外设散聚模式, 为了ADC采集不丢失数据,本文采用了乒乓模式,在程序设计时创建主数据结构体和副数据结构体交替接收数据,高效的完成数据转移任务; 数据传输任务负责将数据从微控制器通过USB总线传输到上位机。USB总线标准是在1994年由英特尔、康柏、 IBM、Microsoft等多家公司联合提出,包含了四 种基本数据传输类型: 控制传输、批量传输、中断传输和等时传输,本文需要向上位机传输大量数据,选择批量传输 模式 ( BULK ) 传输数据[7]。基于LM3S系列芯片,TI公司提供了多层次十分 丰富灵活 的USB驱动库,简化软件的实现。

4上位机软件设计

NIVISA( Virtual Instrument Software Architecture) 是NI公司开发的一种用来与各种仪器总线进行通信的高级应用编程接口, VISA总线I / O软件是一个综合软件包,不受平台、总线和环境的限制。VISA是NI公司随Lab VIEW配套提供的,从3. 0版本开始支持USB通讯,根据是否符合USB测试和测量协议,VISA分为两种VISA类函数,可以控制两类USB设备: USB INSTR设备和USB RAW设备。这里使用USB RAW设备。利用VISA驱动程序开发向导产生INF文件用来通知Window系统将NI - VISA用作USB设备的默 认驱动,完成之后 才可以正 常和下位 机通讯[8,9,10]。

USB RAW类设备的读写时序为( 1) Vi Open打开VISA设备; ( 2) Vi Property设定VISA设备的属性节点参数( 指令端点和传输方式) ; ( 3) ViRead读写USB RAW( 发送命令和设定字数) ; ( 4) Vi Close关闭VISA( 释放VISA设备所占资源) 。上位机程序总体分为指令接受程序,数据接受程序、数据处理程序和波形显示程序。数据处理程序框图如图6所示。

5系统测试与结果

为了测试系统的可靠性,本文使用数字合成信号发生器DF1405模拟传感器输出信号作为数据采集系统的测试信号。经测试,设计系统完整实现了设计要求。5 V 10 k Hz正弦波测试结果如图7所示,通过点击Save控件可以完成数据的存储。

6结束语

ARM数据采集 篇8

液压系统具有功率大、响应快及精度高等特点,已经广泛应用于冶金和制造领域。但其故障又具有隐蔽性、多样性、不确定性及因果关系复杂等特点,故障出现后不易查找原因,而且故障发生会带来巨大的经济损失[1]。通常,液压系统只能靠定期检查和维护来排除故障,这种方法有一定的滞后性。因此需要实时监测液压系统的状态数据并及时分析以减少故障率,确保工程机械正常、连续运行。传统单片机已广泛应用于数据采集和处理中,虽然其价格便宜、易于开发,但是在存储空间和网络传输方面往往难以满足工程上的要求。因此,笔者针对液压系统采用了基于ARM的数据智能采集终端。

采集终端通过分布在液压系统各处的传感器对油压、流量和温度3类信号进行采集[2],并将采集到的信号进行滤波、放大,然后模数转换,数据经过分析后进行统一的编排与压缩,最后通过通信模块进行传输,将数据传输到本地监控中心做进一步故障诊断。

1 硬件总体结构

智能数据采集终端系统采用三星的ARMS3C2440为主控芯片、GTM900-C GPRS为通信模块。整个硬件系统分为3部分:主控模块、数据采集模块和通信模块,具体结构如图1所示。终端的主控模块包括控制芯片电路、存储电路、电源电路以及串口和JTAG接口电路;数据采集模块包括传感器电路、信号调理电路以及8路A/D转换电路;通信模块包括GPRS芯片以及外围电路。其中ARM与GPRS之间的通信是通过RS-232总线完成。

2 主控模块设计

2.1 ARM芯片介绍与工作状态设置

终端系统主要采用以ARM920T为核心的三星S3C2440芯片。该芯片虽然功耗低、体积小,但是集成了丰富的片上资源。其特点主要有增强型ARM架构MMU,支持WinCE、EPOC32和LINUX;内部先进微控器总线架构;哈佛高速缓冲体系结构;10位8通道多路复用ADC,可以实现最大转换率为2.5MHz A/D转换器时钟下的500kS/s等。主控模块的供电分为3.3V系统外围电路供电和1.25V核心板供电。3.3V系统外围电路供电通过 AMS1117-3.3V稳压模块完成转换,电路如图2所示;1.25V核心板供电则采用低压差、低噪声的MAX8860EUA稳压芯片提供,电路如图3所示。S3C2440使用12MHz有源晶振,通过片内PLL电路倍频后,最高可达到400MHz。片内的PLL电路兼有频率放大和信号提纯功能,因此,系统可以以较低的外部时钟信号获得较高的工作频率,避免了高频噪声的产生。复位电路采用MAX811S芯片,当系统电源低于系统复位阈值(2.93V),芯片将会对系统进行复位。

2.2 串行接口电路

RS-232C标准常用的接口是9芯D型,然而最基本的通信只需要RXD、TXD即可,但是由于RS-232C标准所定义的高低电平信号与S3C2440系统的定义不同,所以两者之间的通信需要电平转换,在单片机中常用的是5V的MAX232,而这里使用3.3V的MAX3232,典型的应用电路如图4所示。

2.3 NOR FLASH接口电路

终端系统中NOR FLASH使用的存储芯片是HY29LV160,存储容量为2MB,工作电压为2.7~3.6V,工作方式选用16位数据宽度模式。需要注意的是管脚NC接高电平时,即为16位数据位,当NC为低电平时即为8位数据位。选择16位数据宽度时,即为半字模式,此时16位数据总线D0~15分别接S3C2440的数据总线DATA0~15,地址总线则是A0~19分别与S3C2440的ADDR0~19连接,半字模式下的寻址范围为1MB,对于32位的S3C2440寻址范围则为1×2=2MB。

2.4 SDRAM接口电路

SDRAM选用的是K4S561632,其存储容量为32MB,工作电压为3.3V,其数据宽度为16位。根据系统要求,需要有相对较复杂的算法运行,所以选用两片组成存储系统,存储空间为64MB。具体连接方法是第一片的D0~15接DATA0~15,第二片的D0~15接DATA16~31,这样将16位扩展成为了与S3C2440对应的32位数据总线。对于地址线来说,SDRAM采用的是存储阵列,即每片分为4个逻辑Bank,每个Bank由13个行地址线和9个列地址线共同寻址,能访问的空间为4×213×29×2=225MB。地址线的接法是分别将两片的A0~12与ADDR2~14相连,通过RAS和CAS选择行列信号,通过BA0、BA1选择Bank,最终通过CS通用片选实现64MB的寻址。

3 数据采集模块设计

液压系统的组成主要包括液压泵、液压油缸或液压马达、各类控制阀和辅助装置。根据故障类型的归纳和总结,监控对象和监控点包括液压泵的油压和流量,油温,以及各类控制阀处的油压和流量[3]。选择监测的参数主要包括:

a. 油压测量。考虑到传感器的精度,工作电压与系统电压的匹配,供电电流以及能适用较恶劣的介质环境等,选用MSP340系列不锈钢传感器,其电气性能为:供电电源为5VDC;供电电流小于10mA;输出信号为0.5~4.5VDC/4~20mA;量程偏差为±2%FS;精度小于1%FS。

b. 流量测量。选择涡轮流量计,电气性能为:供电电源为12~36VDC,可采用车载蓄电池直接供电;输出信号为4~20mA;精度为±1%R。

c. 温度测量。选择温度传感器AD592,由于液压油温只作为辅助检测量,不需要精度太高,所以直接用隔热材料将AD592固定于测温点做适当的温度补偿,从而测量管内的油温。

模数转换采用的是S3C2440的10位8通道ADC,其转换率为2.5MHz转换器时钟下的500kS/s,基准电压采用3.3V,前端传感器调理电路需要相应的调整电压范围,管脚对应S3C2440上的AIN0~7。

4 通信模块设计

通信模块选用华为的GPRS模块 GTM900-C,该模块具有标准的AT命令接口,内部集成了TCP/IP协议栈,使用时不必编写相关的IP协议程序,直接可以通过其内嵌协议进行GPRS上网传递数据。

GPRS模块与ARM之间的连接是通过RS232串行接口连接的,电路如图5所示。其中芯片供电采用3.8V,由稳压器AMS1117-adj转换。RST为芯片复位、PWON为开关机控制信号,均为低电平有效; UART_RXD0和UART_TXD0分别为AT命令串口发送、接收信号,实现数据的传输只需分别与串口的接收和发送端相连即可。

5 结束语

笔者以三星公司的S3C2440开发板为平台,研究设计了一种基于ARM的液压系统智能数据采集终端的硬件电路,该终端已达到设计要求。而且整个终端成本低廉、功能齐全,有较好的应用价值。此外,本设计稍作改动也可应用于其他需要数据采集和传输的环境,有一定的通用性。

参考文献

[1]陈家焱,陈章位.液压系统故障诊断技术的现状与发展趋势[J].机床与液压,2008,36(10):187~189.

[2]梁玉红.基于Bluetooth技术的液压在线故障监测诊断系统[J].仪表技术与传感器,2008,(2):37~39.

ARM数据采集 篇9

虚拟仪器(Virtual Instrument)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向[1]。这种结合有两种方式:一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器;另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式[2]。

使用网络化虚拟仪器技术,可以不受地点、时间的约束,获取准确的测量信息或数据,与传统的仪器、测量、测试相比,带来了诸多便利[3]。在网络化虚拟仪器中,被测对象可通过测试现场的普通仪器设备,将测得的数据通过网络传输给异地的精密测量设备或高档次的微机化仪器去分析、处理,能实现测量信息的共享,可掌握网络节点处信息实时变化的趋势;此外,也可通过具有网络传输功能的仪器将数据传至原端即现场。采用自动抄表系统,可提高抄表的准确性,能减少因估计或誊写而可能出现的帐单错误(供用电、水、燃气、热能等)。管理部门因此能及时获得准确的数据信息,用户也不再需要与抄表员预约上门抄表时间,迅速查询帐单。使用网络化虚拟仪器,采用网络测量技术,可以大幅度提高测量效率,降低监测成本以及减少计量测试工作的周期[4]。

1 硬件设计

本文的目的是充分发挥分布式虚拟仪器的概念,将嵌入式系统,网络,虚拟仪器联系起来,将信号的采集、处理、存储分布于不同的网络位置。结合嵌入式系统的灵活性,避免其计算能力不强的缺点,将信号处理工作交给上位机负责。系统结构如图1所示。

下位机的虚拟仪器负责信号的采集,通过以太网将数据传输到上位机,利用上位机强大的计算能力和海量存储空间完成对原始数据的后期处理。

1.1 以太网设备

本系统采用的网络RTL8019AS是一种高度集成的以太网控制芯片,能简单地实现Plug and Play并兼容NE2000。

RTL8019AS芯片内部集成了DMA控制器,ISA总线控制器和集成16KSRAM、网络PHY收发器。用户可以通过DMA方式把需要发送的数据写入片内SRAM中,让芯片自动将数据发送出去,而芯片在接收到数据后,用户也可以通过DMA方式将其读出。RTL8019AS的详细介绍请见RTL8019AS数据手册。了解了RTL8019AS所提供的资源与硬件接口,便可以设计RTL8019AS与S3C44B0X的硬件电路。

在网络通信模块电路中,RTL8019AS与处理器S3C44B0X之间的信号连接关系如图2所示。

1.2 电源、时钟及复位电路

在本系统中,采用的是5 V和3.4 V的直流稳压电源,其中,S3C44B0X核心使用2.5 V电源,外围器件需3.4 V电源,另外部分器件需5 V电源,5 V电路加了工作指示灯,并且加了二极管对电路加以保护。晶振电路用于向CPU及其他电路提供工作时钟。在该系统中,S3C44BOX使用常用的无源晶振,电路如图3所示。

根据S3C44B0X的最高工作频率以及PLL电路的工作方式,系统选择了10 MHz的有源晶振,10 MHz的晶振频率经过S3C44B0X片内的PLL电路倍频后,最高可以达66 MHz。片内的PLL电路兼有频率放大和信号提纯的功能,因此,系统可以以较低的外部时钟信号获得较高的工作频率,以降低因高速开关时钟所造成的高频噪声。

同时在系统中还有频率为32.768 kHz的实时时钟晶振源,在USB接口芯片处也有一个48 MHz的晶振。在系统中,复位电路主要完成系统的上电复位和系统在运行时用户的按键复位功能。复位电路可由IMP811芯片完成,复位电路如图4所示。

该复位电路的工作原理如下:IMP811是一个可靠性很高的复位芯片,当用户按下按钮S1时或者RST_IN送过来一个低电平时,Reset端输出为低电平,系统进入复位状态,松开S1时,系统即可进入正常工作状态。

2 实时操作系统

实时操作系统,简称RTOS,具体指系统能及时响应来自外部事件的请求,在确定的时间处理该事件,统一控制实时任务一致运行。RTOS的开发工具允许用户针对不同的应用对象对RTOS的内核进行裁剪、压缩,以适应各类应用,并提供应用程序的调试环境。

2.1 μC/OS-Ⅱ的系统结构

μC/OS-Ⅱ嵌入式实时操作系统是Jean J.Labrosse开发的一个完整的、可移植、固化、裁剪的占先式实时多任务内核,目前已经在超过40种不同架构的微处理器上运行,图5是本系统的软硬件体系结构。

初始化程序是针对S3C44B0X使用汇编语言编写的。在将控制权交给操作系统前,初始化最基本的硬件设备。主要工作是配置SDRAM并将操作系统代码从FLASH拷贝到SDRAM中。

2.2 小键盘驱动编写

系统采用智能显示驱动芯片HD7279连接一个4×4键盘和S3C44B0X通信。HD7279A是一片具有串行可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能。HD7279A内部含有译码器,可直接接收BCD码或16进制码,并同时具有2种译码方式。此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。HD7279A具有片选信号可方便地实现多于8位的显示或多于64键的键盘接口。

3 硬件设计

3.1 模块总体设计

整个系统的信号流程如图6所示,信号通过ADC后以DMA方式进入两个8 MB的SDRAM,二者构成一对乒乓存储系统,一侧负责采集信号的缓存,同时另一侧负责向上位机发送,二者交替工作,保证信号流采集和发送的连续。对于网络通信模块,由于μC/OS-Ⅱ只是一个实时的任务调度及通信内核,缺少对网络协议的支持,所以需要将LwIP(Light Weight IP protocol)移植到μC/OS-Ⅱ上,使其支持网络功能。本章后面部分将重点介绍NE2000兼容网卡RTL8019AS驱动程序在嵌入式系统中的编写。

3.2 信号调理模块

S3C44B0X内部具有一个逐次逼近型8路模拟信号输入的10位ADC,但是不具有保持采样保持(S/H)电路,不能用于快速变化的信号采集,因此需要在前级信号调理电路中加入采样保持功能。

在此系统中,采用了Microchip Technology公司的模拟增益可编程运放(PGA)MCP6S28芯片,传感器采集的信号接入MCP6S28的通道输入端,输出VOUT接入处理器内部的A/D转换器的信号输入端AIN管脚。MCP6S28的增益可设置为1~32 V/V,它具有多路选择输入(MUX)模块,共有8路输入。MCP6S28具有SPI接口,故将其与S3C44B0X对应的SPI管脚连接即可,用于选择增益水平和输入通道。对MCP6S28进行操作的控制字节和数据字节均从SI引脚输入,并在写入数据的串行时钟(SCK)上升沿被锁存。

3.3 A/D采样器程序设计

A/D转换由S3C44B0X内部模/数转换器(ADC)完成,它是一个10位、逐次逼近型的ADC,有8路模拟信号输入,其内部结构中包括模拟输入多路复用器,自动调零比较器,时钟产生器,10位逐次逼近寄存器(SAR),输出寄存器。这个ADC还提供可编程选择的睡眠模式,以节省功耗。S3C44B0X内部有3个与A/D转换有关的寄存器:控制寄存器ADCCON、预分频寄存器AD-CPSR、数据寄存器ADCDAT。

ADCPSR中存储预置比例因子,取值范围是0~255,完成一次A/D转换至少需要16个A/D时钟周期,有:

A/D转换总时钟数=2×(预置比例因子+1)×16

A/D的最高采样速率是100 KS/s,即每个采样周期为10μs。ARM7运行在66 MHz主频下,每个周期为15.152 ns。这样每个采样周期包括660个主频周期。ARM7具有0.97 MIPS/MHz的指令效率,660个主频周期可以运行约640条指令。在计数器触发A/D采样的情况下,处理器的工作是每采样周期从A/D读取一次数据并保存到RAM中,代码如下:

LDR R0,[R1]:寄存器R1中保存了A/D数据寄存器的地址,需要3周期。

STR R0,[R2,#4]:寄存器R2中保存了RAM中数据存储空间的起始地址;需要2周期。

这个操作需要5个主频周期。利用剩余的转换时间,ARM7可以完成数据的打包发送,以及其他的任务。在进行A/D转换时,ARM要禁止一切可屏蔽中断。

4 LabVIEW上位机模块设计

上位机的功能有两方面:一是负责数据的实时显示,参数测量和存储;二是对下位机的远程控制。监测人员能够直观地获得测试结果,很方便地对远程数据采集系统进行控制。

本系统的上位机系统利用虚拟仪器技术和LabVIEW图形化软件开发集成环境,设计了该数据采集系统的数据分析、存储和远程控制模块。测试结果表明,该数据分析处理模块的功能比较完善,操作十分方便,完全满足实际应用的需要。

4.1 网络数据通信接口程序设计

上位机和下位机通信的传输内容可以分为测控命令和数据两种。其中下位机向PC机发送的数据,数据量大、对传输速度要求较高、对可靠性的要求不很严格。

UDP是面向非连接的方式,提供的是不可靠的数据传输,但实现起来比较简单,速度快、实时性好,并且支持广播和组播,同时在单一、封闭局域网中可靠性也很高。因此用一般的UDP通信就可以达到很好的可靠性以满足数据传输的要求。

一个简单的UDP数据接收、显示程序如图7所示。程序分为UDP打开,UDP读取和UDP关闭三个环节。首先指定本地端口号,本文为61557,这个端口必须与下位机设置的目标远程端口一致。在运行此程序前,必须先运行下位机程序。UDP Read节点设置UDP数据报最大字节数,最大值为548,此处设置为100,若超过本值,Windows将提示出错信息。

4.2 控制程序设计

程序界面如图8所示,观测人员可以通过示波器的波形显示及时调整远端采集设备的相应参数。这样可以充分利用A/D转换器的最大输入量程(2.5 V),尽可能提高测量精度。另一个可以控制的参数是采样速率,当被测信号的频率较低时可以使用低速率采样,在保证失真度的情况下降低数据流,避免因网络拥挤产生数据丢失。设备重启控制用于使下位机的系统软件及硬件寄存器完全恢复到初始状态。

控制信号的数据量较小,对传输的可靠性要求严格,故采用TCP协议。对于LabVIEW程序的设计采用事件驱动模式,当增益水平和采样速率的List控件值改变时,驱动主程序向下位机发送控制信号。向下位机发送的是增益水平或者采样速率的数值。因为网络以及系统的延时,效果通常要经过一段时间才能反映出来。

4.3 下位机响应程序编写

下位机的TCP/IP协议栈是通过LwIP实现的,LwIP提供一系列函数实现IP,TCP,UDP等的操作。其中tcp_input(),tcp_process(),tcp_receive()与TCP输入处理有关。函数netconn listen()让系统进入TCP监听状态。当TCP连接建立后,tcp_receive()把接收到的数据tcp_data传给上级应用程序。再判断tcp_data数值的大小,分为以下三种情况:

若为0X11111111,使程序跳转到系统初始位置,重新设置各种设备。

若为1~32,调用SPI控制程序,给数据寄存器SPDR赋值,再通过MOSI发送给MCP6S28的增益寄存器。

若tcp_data≤1 000,则为采样速率控制量,需修改A/D转换预置比例因子寄存器ADCPSR,修改的值根据芯片手册推导。

4.4 数据文件储存程序设计

由于二进制文件存储速度快,冗余数据少,格式也最为紧凑,因此在进行大量数据采集时,往往采用这种文件格式。图9中是用底层函数实现的二进制文件的输入VI,可以实时存储通过UDP接收的数据,首先用Open/Creat/Replace File VI新建一个文件,然后在WhileLoop中用Write File函数将网络通信数据写入文件,最后用Close File函数关闭文件。

5 结论

本文基于分布式虚拟仪器概念,设计了网络化数据采集和测试系统,基于ARM的下位机和基于LabVIEW的上位机通过网络协同工作,实现了数据的实时采集、处理和存储。首先针对基于ARM微处理器S3C44B0X的嵌入式采集系统进行整体开发,将嵌入式操作系统μC/OS-II移植到本系统中,开发了网卡,数据采集模块的底层驱动程序。同时,移植μC/GUI图形用户接口,编写了键盘驱动,使嵌入式系统具有更友好的人机界面,本系统将虚拟仪器技术和数据库相结合,引入LabVIEW SQL及相关模型,为有效地组织和管理数据以及构架网络数据库,打下了良好的基础。

摘要:网络化虚拟仪器是继虚拟仪器之后仪器仪表领域出现的新的发展方向,提出了将嵌入式系统、网络与虚拟仪器结合的技术路线,将信号的采集、处理、存储分布于不同的网络位置的实施方案。利用ARM嵌入式在现场采集数据,通过网络通信将信号处理和存储工作交给上位机负责,采用S3C44B0X为核心的开发环境,然后进行软件系统的搭建,包括移植μC/OS-Ⅱ嵌入式操作系统,嵌入式图形界面系统μC/GUI,ADC及网卡的驱动程序编写以及移植Lw IP实现TCP/IP协议等。测试结果表明,该系统的功能完善、操作十分方便,完全满足实际应用的需要,可以有效地组织和管理数据以及构架网络数据库。

关键词:虚拟仪器,ARM,LabVIEW,S3C44B0X,μC/OS-Ⅱ,LwIP

参考文献

[1]吴文忠,李万磊.基于ARM和Zigbee的智能家居系统[J].计算机工程与设计,2011,32(6):1987-1990.

[2]费莉,王博,刘述喜.基于Lab VIEW的数据采集及测试系统设计[J].重庆理工大学学报(自然科学版),2012(10):38-41.

[3]全晓莉,周南权,余永辉.基于虚拟仪器技术的网络实验系统的研究[J].计算机工程与设计,2011,32(9):3227-3230.

[4]王晓亮,谢朝辉.基于Lab VIEW和FPGA的存储器测试系统设计[J].计算机测量与控制,2012,20(7):1763-1765.

[5]陈松林,黄建萍.基于Lab VIEW的网络化数据采集及处理系统[J].现代电子技术,2010,33(2):182-184.

ARM数据采集 篇10

嵌入式系统作为计算机应用的一个崭新领域, 凭借其高稳定性, 高效率等优点越来越多的应用到各个领域, 而以嵌入式为平台的数据采集系统可实现高采样频率, 高数据传输速率, 并可实现对数据实施高速缓存。本论文主要设计了一种基于ARM9数据采集系统的实现方案, 并将它与其他类型的数据采集系统进行比较。

本文从嵌入式软件系统在数据采集和处理领域的发展, 并对ARM9的微处理器进行处理和介绍, 结合实际项目要求, 通过分析项目需求提出了新的解决方案, 并通过详细设计的方法实现了整个系统的过程。

2 ARM微处理器的特点及应用领域

ARM微处理器采用RISC结构, 除具有嵌入式系统共有的体积小、功耗低、性价比高等特点外, 还具有如下性能:支持Thumb (16位) /ARM (32位) 双指令集, 能很好地兼容8位/16位器件;大量使用寄存器, 大多数数据操作都在寄存器中完成;寻址方式灵活简单, 指令长度固定, 执行速度快、效率高。

3 数据采集系统关键技术分析

对于数据采集系统关键技术的探析笔者从系统时钟电路设计、模拟信号调理电路设计以及对系统的抗干扰设计三方面进行分析。首先对于系统时钟电路的设计。因为采样系统的性能是直接由时钟信号的稳定性来决定的。而对时钟稳定性起着关键性作用的指标就是相位抖动和相位噪声。而这两个指标的设计会直接决定了时钟的稳定性。相位抖动它直接影响到时钟的过零点;而相位噪声而只描述频谱纯度。我们通常所讲的AD采样系统主要采用的是锁相环、晶振以及模拟混频器三种时钟源。运行过程中如果锁相环失去基准频率, 输出频率就会回归原始。除此之外, 在进行频率调整的时候一定要注意防止输出频率的抖动, 因为它的抖动直接会影响到频差, 这样一来就非常不利于AD采样系统。而最后一种模拟混频器它的速度在运行过程中太慢, 所以只适合低频条件工作。综上所述对于高速电路的设计最终选择方案是以高频晶振作为时钟源。

在高速AD采样系统中, 取样时钟的稳定性与信噪比的性能密切相关。任何时钟信号噪声及时钟信号相位抖动都会影响采样系统的精度, 时钟信号相位抖动对模数转换信噪比 (SNR) 的影响, 可通过公式计算

其中:f为采样时钟频率, N为模数转换器位数, clk为时钟信号相位抖动量。

第二是对于模拟信号调理电路的设计。被采样的信号先要经过模拟信号的调理以及滤波等预先处理以后最后才能进入到输入通道。因为高速数据采集系统的输入信号不同其它系统的输入信号, 所以还需要进行匹配和前置。对此, 可以利用信号变压器和信号前置放大器来有效的解决这个突出的问题。之所以利用信号变压器和信号前置放大器的主要原因是, 其一信号变压器和信号放大器相比较, 它的性能指标要远远高于信号放大器, 另外它的失真效果不明显。尽管如此, 信号变压器还存在着一些局限性, 因为它的放大系数是固定的所以输入信号的幅度也会受到相应的限制;其二信号前置放大器。信号前置放大器的优势主要表现在, 它和信号变压器恰恰相反, 它的信号放大系数不是固定的, 另外它的信号输入范围大, 所以可以将它配置成有源滤波器。它尽管有着这样的优势, 但是它也同样有局限性, 它的最高工作频率和工作带宽如果满足不了系统的要求, 那么信号就会失真。

最后对系统抗干扰的设计。对于高速数据采集系统和中低速数据采集系统的两者对比结果显示出它们在抗干扰方面的性能是不相同的。相对而言, 高速数据采集系统的抗干扰问题大于中低速系统, 最严重的情况就是系统瘫痪不能够正常的进行工作。所以对于高速采集系统设计的重要考虑是看它对系统的抗干扰能力。所以无论是前期还是后期的工作都要可能地减少干扰尽可能地消除干扰。为了对系统抗干扰设计有更加深入的了解, 笔者从电源设计和接地技术两个方面对它进行了探讨。其一对于接地技术, 要严格将系统的模拟地和数字地进行区分, 最后单点共地。另外模拟地和数字地还可以通过磁珠进行连接起来, 通过磁珠将噪声进行过滤掉;其二对于电源设计。在对电源设计的过程中更多应该考虑的降低噪声产生的电源干扰, 所以可以进行电源层设计。这样的设计方法目的是为了增加电源的面积。

4 小结

对于高速数据采集系统的实现一直是测控领域的研究热点工作。笔者结合实际工作经验对ARM9的高速数据采集系统进行相关的探析, 并对涉及的三种主要相关技术进行了具体的阐述。实施方案的最终结果显示这种设计方案是合理并且高效的。

参考文献

[1]周立功等.ARM嵌入式系统教程[M].北京:北京航空航天大学出版社, 2006.

[2]杨宗德.嵌入式ARM系统原理与实例开发[M].北京:北京大学出版社, 2007.

[3]郑亚民, 董晓舟, FPGA器件开发软件QuartusII[M].北京:国防工业出版社, 2006.

[4]邵贝贝译.嵌入式实时操作系统c/os-II[M].北京:北京航空航天大学出版社, 2003.

上一篇:风险策略下一篇:脑出血合并消化道出血