新闻中心

EEPW首页>嵌入式系统>设计应用> 由AT91M55800A构成的简易数据采集方案

由AT91M55800A构成的简易数据采集方案

作者: 时间:2012-04-17 来源:网络 收藏

该芯片中含有两个完全相同的4通道10位A/D转换器,可组成一个8通道10位A/D转换器。每个A/D转换器具有 4个模拟输入引脚和数字触发输入引脚,并提供一个AIC的中断信号。两个A/D转换器共享模拟电源引脚和参考电压输入引脚。每一个通道可被单独地使能或禁止,并具有自己的数据寄存器。A/D转换器可以配置为在转换序列后自动进入睡眠 模式,并可由软件、T/D或外部信号来触发。

由于内部不带片内程序存储器,需要对外扩[1] Flash存储器作为程序存储器用于存放程序代码、常量表及掉电后需要保存的数据。的总线读写周期最长可以有8个周期的延时,要求 Flash存储器的最低读速度不低于该速度。考虑到的执行速度和程序大小,选用访问速度为70 ns的HY29LV160(芯片容量是1 M×16 bit共2 MB),基本上能够满足要求。

该系统中接入AD590[2]作为温度传感器,该器件以电流作为输出量来指示温度,并且将得到的信号经过放大器的缓冲隔离得到一个与温度成正比的电压,从而实现对温度的测量。

3 A/D转换编程

中,两个A/D转换器独立工作,每个A/D转换器只能读取一个通道的A/D转换器值。此程序让用户指定哪一个通道工作,然后读取指定通道的值,并显示出来。由于A/D转换器的精度有10位和8位,这里设置为10位,因此获得的数据范围在0~3FF之间。

A/D转换器的工作过程不同于一般的外围设备。初始化后,必须有一个触发命令高速A/D转换器进行采集,此时A/D转换器对其激活的某一个通道上的模拟信号进行采样、保持,然后转换成数据,存储在数据寄存器中。用户可以从状态寄存器中了解到A/D转换器是否已经转换完成,然后通过读取数据寄存器得到A/D 转换后的数值。

A/D转换程序流程图见图3。

42.jpg

对A/D转换器进行编程,使用AT91库(在/pe-riph/adc目录下),与A/D转换器相关的代码部分[3]如下:

a)adc.h:A/D转换器用户接口结构定义StructADC、控制寄存器ADC-CR、模式寄存器ADC-MR和其他一些重要寄存器的各个重要位的定义、A/D转换器中断服务程序函数定义。

b)Lid_adc.h:A/D转换器描述符定义、库函数的定义。

e)Lid_adc.c:库函数的详细代码。包括:初始化ADC at91_adc_open、关闭ADC at91_adc_close、获得状态寄存器的值at91_adc_get_status、设置控制寄存器的值at91_adc_trig_cmd、读取A/D转换的值at91_adc_read、打开指定的A/D转换通道at91_adc_channel_open、关闭指定的A/D转换通道 at91_adc_channel_close、获取通道开和关的状态at91_adc_channel_geI_status等。

4 结束语

本文介绍了一个基于ARM7的方案。该方案通过硬件的具体设计和软件编程实现了预期的目标。利用ARM进行可以使方案更稳定,而且可以达到功耗小、性能高的效果,适合在多种工业场合中应用。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭