ARM的DA接口实验

上传人:s9****2 文档编号:560356955 上传时间:2023-01-06 格式:DOC 页数:8 大小:138.50KB
返回 下载 相关 举报
ARM的DA接口实验_第1页
第1页 / 共8页
ARM的DA接口实验_第2页
第2页 / 共8页
ARM的DA接口实验_第3页
第3页 / 共8页
ARM的DA接口实验_第4页
第4页 / 共8页
ARM的DA接口实验_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《ARM的DA接口实验》由会员分享,可在线阅读,更多相关《ARM的DA接口实验(8页珍藏版)》请在金锄头文库上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流ARM的DA接口实验ARM嵌入式系统实验报告ARM的D/A接口实验姓名:曾昌立学号:2009160221072011/10/20学习D/A 转换原理,掌握MAX504 D/A 转换芯片的使用方法,掌握不带有D/A的CPU扩展D/A功能的主要方法,了解D/A驱动程序加入内核的方法。D/A接口实验一、实验目的1、学习D/A 转换原理 2、掌握MAX504 D/A 转换芯片的使用方法3、掌握不带有D/A的CPU扩展D/A功能的主要方法 4、了解D/A驱动程序加入内核的方法二、实验内容学习D/A 接口原理,了解实现D/A 系统对于系统的软件和硬件要求

2、。阅读MAX504芯片文档,掌握其使用方法。三、预备知识1、有C 语言基础 2、掌握在Linux 下常用编辑器的使用 3、掌握Makefile 的编写和使用4、掌握Linux 下的程序编译与交叉编译过程四、实验设备及工具硬件:UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。软件:PC 机操作系统REDHAT LINUX 9.0MINICOMARM-LINUX 开发环境五、实验原理D/A 转换器D/A 转换器的内部电路构成无太大差异,一般按输出是电流还是电压、能否作乘法运算等进行分类。大多数D/A 转换器由电阻阵列和n 个电

3、流开关(或电压开关)构成。按数字输入值切换开关,产生比例于输入的电流(或电压)。1、电压输出型(如TLC5620)电压输出型D/A 转换器虽有直接从电阻阵列输出电压的,但一般采用内置输出放大器以低阻抗输出。直接输出电压的器件仅用于高阻抗负载,由于无输出放大器部分的延迟,故常作为高速D/A 转换器使用。2、电流输出型(如THS5661A)电流输出型D/A 转换器很少直接利用电流输出,大多外接电流电压转换电路得到电压输出,后者有两种方法:一是只在输出引脚上接负载电阻而进行电流电压转换,二是外接运算放大器。用负载电阻进行电流电压转换的方法,虽可在电流输出引脚上出现电压,但必须在规定的输出电压范围内使

4、用,而且由于输出阻抗高,所以一般外接运算放大器使用。此外,大部分CMOS DA 转换器当输出电压不为零时不能正确动作,所以必须外接运算放大器。当外接运算放大器进行电流电压转换时,则电路构成基本上与内置放大器的电压输出型相同,这时由于在D/A 转换器的电流建立时间上加入了运算放入器的延迟,使响应变慢。此外,这种电路中运算放大器因输出引脚的内部电容而容易起振,有时必须作相位补偿。3、乘算型(如AD7533)D/A 转换器中有使用恒定基准电压的,也有在基准电压输入上加交流信号的,后者由于能得到数字输入和基准电压输入相乘的结果而输出,因而称为乘算型D/A 转换器。乘算型D/A转换器一般不仅可以进行乘法

5、运算,而且可以作为使输入信号数字化地衰减的衰减器及对输入信号进行调制的调制器使用。4、一位D/A 转换器一位D/A 转换器与前述转换方式全然不同,它将数字值转换为脉冲宽度调制或频率调制的输出,然后用数字滤波器作平均化而得到一般的电压输出(又称位流方式),用于音频等场合。5、MAX504 在开发板上的连接Max504 的连接上图中,RFB 连接VOUT、BIPOFF 连接AGND,使得输出电压范围为02VREFIN,即04.069V。时钟和输入、输出信号分别与同步串口的时钟、发送和接收端相连。可以通过WriteSDIO(data)函数(Uhal.h)向MAX504 发送数据。发送数据时要注意,M

6、AX504 可接受12 位的数据,但低两位不起作用。WriteSDIO(data)函数一次只能发送8 位的数据,所以发送数据时应先将数据左移两位,然后先发送高八位,再发送低八位数据。CLR 和CS 分别由MAX504_CLEAR()和MAX504_ENABLE()、MAX504_DISABLE()函数(Max504.c)控制。六、程序分析实验程序流程图具体程序代码da_main.c 如下:#include #include #include #include #define DA0_IOCTRL_WRITE 0x10#define DA1_IOCTRL_WRITE 0x11#define DA

7、_IOCTRL_CLR 0x12#define Max504_FULL 4.096fstatic int da_fd = -1;char *DA_DEV=/dev/exio/0raw;void Delay(int t)int i;for(;t0;t-)for(i=0;i400;i+);int main(int argc, char *argv)float v;unsigned int value;/ char *da_dev;/ unsigned int da_num=0;if(argc 3)printf(n);printf(Error parametern);printf(Input as:

8、n);printf(./ad_main da_id numn);printf( da_id: select between 0 and 1n);printf( num: range 0.0 4.096n);printf(n);return 1;sscanf(argv2, %f,&v);if(vMax504_FULL)printf(DA out must between: 0 to %fn, Max504_FULL);return 1;value=(unsigned int)(v*1024.0f)/Max504_FULL);if(da_fd=open(DA_DEV, O_WRONLY)0)pri

9、ntf(Error opening /dev/exio/0raw devicen);return 1;if(strcmp(argv1,0) = 0)ioctl(da_fd, DA_IOCTRL_CLR, 0); /clear da.ioctl(da_fd, DA0_IOCTRL_WRITE, &value);else if (strcmp(argv1,1) = 0)ioctl(da_fd, DA_IOCTRL_CLR, 1); /clear da.ioctl(da_fd, DA1_IOCTRL_WRITE, &value);#if 0ioctl(da_fd, DA_IOCTRL_CLR, 0)

10、; /clear da.for(;)ioctl(da_fd, DA0_IOCTRL_WRITE, &value);Delay(500);#endifclose(da_fd);printf(Current Voltage is %f vn, v);return 0;七、实验步骤1、阅读理解源码进入/arm2410cl/exp/basic/05_da 目录,使用vi 编辑器或其他编辑器阅读理解源代码2、编译应用程序运行make 产生da 可执行文件da_mainrootzxt /# cd /arm2410cl/exp/basic/05_da/rootzxt 05_da# makearmv4l-un

11、known-linux-gcc -c -o da_main.o da_main.carmv4l-unknown-linux-gcc da_main.o -o da_mainrootzxt 05_da# lsda_main da_main.c da_main.o doc drivers Makefile s3c44b0-spi.h3、下载调试切换到minicom 终端窗口,使用NFS mount 开发主机的/arm2410cl 到/host 目录,然后进入/host/exp/05_da/drivers 目录,用insmod s3c2410-exio.o 命令插入D/A 驱动,并用 lsmod命令

12、查看是否已经插入。/mnt/yaffscd /host/exp/basic/05_da/host/exp/basic/05_dacd drivers/host/exp/basic/05_da/driversinsmod s3c2410-exio.oUsing s3c2410-exio.o/host/exp/basic/05_da/driverslsmodModule Size Used by Not taintedS3c2410-exio 2384 0 (unused)i2c-tops2 14104 0 (unused)注意:卸载模块可以使用rmmod 命令,以本实验为例,卸载方法如下:/ho

13、st/exp/basic/05_darmmod s3c2410-exio进入/host/exp/basic/05_da 目录,运行./da_main,观察运行结果的正确性。在输入 ./da_main 后会出现下面的提示信息。/host/exp/basic/05_da./da_mainError parameterInput as:./ad_main da_id numda_id: select between 0 and 1num: range 0.0 4.096这是由于我们没有指定参数造成的,它的格式为 ./da_main da 的id 号 数字,同时还需要在0.04.096V 之间来选择一个输出电压。下面的例子是用了开发板上的DA 并且输出1V 的电压,我们可以使用万用表对其进行测量。/host/exp/basic/05_da./da_main 1Current Voltage is 1.000000 v。.精品文档.昆明理工大学津桥学院电子信息科学与技术专业电信091班

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号