收藏 分享(赏)

嵌入式A D接口实验.doc

上传人:精品资料 文档编号:8454193 上传时间:2019-06-28 格式:DOC 页数:16 大小:194.57KB
下载 相关 举报
嵌入式A D接口实验.doc_第1页
第1页 / 共16页
嵌入式A D接口实验.doc_第2页
第2页 / 共16页
嵌入式A D接口实验.doc_第3页
第3页 / 共16页
嵌入式A D接口实验.doc_第4页
第4页 / 共16页
嵌入式A D接口实验.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、2.4 A/D 接 口 实 验一 、 实 验 目 的了解在 linux 环境下对S3C2410 芯片 的 8 通道1 0位 A/D 的操 作与控制。二 、 实 验 内 容学习 A/D 接 口原理,了解实现 A/D系统对于系统的软件和硬件要求。阅读 ARM 芯 片文档, 掌握 ARM 的 A/D 相关寄 存 器的功能,熟悉 ARM 系 统硬件的 A/D 相关接口。 利用外部模拟信 号编程实现 ARM 循环采集 全部前 4 路 通道,并且在超级终端上显示。三 、 预 备 知 识 有 C 语言 基 础。 掌握在 Linux 下常用编辑 器的使用。 掌握 Makefile 的编写 和 使用。 掌握 L

2、inux 下的程序编译与交叉编译过程。四 、 实 验 设 备 及 工 具硬件: UP-TECH S2410/P270 DVP 嵌入式 实验平台、 PC 机P entium 500 以上, 硬 盘 10G 以上。 软件:PC 机 操作系统 REDHAT LINUX 9.0 MINICOMARM-LINUX开发环境五 、 实 验 原 理1、 A/D 转 换 器A/D 转换器是 模拟信号源和 CPU 之间 联系的接口,它的任务是将连续变化的模拟信号转换 为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。在工业控制和数据采 集及许多其他领域中,A/D 转换是不 可缺少的。A/D 转换器有 以

3、下类型:逐位比较型、积分型、计数型、并行比较型、电压频率型,主 要应根据使用场合的具体要求,按照转换速度、精度、价格、功能以及接口条件等因素来 决定选择何种类型。常用的有以下两种: 双 积 分 型 的 A/D 转 换 器 双积分式也称二重积分式,其实质是测量和比较两个积分的时间,一个是对模拟输入电压 积分的时间 T0, 此时间往往是固定的; 另一个是以充电后的电压为初值, 对参考电源 Vref 反向积分, 积分电容被放电至零所需的时间 T1。 模拟输入电压 Vi 与参 考电压 VRef 之 比, 等 于上述两个时间之比。 由于 VRef 、 T0 固定, 而放电时间 T1 可 以测出, 因而可

4、计算出模拟输 入电压的大小(V Ref 与 Vi符号相反)。由于 T0、 VRef为已知的固定常数, 因此反向积分时间 T1 与输 入模拟电压 Vi 在 T0 时间 内的平 均值成正比。 输入电压 Vi 愈高, VA 愈 大, T1 就愈 长。 在 T1 开 始时刻, 控制逻辑同时打开计 数器的控制门开始计数,直到积分器恢复到零电平时,计数停止。则计数器所计出的数字 即正比于输入电压 Vi 在T 0 时间内的 平均值,于是完成了一次 A/D 转换 。由于双积分型 A/D 转换 是测量输入电压 Vi 在 T0时间内的平均值, 所以对常态干扰(串摸干 扰)有很强的 抑制作用,尤其对正负波形对称的干

5、扰信号,抑制效果更好。双积分型的 A/D 转换器电 路简单,抗干扰能力强,精度高,这是突出的优点。但转换速度 比较慢, 常用 的A/D转换芯 片的转换时间为毫秒级例如12位的 积分型A/D芯 片ADC ETl2BC, 其转换时间为 lms。因此 适用于模拟信号变化缓慢,采样速率要求较低,而对精度要求较 高,或现场干扰较严重的场合。例如在数字电压表中常被采用。 逐 次 逼 近 型 的 A/D 转 换 器逐次逼近型(也称逐位比较式)的 A/D转换器,应用比积分型更为广泛,其原理框图如图2.4.1 所示, 主要由逐次逼近寄存器 SAR、 D/A 转换 器、 比较器以及时序和控制逻辑等部分 组成。 它

6、的实质是逐次把设定的 SAR寄存器中的数字量经 D/A 转换后得到 电压 Vc 与待 转换模拟电压 V。 进行比较。 比较时, 先从 SAR 的最 高位开始, 逐次确定各位的数码应是“ 1”还是“ 0”,其工作过程如下:转换前,先将 SAR 寄存 器各位清零。转换开始时,控制逻辑电路先设定 SAR 寄存 器的最高 位为“ 1”, 其余位为“ 0”, 此试探值经 D/A 转换成电 压 Vc, 然后 将 Vc 与模拟 输入电压 Vx比 较。如果 VxVc,说明SAR 最高位的“ 1”应予保留;如果 Vx * 2004.06.18 */#include #include #include #incl

7、ude #include #include #include #include “s3c2410-adc.h“#define ADC_DEV “/dev/adc/0raw“ static int adc_fd = -1;static int init_ADdevice(void)if(adc_fd=open(ADC_DEV, O_RDWR)0)printf(“Error opening %s adc devicen“, ADC_DEV);return -1;static int GetADresult(int channel)int PRESCALE=0XFF;int data=ADC_WRI

8、TE(channel, PRESCALE);write(adc_fd, read(adc_fd, return data;static int stop=0;static void* comMonitor(void* data)getchar();stop=1;return NULL;int main(void)int i;float d;pthread_t th_com;void * retval;/set s3c44b0 AD register and start ADif(init_ADdevice()0)return -1;/* Create the threads */pthread

9、_create(printf(“nPress Enter key exit!n“);while( stop=0 )for(i=0; i=2; i+)/采样02 路A/ D 值d=(float)GetADresult(i)*3.3)/1024.0;printf(“a%d=%8.4ft“,i,d); usleep(1); printf(“r“);/* Wait until producer and consumer finish. */pthread_join(th_com, printf(“n“);return 0;七 、 实 验 步 骤1、 阅 读 理 解 源 码进入/arm2410cl/e

10、xp/basic/04_ad 目 录,使用 vi编辑器或其他编辑器阅读理解源代码。2、 编 译 应 用 程 序运行 make 产 生 ad 可执行 文件rootzxt /# cd /arm2410cl/exp/basic/04_ad/ rootzxt 04_ad# makearmv4l-unknown-linux-gcc -c -o main.o main.carmv4l-unknown-linux-gcc -o /bin/ad main.o -lpthread armv4l-unknown-linux-gcc -o ad main.o -lpthread rootzxt 04_ad# lsa

11、d hardware.h main.o Makefile.bak s3c2410-adc.hbin main.c Makefile readme.txt src3、 下 载 调 试换到 minicom 终端窗口, 使用 NFS mount 开发主机 的/arm2410cl 到/host 目 录。rootzxt root# minicom/mnt/yaffs mount -t nfs -o nolock 192.168.0.56:/arm2410cl /host/mnt/yaffsinsmod ad/s3c2410-adc.o /mnt/yaffscd /host/exp/basic/04_ad/ /host/exp/basic/04_ad./adPress Enter key exit!a0= 0.0032 a1= 3.2968 a2= 3.2968我们可以通过调节开发板上的三个黄色的电位器,来查看 a0、a1、a2 的 变化。八 、 思 考 题1. 逐次逼 近型的 A/D转换器原理是什么?2 A/D 转换 的重要指标包括哪些?3 ARM 的A /D 功能的相 关寄存器有哪几个,对应的地址是什么?4 如何启 动 ARM 开始 转换 A/D,有 几种方式?转换开始时 ARM 是如何知 道转换哪路通道 的?如何判断转换结束?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报