ARM期末论文基于ARM的5通道数据采集系统.docx
- 文档编号:27942186
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:19
- 大小:141.92KB
ARM期末论文基于ARM的5通道数据采集系统.docx
《ARM期末论文基于ARM的5通道数据采集系统.docx》由会员分享,可在线阅读,更多相关《ARM期末论文基于ARM的5通道数据采集系统.docx(19页珍藏版)》请在冰豆网上搜索。
ARM期末论文基于ARM的5通道数据采集系统
嵌
入
式
期
末
论
文
姓名:
xxxxxx
班级:
xxxxxx
学号:
xxxxxxxxxxxx
基于ARM设计的5通道数据采集电路
摘要:
当今信息时代,嵌入式系统的应用无处不在,嵌入式系统是计算机技术、半导体技术和电子技术的综合体,已经广泛应用于科学研究、工程设计、国防军事、自动化控制等各个领域。
随着网络通讯技术的迅猛发展,生产和生活中广泛要求嵌入式系统终端能够完成网络通讯功能。
而ARM嵌入式系统应用市场份额约占75%。
关键词:
嵌入式、ARM、微处理器
一、嵌入式系统:
嵌入式系统的英文叫做Embedded System,是一种包括硬件和软件的完整的计算机系统,但又跟通用计算机系统不同。
嵌入式系统的定义是:
“嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可剪裁,适用于应用系统对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。
”
目前,嵌入式系统的应用越来越广泛,我们日常生活中就存在大量的嵌入式系统的产品:
比如手机、MP3、收音机、电视机等等,我们已经离不开嵌入式产品了。
嵌入式产品是面向应用的,应用的需求推动了嵌入式技术的发展。
嵌入式系统的基本技术仍然是计算机技术,包含软件、硬件、操作系统等。
嵌入式系统是可裁剪的,根据应用的具体场合和需求,选择相应的模块,把系统中不需要的部分去掉,这样做的主要目的是节约资源,降低功耗。
每一个嵌入式产品是不同的,使用不同的硬件和软件,搭建自己的嵌入式操作系统,但是核心技术都是一样的。
嵌入式系统主要有以下几个特点:
(1)以需求为目标
(2)运行高效,节约资源
(3)较小的体积和可靠性:
嵌入式系统的架构
(1) 硬件环境:
是整个嵌入式操作系统和应用程序运行的硬件平台,硬件
平台包括嵌入式处理器和外围设备。
(2)嵌入式操作系统:
完成嵌入式应用的任务调度和控制等核心功能。
(3)嵌入式应用程序:
运行于操作系统之上,利用操作系统提供的机制完成特定功能的嵌入式应用。
嵌入式的应用领域
1)工业控制领域:
作为32位的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。
(2)无线通讯领域:
目前已有超过85%的无线通讯设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。
(3)网络应用:
随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。
此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战
(4)消费类电子产品:
ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛应用。
(5)成像和安全产品:
现在流行的数码相机和打印机中绝大部分采用ARM技术。
手机中的32位SIM智能卡也采用了ARM技术。
除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用。
本设计是基于ARM的5路数据采集设计过程如下:
1,1数据采集系统基本构成
通用的数据采集系统有硬件和软件两部分组成。
硬件部分主要完成数据采集,存储等功能,软件部分则完成对硬件控制、对采集数据进行处理等功能。
与传统的中、低速数据采集系统相比,高速高精度数据采集系统有其特殊性。
首先,对于采样率高到一定程度的系统,很难用软件和常规的微机接口对其采样、转换过程进行控制。
在这种情况下,通常用硬件实现转换过程的控制和采样数据的同步;其次,如果系统的实时性要求高,必须采用高速缓存对数据进行存储和高速DS芯片完成数字信号的实时处理。
高速高精度数据采集系统的主要任务是将外界模拟信号进行采集转换,然后送往计算机根据相关要求进行数据处理,其系统的结构框图如图所示。
传感器信号1
传感器信号2
传感器信号3
传感器信号4
传感器信号5
放大器
系统结构框图
其中数据采集系统前置电路一般包括传感器、放大器和滤波器等,传感器把外界信号转变成模拟电量(如热电偶传感器、流量传感器、速度传感器等等),其转换后的信号一般比较微弱,需要进行放大处理。
可以采用二极管处理。
数据采集系统中常常需要对多组模拟量进行采集,在模拟量信号变化周期不快的情况下就可以选用模拟多路开关,这样模数转换电路就可以只选取一套从而降低系统的开发成本。
其中模数转换器是数据采集系统中的核心部分,其性能决定了数据采集系统所能实现的功能。
1,2数据采样原理
在数据采集系统中,信息总是用离散信号来表示的,而我们需要采集的信息多是连续模拟信号,这样就必须解决连续信号如何离散化的问题。
我们通过对连续的模拟信号进行采样获得离散化信息。
因此理解和掌握采样定理对数据采集系统有着重要的意义。
数据采集就是指将时间和幅值上连续的模拟信号以周期性时间间隔截取,从而得到一串在时间上离散的信号,然后通过模数转换将其变换为数字信号的过程。
将连续的模拟信号转换成计算机可接受的离散数字信号首先需要采样得到离散模拟信号,然后通过AD转换变为数字信号。
采样过程包括采样、量化和编码。
采样时的采样周期决定了得到采样信号的质量,经过采样后的离散采样信号是否能代表模拟信号的全部信息,奈奎斯特采样定理就是解决这一重要问题的理论,可以说是整个数据采集技术的基石。
采样脉冲信号在时间T间隔内对原模拟信号进行一次采样,奈奎斯特定理指出要使采样信号能不失真还原为原信号,就必须要求采样频率至少大于两倍的原信号最高频率。
采样后的离散信号幅值是时间上离散而幅值连续的信号,它不能直接输入微处理器处理,必须经过量化把它变为数字信号处理。
数据采集系统的主要性能指标:
通道数,即系统采集通道的个数;分辨率,采集系统可以分辨的输入信号的最小变化量;系统精度,是实际输出值与理论输出值之差,它是系统各种误差的总和,和系统分辨率还是有区别的;采集速率,是指在满足系统精度的前提下,对模拟信号在单位时间内所能完成的采集次数;动态范围,通常定义为所允许输入的最大幅值与最小幅值之比的分贝数;非线性失真,也称谐波失真是指当系统输入一个频率为f的正弦波时其输出中出现很多频率为kf的频率分量
1,3数据采集的设计的主要目标
(1) 实时性强。
系统的主要工作是对大量的过程状态参数实时监测、数据存储、数据处理、进行实时数据分析等。
因此要求硬件上必须要有实时时钟和优先级中断信息处理电路。
(2) 可靠性高。
他是系统设计的一个重要要求。
由于数据采集系统往往是安放在被控对象的工作环境中,所以不仅温度、湿度大,而且腐蚀多,干扰也很多,为了确保系统的可靠性,要求系统有较好的抗干扰能力和采集速度。
(3) 通用性好,便于扩充。
一台以嵌入式系统为核心的控制装置,一般可以控制多个设备和过程参数,这就要求系统的通用性要好,能灵活的进行功能扩充。
(4) 结构简单,功耗低,性能优良,
5路输入及其信号调理模块设计
2,1信号调理模块
信号采集系统中,绝大多数模拟量输入都带有大量的噪声不能直接输入到模数转换器中去,需要对信号进行调理。
信号调理电路用来对传感器输入的信号进行隔离,变换,放大,滤波等各种处理,以满足模数转换芯片对输入电平和信号质量的要求。
调理电路如下所示
AD623是高精度、低噪声的仪表放大器,R1是输入限流电阻,R2是增益电阻,调节此电阻的值可改变AD623的增益G,算式为G=100/R1(kΩ)+1。
MAX291是滤波器,截止频率其由电容C1决定。
若设为100Hz:
fc(kHz)=1000/3C1(pF),计算得C1取值为3300pF。
使用中还要注意:
MAX291的零点漂移达-200mV~-400mV,因而可在输出端串接一个10μF左右的钽电容,隔去MAX291引入的直流分量。
2.2多路开关的选择
本系统选用的是5通道的模拟数据选择器MAX308,输出哪路信号通过总线控制。
带串行接口的16位模数转换集成电路(ADC),它包含有跟踪/保持电路的一个低漂移、低噪声、掩埋式齐纳电压基准电源。
它的转换速度快、功率消耗底、采样速率高达308 kb/s点,满量程输入电压范围为±5V,功耗为210mW。
可与大多数流行的数字信号处理器的串行接口直接接口,该输入可以接收TTL或CMOS的信号电平,时钟频率0.1-5.5MHz。
2.3模数模拟转换模块
模数转换是把数据采集系统采集到的模拟信号转换成系统可以识别并处理的数字信号。
它的精度与速度如何将影响到系统的现实性和系统的性能。
本设计采用的是,本模块的设计目的就是为了实现这功能。
2,3,1信号驱动放大器信息
本模块由两部分组成:
信号驱动放大器AD8021与具有低噪声、高精度和出色的长期稳定特性的基准电压源ADR421提供基准电压的模数转换芯片AD7663。
信号驱动放大器AD8021是一款出众的高性能,高速电压反馈放大器,可以用于16bit分辨率系统。
AD8021具有低压噪声和低电流噪声,是当今的高速低噪声运算放大器产品中静态电源电流(7mA@±5V)最低的产品。
AD8021工作电压范围较宽,为±2.25V~±12V,也可以采用5V单电源供电,因此非常适合高速低功耗仪器仪表。
输出禁用引脚可以将静态电源电流进一步降低至1.3mA。
与同类放大器相比,AD8021不仅技术性能出众,而且价格优势明显,静态电流也低得多。
AD8021是一款高速、通用放大器,非常适合各种增益配置,可以用于信号处理链路以及控制环路,采用标准8引脚SOIC与MSOP封装,工作温度范围为:
-40°C~+85°C。
传感器输入的信号通过多路开关及信号调理模块处理后得到比较符合要求的模拟信号,进一步通过信号驱动放大电路AD8021的处理得到精度较高的、稳定的模拟信号,通过分辨率高,采样速率高,功耗小的模数转换芯片AD7663的作用,输出符合要求的数字信号,完成模数转换。
芯片电路如下所示:
2.3.2存储模块的设计
传统的数据采集系统由于数据传输速率比较低,数据量比较小,一般可以完成实时分析和处理,所以存储问题并不突出,但高速高精度数据采集系统的数据传输速率很高并且数量很大,采集速度到达一定的限度就无法进行实时分析和处理,这是需要选择适当的存储方式就行存储。
高速高精度数据采集系统的存储要解决两方面的问题,一是存储器的低存储速度与A/D转换器数据端口的高输出速率的匹配问题。
二是存储器的容量要大,其原因是高速数据采集会在很短时间内产生巨大的数据流,存储系统的容量应满足设计要求。
解决A/D转换器与存储器之间的速度匹配问题有两个:
一是对高速A/D的数据进行锁存,二是对数据进行高速存储。
本设计采用的是对高速的数据进行锁存。
选择的芯片是SST39VF160 Flash Rom。
SST39VF160是2MB的Flash芯片,芯片供电电压为2.7~3.6V,符合JEDEC标准输出引脚,可擦写100000个周期,数据保存能力达100年。
擦除时间分别为:
扇区擦除时间与块擦除时间都是18ms,片擦除时间70ms。
利用翻转或数据采集来确定编程是否完成。
芯片内部结构如下所示
通过利用微处理器对SST39VF160进行写命令字节的形式来进行数据的读写操作。
保持CE#信号低的同时拉低WE#信号写入命令字节,在WE#或CE#信号的下降沿(有出现最晚的来确定)锁存地址总线,而数据总线在WE#或CE#(有出现最早的来确定)信号上升沿被锁存。
内存地址
CE#
oe#
WE#
RESET
芯片内部结构
3ARM处理器的选择
主控制器是整个系统的控制核心,主要承担着对大批量采集数据的集中处理,这就要求该处理器具有高性能的处理速度;同时系统需要支持多个外部设备,这就要求处理器有丰富的接口和设备控制能力。
综合考虑以上要求和价格,功耗等因素,嵌入式主控器选用了三星公司的S3C44B0X微处理器,它是一款高性能,低价格,低功耗,接口资源丰富的处理器特别适合本设计的要求
3,1S3C44B0X的结构介绍
S3C44B0X是Samsung公司推出的一款基于ARM公司ARMTTDMI内核的16/32位RISC处理器,采用了基于ARM7TDMI内核0.25μm工艺的CMOS标准宏单元和存储编译器,频率最高可达66MHZ,存储器的寻址空间达256MB。
它具有功耗低,简单明快的特点,适合低价格和低功耗方面的应用,特别适合对成本敏感和功能敏感的应用场合,如PDA,GPS等。
S3C44B0X采用一种新的总线结构SAMBAⅡ,通过提供全面的,通用的片上外设,大大减少了系统电路中外围元器件的配置,从而使系统成本容易实现最小化。
3.7.2S3C44B0X芯片介绍S3C44B0X具有以下的资源:
(1)2.5V供电的ATM7TDMI内核,带8KB的高速缓冲器;
(2)专用外部存储器(具备FP/EDO/SDRAM/ROM控制器和片选逻辑);
(3)LCD控制器(最大支持256色STN,专用DMA控制器);
(4)2通道通用DMA、2通道桥DMA,并具有外部请求引脚;
(5)1通道SIO2和通道UART(带有握手协议,支持IrDA1.0,具有16-ByteFIFO);
(6)1通道多主IIC总线控制器;
(7)1通道IIS总线控制器;
(8)5个PWM定时器和1通道内部定时器;
(9)看门狗定时器;
(10)71个通用I/O口;
(11)8通道外部中断输入;
(12)功耗控制具有普通、慢速、空闲和停止4种模式;
(13)8通道10位ADC输入;
(14)带日历功能的实时时钟(RTC);
(15)带PLL的片内时钟发生器。
4主程序流程
系统的主程序所要实现的功能主要是实现系统的初始化、系统芯片之间的信息交流、相应的处理程序。
本设计采用模块化编程方式,达到编写不同功能的子程序,实现具体操作的目的。
系统的基本流程是,上电复位后,系统首先进行初始化,然后根据相关程序命令转入到相应的子程序模块,完成相应的功能。
流程图如图
程序如下
#include"stm32f10x.h"
#include"eval.h"
#include"SysTickDelay.h"
#include"UART_INTERFACE.h"
#include
#defineN400
#defineM5
vu16AD_Value[N][M];
vu16After_filter[M];
inti;
voidGPIO_Configuration(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_400MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
}
voidRCC_Configuration(void)
{
ErrorStatusHSEStartUpStatus;
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus=RCC_WaitForHSEStartUp();
if(HSEStartUpStatus==SUCCESS)
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//EnablePrefetchBuffer
FLASH_SetLatency(FLASH_Latency_2);//Set2Latencycycles
RCC_HCLKConfig(RCC_SYSCLK_Div1);//AHBclock=SYSCLK
RCC_PCLK2Config(RCC_HCLK_Div1);//APB2clock=HCLK
RCC_PCLK1Config(RCC_HCLK_Div2);//APB1clock=HCLK/2
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_6);//PLLCLK=12MHz*6=72MHz
RCC_PLLCmd(ENABLE);//EnablePLL
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);//WaittillPLLisready
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//SelectPLLassystemclocksource
while(RCC_GetSYSCLKSource()!
=0x08);//WaittillPLLisusedassystemclocksource
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB
|RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC1|RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1,ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);/
}
}
voidADC1_Configuration(void)
{
ADC_InitTypeDefADC_InitStructure;
ADC_DeInit(ADC1);
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode=ENABLE;ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign=
ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel=M;
ADC_Init(ADC1,&ADC_InitStructure);//根据ADC_InitStruct
/
ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_1,2,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_2,3,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_3,4,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_8,5,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_9,6,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_10,7,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_11,8,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_12,9,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_13,10,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_14,11,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_15,12,ADC_SampleTime_239Cycles5);
ADC_DMACmd(ADC1,ENABLE);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}
voidDMA_Configuration(void)
{
DMA_InitTypeDefDMA_InitStructure;
DMA_DeInit(DMA1_Channel1);
DMA_InitS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 期末 论文 基于 通道 数据 采集 系统