基于ARM的数据采集程序设计完整_第1页
基于ARM的数据采集程序设计完整_第2页
基于ARM的数据采集程序设计完整_第3页
基于ARM的数据采集程序设计完整_第4页
基于ARM的数据采集程序设计完整_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、武汉理工大学华夏学院设 计 报 告课程名称 嵌入式技术 题 目基于ARM9的数据采集程序设计专 业 班 级 学 号 姓 名 成 绩 _2015_年_ 月_日(注:为设计报告完成的日期)目录第1章 功能及原理.1 1.1实现的功能.1 1.2软件硬件平台.11.3硬件原理分析及原理图.11.4硬件驱动的实现步骤及分析.1第2章 代码设计.42.1相关寄存器定义.42.2实现驱动.42.3编写驱动.52.4修改两个Makefile.6第3章 实验运行步骤.83.1启动串口调试.83.2运行H-JTAG.83.3运行Eclipse工程.93.4调试工程.9第4章 调试及结果分析.114.1实验现象.

2、114.2总结体会.12第1章 功能及原理1.1实现的功能通过S3C2410X(ARM9)的ADC采集实验箱电位器的值,旋转电位器时可在屏幕上看到当前采集值的变化。中断功能:按下中断按键触发中断,中断时三个LED灯闪烁一次,且屏幕上打印正在中断的提示。报警功能:设定一个临界值(如500),当采集的值超过此临界值时,灯闪烁报警,三个电位器可与三个灯一一对应。1.2软件硬件平台 硬件平台为博创经典UP-NETARM2410实验箱(S3C2410处理器)。 软件平台为eclipse+keil+PUTTY(串口调试助手)。1.3硬件原理分析及原理图 由底板文件夹中第10章10-AD-DA-CAN文件中

3、可得电位器原理图如下:图1 硬件原理图 S3C2410的ADC是8路复用的,开发平台上的3个ADC电位器对应AIN0-2,触摸屏电路使用AIN5和AIN7。ADC电路的参考电压VERF固定为3.3V电压,输入电压范围是0到3.3V。 A/D转换器是模拟信号和CPU之间联系的接口,它将连续变化的模拟信号转换为数字信号,以供计算机和数字系统进行分析、处理、存储、控制和显示。1.4硬件驱动的实现步骤及分析1.4.1 muxed通过在09章IO ports章节搜索AIN0、AIN1、AIN2,没有找到,因此,不是多功能引脚。1.4.2 clk 开启时钟在07-clock power managemen

4、t一章中搜索ADC,发现:表1 clock power management设置使能设置为使能状态,CLKCON15=0b1。时钟分频在16-ADC & touch screen一章中的寄存器中配置,发现:表2 ADC & touch screen寄存器配置A/D转换器预分频器使能 ADCCON14=0b1。A/D转换器预分频器数值为256分频 ADCCON13:6=0xFF。1.4.3参数设置查看表2可知:ADC通道选择:输入通道选择AIN2,ADCCON5:3=0b010。模式选择:模式选择为正常模式,ADCCON2=0b0。设置启动AD转换的方式:读启动,ADCCON1=

5、0b1。启动AD转换:ADCCON0=0b1。1.4.4功能判断采样转换完成: if (ADCCON15 = 0b1)则转换完成,可读取采样值,否则继续等。读取采样值(整数):data = ADCDAT00:11。启动ADC:tmp = ADCDAT00:11。第2章 代码设计2.1相关寄存器定义在工程中新建include文件夹,在include文件夹中新建tao(adc)文件夹,在tao文件夹中新建tao.h文件,在tao.h中添加如下代码:#define TAOCON (*(volatile unsigned int *)0x58000000)/TAO控制寄存器#define TAOTSC

6、 (*(volatile unsigned int *)0x58000004)/TAO触摸屏控制寄存器#define TAODLY (*(volatile unsigned int *)0x58000008)/TAO启动延时寄存器#define TAODAT0 (*(volatile unsigned int *)0x5800000C)/TAO转换数据寄存器0#define TAODAT1 (*(volatile unsigned int *)0x58000010)/TAO转换数据寄存器1#define CLKCON (*(volatile unsigned int *)0x4C00000C)

7、/时钟寄存器int tao_read(void);void tao_init01(void);void tao_init02(void);void tao_init03(void);表3 相关寄存器定义2.2实现驱动在工程中新建drivers文件夹,在drivers文件夹中新建tao文件夹,在tao文件夹中新建tao.c文件,在tao.c中添加如下代码:#include "tao/tao.h"void tao_init01(void)CLKCON |= 0x1 << 15; /时钟配置,CLKCON15 = 0b1,表示使能TAOCON|=0x1<<

8、14;TAOCON|=0xFF<<6; /时钟分频TAOCON14=0b1,TAOCON13:6=0xFF;TAOCON&=(0x7<<3); /通道选择,选择通道0,TAOCON5:3=010;TAOCON&=(0x1<<2); /模式选择:选择正常模式 TAOCON2=0;TAOCON&=(0x1<<1); /设置启动AD转换的方式:读启动TAOCON|=0X1; /启动AD转换void tao_init02(void) CLKCON |= 0x1 << 15; /时钟配置,CLKCON15 = 0b1,表

9、示使能TAOCON|=0x1<<14; TAOCON|=0xFF<<6; /时钟分频TAOCON14=0b1,TAOCON13:6=0xFF;TAOCON&=(0x7<<3); TAOCON|=0x3<<4; /通道选择,选择通道1,TAOCON5:3=010;TAOCON&=(0x1<<2); /模式选择:选择正常模式 TAOCON2=0;TAOCON&=(0x1<<1); /设置启动AD转换的方式:读启动TAOCON|=0X1; /启动AD转换void tao_init03(void) CLKC

10、ON |= 0x1 << 15; /时钟配置,CLKCON15 = 0b1,表示使能TAOCON|=0x1<<14; TAOCON|=0xFF<<6; /时钟分频TAOCON14=0b1TAOCON13:6=0xFF;TAOCON&=(0x7<<3);TAOCON|=0x1<<4; /通道选择,选择通道2,TAOCON5:3=010;TAOCON&=(0x1<<2); /模式选择:选择正常模式 TAOCON2=0;TAOCON&=(0x1<<1); /设置启动AD转换的方式:读启动TAO

11、CON|=0X1; /启动AD转换int tao_read(void) int data;TAOCON|=0X1; /启动AD转换while(!(TAOCON&(1<<15); /判断采样转换完成data=TAODAT0&0xFFF;TAOCON|=0X1; /启动AD转换return data;2.3编写驱动common文件夹-> main.c,在main.c中添加:#include "tao/tao.h"#include "uart/uart.h"#include "key/key.h"#incl

12、ude "gpio/led.h"int main(void) uart_init(); /屏幕打印驱动 led_init(); /led灯驱动 key_init(); /中断驱动 int t1,t2,t3; while(1) /读写采样值 tao_init01(); t1=tao_read(); if(t1>500) *(volatile unsigned int *)0x56000024) |= 0x1<<5;/灯0灭 for(i=0;i<1000000;i+); *(volatile unsigned int *)0x56000024) &

13、;= (0x1<< 5);/灯0亮 for(i=0;i<1000000;i+); tao_init02(); t2=tao_read(); if(t2>500) *(volatile unsigned int *)0x56000024) |= 0x1<<6;/灯1灭 for(i=0;i<1000000;i+); *(volatile unsigned int *)0x56000024) &= (0x1<<6);/灯1亮 for(i=0;i<1000000;i+); tao_init03(); t3=tao_read(); if

14、(t3>500) *(volatile unsigned int *)0x56000024) |= 0x1<<7;/灯2灭 for(i=0;i<1000000;i+); *(volatile unsigned int *)0x56000024) &= (0x1<<7);/灯2亮 for(i=0;i<1000000;i+); printf("t1=%4d,t2=%4d,t3=%4dn",t1,t2,t3); return 0;void do_irq(void) /中断采样值部分 int src = INTOFFSET; int

15、 i; printf("do_irqtaon"); /打印中断switch (src) case 4: Key_isr(); led_off();for(i=0;i<1000000;i+);led_on();for(i=0;i<1000000;i+); break; INTPND |= 1 << src;24修改两个Makefile复制工程中common文件夹中的Makefile文件到drivers->tao中, 在drivers-> tao下的Makefile中找到:“COBJS:=”改为:COBJS:= tao.o /即将tao.c编

16、译成tao.o 找到“LIB=” 改为:LIB= libtao.a /将tao.o生成库文件libtao.a 找到工程中的Makefile文件,在其中添加:LIBS += drivers/tao/libtao.a /将libtao.a 链接到工程中第3章 实验运行步骤3.1启动串口调试 双击桌面程序PUTTY.EXE,出现PUTTY Configuration 界面,选择Serial,将Speed改为115200,点击左边树形列表中的“Serial”, 将右边最后一项改为“None”, 点击“Open”按钮,出现串口调试界面,拨动实验箱电源开关,串口调试界面中有如下显示,表示串口通了,配置好了

17、。按电脑键盘的任意键,光标停在vivi处,等待eclipse程序运行。图2 PUTTY程序图3.2启动H-JTAG先确定实验箱电源打开,并口线连接好,单击“开始->所有程序->H-JTAG->H-JTAG”。图3 H-JTAG程序图33 运行Eclipse工程331创建Eclipse工程 双击桌面程序eclipse,选择工作空间(存放源代码及工程文件的地方D:eclipse_project_cyg),点击OK按钮。进入主界面后,单击FileNewC Project菜单项,eclipse将打开一个标准对话框,输入project_s3c2410,单击Finish即可创建一个新的工

18、程,建议对每个新建工程使用独立的文件夹。332创建Keil工程 点击Vision->Create/Update Vision Project,进入Vision Project界面,将Compiler设置为GCC,点击Next->S3C2410A->Finish,这时会打开Keil软件,关闭Keila工程。333 添加文件到工程 拷贝project_s3c2410(uart实验完成版)文件夹到eclipse project_s3c2410文件夹中,替换掉新建的project_s3c2410,在Eclipse软件下,按F5刷新工程目录。在include文件夹中新建tao文件夹,在

19、tao文件夹中新建tao.h文件,在tao.h中添加tao.h的代码;在drivers文件夹中新建tao文件夹,在tao文件夹中新建tao.c文件,在tao.c中添加tao.c的代码;在common文件夹里的main.c里添加代码;复制工程中common文件夹中的Makefile文件到drivers->tao中, 在drivers tao下的Makefile中找到:“COBJS:=”改为:COBJS:= tao.o /即将tao.c编译成tao.o 找到“LIB=” 改为:LIB= libtao.a /将tao.o生成库文件libtao.a 找到工程中的Makefile文件,在其中添加:

20、LIBS += drivers/tao/libtao.a /将libtao.a 链接到工程中34 调试工程点击RUN->Debug Configurations,出现Debug Configurations界面,右键单击Vision Project,点击New,单击Browse-> protect_s3c2410->OK;单击File的Browse,选中protect_s3c2410.uvproj->OK,点击Target Options按钮,选择Output ->Select Folder for Objects按钮,点击向上按钮,然后点击OK按钮;点击Debug标签,选择H-J

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论