




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.4 A/D 接 口 实 验、实验目的了解在I inux环境下对S3C2410芯片的8通道10位 A/D的操作与控制。、实验内容学习A/D接口原理,了解实现 A/D系统对于系统的软件和硬件要求。阅读 ARM芯片文档, 掌 握ARM的A/D相关寄存器的功能,熟悉 ARM系统硬件的A/D相关接口。利用外部模拟信 号编程 实现ARMf环采集全部前4路通道,并且在超级终端上显示。三、预备知识?有 C 语言基础。下常用编辑器的使?掌握在 Linux用。?掌握 MakefiIe的编写和使用。?掌握 Linux 下的程序编译与交叉编译过程。四、实验设备及工具硬件:UP-TECIS2410/P270 DVF
2、嵌入式实验平台、PC机Pentium 500以上,硬盘10G以上。软件:PC机操作系统 REDHAT LINUX 9.0 + MINICOW ARM-LINU)开发环境五、实验原理1、A/D 转换器A/D转换器是模拟信号源和CPU之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。在工业控制和数据采集及许多其他领域中, A/D转换是不可缺少的。A/D转换器有以下类型:逐位比较型、积分型、计数型、并行比较型、电压-频率型,主要应根据使用场合的具体要求,按照转换速度、精度、价格、功能以及接口条件等因素来决定选择何种类型。常用的有以下两种:?
3、 双积分型的 A/D 转换器 双积分式也称二重积分式, 其实质是测量和比较两个积分的时间,一个是对模拟输入电压积分的时间To,此时间往往是固定的; 另一个是以充电后的电压为初值,对参考电源Vref反向积分,积分电容被放电至零所需的时间 Ti。模拟输 入电压Vi与参考电压VRef之比,等 于上述两个时间之比。 由于沐ef、To固定,而放电时间Ti可 以测出,因而可计算出模拟输 入电压的大小(VRef与Vi符号相反)。由于To、VRef为已知的固定常数,因此反向积分时间Ti与输入模拟电压V在To时间内的平 均值 成正比。输入电压 V愈高,VA愈大,Ti就愈长。在Ti开始时刻,控制逻辑同时打开计 数
4、器的 控制门开始计数,直到积分器恢复到零电平时,计数停止。则计数器所计出的数字即正比于输入电压V在To时间内的平均值,于是完成了一次 A/D转换。由于双积分型A/D转换是测量输入电压 V在To时间内的平均值,所以对常态干扰(串摸干 扰) 有很强的抑制作用,尤其对正负波形对称的干扰信号,抑制效果更好。双积分型的 A/D 转换器电路简单,抗干扰能力强,精度高,这是突出的优点。但转换速度比较慢常 ? 逐次逼近型的 A/D 转换器用的次逼近型(也称逐位比较式)的A/D转换器,应用比积分型更为广泛,其原理框图如图所示,主要由逐次逼近寄存器 SAR D/A转换器、比较器以及时序和控制逻辑等部分组成它的实质
5、是逐次把设定的 SAR寄存器中的数字量经DA转换后得到电压Vc与待转换/模拟电压V。进行比较。比较时,先从 SAR的最高位开始,逐次确定各位的数码应是“T还是“ 0”,其工作过程如下:转换前,先将SAR寄存器各位清零。转换开始时,控制逻辑电路先设定SAR寄存器的最高 位为“1 ”,其余位为“ 0”,此试探值经D/A转换成电压Vc,然后将Vc与模拟输入电压Vx比较。 如果VxVc,说明SAR最高位的“ 1”应予保留;如果 VxVc,说明SAR亥位应予清零。然后再对SAR寄存器的次高位置“ 1 ”依上述方法进行 DA转换和比较。如此重复上述过程,直至确定SAR寄存器的最低位为止。过程结束后,状态线
6、改变状态,表明已完成一次转换。最后,逐次逼近寄存器SAF中的内容就是与输入模拟量 V相对应的二进制数字量。显然AD转换器的位数N 决定于SAR的位数和D/A的位数。图表示四位A/D转换器的逐次 逼近过程。转换结果 能否准确逼近模拟信号,主要取决于SAR和D/A的位数。位数越多,越能准确逼近模拟量,但转换所需的时间也越长。z逐次逼近式的A/D转换器的主要特点是:转换速度较快,在1 100/宙以内,分辨率可以达18位,特别适用于工业控制系统。转 换 时间固定,不随输入信号的变化而变化。抗干扰能力相对积分型的差。例如,对模拟输入信号采样过程中,若在采样时刻有一个干扰脉冲迭加在模拟信号上,则采样时,包
7、括干扰信号在内,都被采样和转换为数字量,这就会造成较大的误差,所以有必要采取适当的滤波措施。凶理氏*近过图逐次逼近式A/D转换器2、A/D转换的重要指标?分辨率(Resolution)分辨率反映A/D转换器对输入微小变化响应的能力,通常用数字输出最低位(LSB)所对应的模拟输入的电平值表示。n位A/D能反应1/2 n满量程的模拟输入电平。由于分辨率直接与转换器的位数有关,所以一般也可简单地用数字量的位数来表示分辨率,即n位二进制数, 最值得注意的是,分辨率与精度是两个不同的概念,也可能由于温度漂移、线性度等原因,而使其精度和相对精度 (Relative Accuracy) 两种表示方法。低位所
8、具有的权值,就是它的分辨率。不要把两者相混淆。即使分辨率很高, 不够高。? 精 度(Accuracy)精度有绝对精度 (Absolute Accuracy)z 绝对误差: 在一个转换器中,对应于一个数字量的实际模拟输入电压和理想的模 拟输入电压之差并非 是一个常数。我们把它们之间的差的最大值,定义为“绝对误差”。通常以数字量的最小有 效位(LSB)的分数值来表示绝对误差,例如: 土 1LSB等。绝对误差包括量化误差和其它所 有误差。z 相对误差 是指整个转换范围内,任一数字量所对应的模拟输入量的实际值与理论 值之差,用模拟电 压满量程的百分比表示。例如,满量程为10V,10位A/D芯片,若其绝
9、对精度为 土 1/2LSB,则其最小有效位的量化单位:9.77mV,其绝对精度为=4.88mV,其相对精度为0.048%。z 转换时间 (Conversion Time)转换时间是指完成一次 A/D 转换所需的时间,即由发出启动转换命令信号到转换结束信号开始有效的时间间隔。转换时间的倒数称为转换速率。例如AD570的转换时间为25us,其 转换速率为 4 0KHz。z 电源灵敏度 (power supply sensitivity)电源灵敏度是指 A/D 转换芯片的供电电源的电压发生变化时, 产生的转换误差。 一般用电 源电压变化 1 时相当的模拟量变化的百分数来表示。z 量程量程是指所能转换
10、的模拟输入电压范围, 分单极性、双极性两种类型。 例如,单极性 量程为0+5V, 0+10V, 0+20V;双极性 量程为-5+5V, -10+10V。z 输出逻辑电平多数A/D转换器的输出逻辑电平与TTL电平兼容。在考虑数字量输出与微处理的数据总线接口时,应注意是否要三态逻辑输出,是否要对数据进行锁存等。z 工作温度范围由于温度会对比较器、运算放大器、电阻网络等产生影响,故只在一定的温度范围内才能保证额定精度指标。 一般A/D转换器的工作温度范围为(070C)军用品的工作温度范围为(-55+125C)? ARM自带的十位A/D 转换器ARM S3C241芯片自带一个8路10位A/D转换器,并
11、且支持触摸屏功能。 ARM241开发板 只 用作3路A/D转换器,其最大转换率为500K,非线性度为正负1 .5位,其转换时间可以 通过下 式计算:如果系统时钟为 50MHz比例值为49,则为A/D 转换器频率=50 MHz/(49+1) = 1 MHz转换时间=1/(1 MHz / 5cycles) = 1/200 kHz(相当于 5us) = 5 us表采样控制寄存器的设置寄存器地址读/写描述复位值ADCCON0x58000000R/WADC 控制寄存器0X3FC4表242采样控制寄存器的位描述ADCCON位描述初始设置ECFLG15End of conversion flag (read
12、 only).0 = A/D conversion in process0PRSCEN141 = End of A/D conversion A/D converter prescaler enable.0 = Disable0PRSCVL13:61 = EnableA/D converter prescaler value.Data value: 1 255Note that division factor is (N+1) when the prescaler value is0xFFSEL_MUX【5:3Analog input channel select. 000 = AIN 000
13、1 = AIN 1010 = AIN 2011 = AIN 3100 = AIN 4101 = AIN 50STDBM2Standby mode select.0 = Normal operation mode1READ_START11 = Standby mode A/D conversion start by read.0 = Disable start by read operation01 = Enable start by read operation A/D conversion starts by setting this bit.ENABLE_0If READ_START is
14、 enabled, this value is not valid.0START0 = No operation 1 = A/D conversion starts and this bit is该寄存器的0位是转换使能位,写1表示转换开始。1位是读操作使能转换,写1表示转换在读操作时开始。3、4、5位是通道号。13:6位为AD转换比例因子。14位为比例因子有 效位,15位为转换标志位(只读)。表转换结果数据寄存器的设置寄存器地址读/写描述复位值ADCDAT00x5800000CRADC转换数据寄存器-ADCDAT0转换结果数据寄存器。该寄存器的十位表示转换后的结果,全为1时为满量程3.3 伏
15、。? A/D转换器在扩展板的连接A/D转换器在扩展板的接法如图 所示,前三路通过电位器接到3.3v电源上。L701ot:EATmOUPPERS4702J*10K2)JUMPEFJ10K图242 A/D转换器在扩展板上的接法六、程序分析(关键代码分析)ad驱动对用户来说只是下面的一个文件结构。在用户程序里只需要用到open、read、write、release等内核函数即可。本实验采用的是模块方式加载,可以在实验箱的/mnt/yaffs/ad/中找到AD的驱动程序。static struct file_operations s3c2410_fops = owner:THIS_MODULE,ope
16、n: s3c2410_adc_open, read:s3c2410_adc_read,write:s3c2410_adc_write,release:s3c2410_adc_release,下面我们对驱动部分重要函数进行说明。ad驱动在内核里的代码我们放到了本次实验的src文件下,里为arm2410头文件s3c2410.h初始化ADC勺部分。所有 代码 也可以到内核里面去阅读。关于驱动知识的基本介绍请见第4章第一小节,本节只作 为应用实验的简单例子。static int s3c2410 adc open(struct inode *inode, struct file *file) init_
17、MUTEX(&adcdev.lock);init_waitqueue_head(&(adcdev.wait);adcdev.channel=0; adcdev.prescale=0xff;MOD_INC_USE_COUNT;DPRINTK( adc openedn);return 0;/AD 通道和比例因子初始化static ssize_t s3c2410_adc_write(struct file *file, const char *buffer, size_t count, loff_t * ppos) int data;if(count!=sizeof(data)/error inpu
18、t data sizeDPRINTK(the size of input data must be %dn, sizeof(data);return 0;copy_from_user(&data, buffer, count);adcdev.channel=ADC_WRITE_GETCH(data);adcdev.prescale=ADC_WRITE_GETPRE(data);DPRINTK(set adc channel=%d, prescale=Ox%xn, adcdev.channel, adcdev.prescale); return count;/告诉内核驱动读哪一个通道的数据和设置
19、比例因子#define START_ADC_AIN(ch, prescale) ADCCON = PRESCALE_EN | PRSCVL(prescale) | ADC_INPUT(ch) ; ADCCON |= ADC_START; while(0)/PRESCALE_EN 左移14使位比例因子有效;PRSCVL左移6位设置比例因子;ADC INPUT左移3位选择通道:/ADCCON |= ADC_START;ADCCON 0 为置 1,准备采集数据static ssize_t s3c2410_adc_read(struct file *filp, char *buffer, size_t
20、 count, loff_t *ppos)int ret = 0;if (down_interruptible(&adcdev .lo ck)return -ERESTARTSYS;START_ADC_AIN(adcdev.channel, adcdev.prescale);interruptible_sleep_on(&adcdev.wait);ret = ADCDAT0;ret &= 0x3ff;/把数据寄存器内容放入变量retDPRINTK(AIN%d = 0x%04x, %dn, adcdev.channel, ret, ADCCON & 0x80 ? 1:0);copy_to_use
21、r(buffer, (char *)&ret, sizeof(ret);/把ret变量的内容传给用户缓冲区up(&adcdev .lo ck);return sizeof(ret);/由内核采集通道数据后把数据放回用户区mai n.c的代码如下:by threewater*/#include #include #include #include #include #include #include #include s3c2410-adc.h#define ADC_DEV/dev/adc/0rawstatic int adc_fd = -1;static int init_ADdevice(v
22、oid)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_WRITE(channel, PRESCALE);write(adc_fd, &data, sizeof(data);read(adc_fd, &data, sizeof(data);return data;static int stop=0;static void* comM
23、onitor(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_create(&th_com, NULL, comMonitor, 0);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, &retval);printf(n);return 0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医儿科学模拟考试题含答案
- 10《老人与海》教学设计 2024-2025学年统编版高中语文选择性必修上册
- 2024国家电投国宁新储公司招聘14人笔试参考题库附带答案详解
- 2024四川雅安市石棉县龙昌建材有限责任公司石棉恒泰昌商砼有限公司招聘驾驶员23人笔试参考题库附带答案详解
- 名校联盟浙江省温州市第二十中学九年级历史人教版 资源出现短缺的教学设计
- Unit 3 All about me Lesson 4:What do you like to do?教学设计 2024-2025学年冀教版(2024)七年级英语上册
- 第二单元第9课《for循环的应用实例》教学设计 2023-2024学年浙教版(2020)初中信息技术八年级上册
- 第二单元第6课《互联网应用中的数据》教学设计 2023-2024学年浙教版(2023)初中信息技术八年级上册
- 第三章 物态变化第4节 升华和凝华(教学设计)-2024-2025学年人教版物理八年级上册
- 第14课 明至清中叶的经济与文化 教学设计 -2024-2025学年高一统编版2019必修中外历史纲要上册
- DeepSeek从入门到精通培训课件
- 俄罗斯进口冻肉合同范例
- 2025年湖北省技能高考(建筑技术类)《建设法规》模拟练习试题库(含答案)
- 急性呼衰院前急救流程
- 部编版七年级语文下册《第2课说和做》课件
- 养老服务信息化发展-深度研究
- 2024-2025学年第二学期学校总务工作计划(附2月-6月安排表行事历)
- 夫妻离婚协议书范本2024
- GB/T 3920-2024纺织品色牢度试验耐摩擦色牢度
- 交管12123学法减分题库(含答案)
- 2025年苏州工业职业技术学院高职单招职业适应性测试近5年常考版参考题库含答案解析
评论
0/150
提交评论