基于ARM9的数据采集应用程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

设计报告课程名称嵌入式技术I题目基于ARM9的数据采集应用程序设计专业电子信息工程班级学号姓名成绩2014年06月24日(注:为设计报告完成的日期)目录第一章实验设计要求……………………………………………….1第二章实验分析………………………………………………………2第三章实验步骤以及相关程序设计…………………………………4第四章课题总结和体会………………………………………………81第一章实验设计要求考核题目:基于ARM9的数据采集应用程序设计通过S3C2410X(ARM9)的ADC采集实验箱电位器的值,旋转电位器时可在屏幕上看到当前采集值的变化。实验箱有三个电位器,学生可自选一个或多个。可增功能:(1)中断功能:按下中断按键触发中断,中断时三个LED灯闪烁一次,且屏幕上打印正在中断的提示。(2)报警功能:设定一个临界值(如500),当采集的值超过此临界值时,灯闪烁报警,三个电位器可与三个灯一一对应。考核要求:硬件平台为博创经典UP-NETARM2410实验箱(S3C2410处理器)。软件平台为eclipse+keil+PUTTY(串口调试助手)。报告内容包括:实现的功能软硬件平台硬件原理分析及原理图硬件驱动的实现步骤及分析代码设计:所有需要编写的代码(如adc.c、adc.h、main.c、Makefile等)、代码的注释。运行及调试的步骤总结体会:具体学到了什么知识、在学习过程中的经验、体会。2第二章实验分析A/D转换器是模拟信号和CPU之间联系的接口,它将连续变化的模拟信号转换为数字信号,以供计算机和数字系统进行分析、处理、存储、控制和显示。在编写驱动是可以通过查找数据手册:2.1.选择通道(通过底板AD-DA-CAN图可知三个ADC电位器对应AINO2,所以选择通道2)ADCCON[5:3]=010;ADCCON&=~(0x73);ADCCON|=0x14;2.2.时钟配置与分频(如图2-1和图2-2)ADC控制寄存器(ADCCON)地址为0x58000000图2-1时钟配置,CLKCON[15]=0b1,表示使能CLKCON|=0x115;时钟分频图2-2A/D转换器当预定标器值N,预定数据值是(N+1),初始状态是0xffADCCON[14]=0b1,ADCCON[13:6]=0xFF;ADCCON|=0x114;ADCCON|=0xFF6;2.3.选择模式(如图2-3)图2-3模式选择:选择正常模式ADCCON[2]=0;ADCCON&=~(0x12);2.4.设置启动设置启动AD转换的方式:读启动ADCCON&=~(0x11);3启动AD转换ADCCON|=0X1;2.5.实现功能判断采样转换完成以及读取while(!(ADCCON&(115)));data=ADCDAT0&0xFFF;2.6.相关寄存器定义(如图2-4)图2-4ADC触摸屏控制寄存器(ADCTSC)地址为0x58000004ADC启动延时寄存器(ADCDLY)地址为0x58000008ADC转换数据寄存器(ADCDAT0)地址为0x5800000CADC转换数据寄存器(ADCDAT1)地址为0x58000010时钟寄存器(CLKCON)地址为0x4C00000C4第三章实验步骤以及相关程序设计3.1、启动串口调试首先连接串口线,一端连实验箱的RS232-0,另一端连电脑主机的串口。打开putty,exe。将Serial中Serialline的9600修改为115200,并将将右边最后一项改为“None”,点击“Open”按钮,出现串口调试界面,拨动实验箱电源开关,若串口调试界面中显示vivi,表示串口通了,配置好了.3.2、启动H-JTAG实验箱电源打开,并口线连接好,然后打开H-JTAG,确认连接。3.3、运行Eclipse工程以及编写相关程序3.3.1.打开软件,新建一个cproject工程,将第三次试验(I/O口,串口,中断)的文件复制到该工程,并删除创建的工程,刷新界面,获取之前的实验目录。3.3.2.相关寄存器定义工程-include文件夹-adc文件夹-adc.h,在adc.h中添加:#defineADCCON(*((volatileunsignedint*)0X58000000))//ADC控制寄存器#defineADCTSC(*((volatileunsignedint*)0X58000004))//ADC触摸屏控制寄存器#defineADCDLY(*((volatileunsignedint*)0X58000008))//ADC启动延时寄存器#defineADCDAT0(*((volatileunsignedint*)0X5800000C))//ADC转换数据寄存器0#defineADCDAT1(*((volatileunsignedint*)0X58000010))//ADC转换数据寄存器1#defineCLKCON(*((volatileunsignedint*)0x4C00000C))//时钟寄存器intadc_read(void);voidadc_init(void);3.3.3.实现驱动在工程中新建drivers文件夹,在drivers中新建adc文件夹,在adc中新建adc.c文件,在adc.c中添加如下代码:#includeadc/adc.hvoidadc_init(void){//时钟配置,CLKCON[15]=0b1,表示使能CLKCON|=0x115;//时钟分频ADCCON[14]=0b1,ADCCON[13:6]=0xFF;5ADCCON|=0x114;ADCCON|=0xFF6;//通道选择,选择通道2,ADCCON[5:3]=010;ADCCON&=~(0x73);ADCCON|=0x14;//模式选择:选择正常模式ADCCON[2]=0;ADCCON&=~(0x12);//设置启动AD转换的方式:读启动ADCCON&=~(0x11);//启动AD转换ADCCON|=0X1;}intadc_read(void){intdata;//启动AD转换ADCCON|=0X1;//判断采样转换完成while(!(ADCCON&(115)));data=ADCDAT0&0xFFF;//启动AD转换ADCCON|=0X1;returndata;}3.3.4.编写main.ccommon文件夹-main.c,在main.c中添加:#includeadc/adc.h#includeuart/uart.h#includekey/key.h#includegpio/led.hintmain(void){uart_init();led_init();6key_init();adc_init();while(1)//读写采样值{intch,i=0,j=0;ch=adc_read();printf(%d\n,ch);}return0;}voiddo_irq(void)//中断采样值部分{intsrc=INTOFFSET;inti;printf(中断操作中:doirq\n);//打印中断switch(src){case4:key_isr();led_off();for(i=0;i1000000;i++);led_on();for(i=0;i1000000;i++);break;}INTPND|=1src;}3.3.5.修改两个Makefile复制工程中common文件夹中的Makefile文件到drivers-key中,在drivers-adc下的Makefile中找到:“COBJS:=”改为:COBJS:=adc.o//即将adc.c编译成adc.o找到“LIB=”改为:7LIB=libadc.a//将adc.o生成库文件libadc.a找到工程中的Makefile文件,在其中添加:LIBS+=drivers/adc/libadc.a//将libadc.a链接到工程中3.3.6保存文件并编译3.4.创建Keil工程打开eclipse中run-debugconfigurations,右击μVisionproject创建NewBrowse选中adc,点击TargetOptions,打开output中SelectFolderforObjects.点击向上按钮后ok.接着点击debug选择H-JTAGARM,最后点击Debug按钮,开始调试程序。调试完成后运行。附:8第四章课题总结和体会为期一周的设计终于完成,实验是巩固ARM课程中所学的基本理论知识,在本次试验中运用到了之前所学的I/O口,串行以及中断实验的相关程序.在学习的过程中难免会遇到各种困难,在实验的过程中也是如此,但只要肯虚心请教,问题终会解决。在这次试验编写程序时我学会了如何使用数据手册来查找相关信息,实验调试时,一直未出现在屏幕上看到当前采集值的变化,在其他同学的帮助下,逐步解决了问题,最终实现了其基础功能以及中断功能,报警功能部分没有实现是一大遗憾,但通过本次课程,使我对ARM9嵌入式开发有了一定的掌握和理解,加深了前三次实验(I/O口,串行通信,中断)的了解,并且学习了adc相关知识.9

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功