嵌入式报告.docx

上传人:b****7 文档编号:10312559 上传时间:2023-02-10 格式:DOCX 页数:20 大小:658.26KB
下载 相关 举报
嵌入式报告.docx_第1页
第1页 / 共20页
嵌入式报告.docx_第2页
第2页 / 共20页
嵌入式报告.docx_第3页
第3页 / 共20页
嵌入式报告.docx_第4页
第4页 / 共20页
嵌入式报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

嵌入式报告.docx

《嵌入式报告.docx》由会员分享,可在线阅读,更多相关《嵌入式报告.docx(20页珍藏版)》请在冰豆网上搜索。

嵌入式报告.docx

嵌入式报告

武汉理工大学华夏学院

设计报告

课程名称ARM9嵌入式系统设计

题目基于ARM9的ADC驱动程序设计

 

专业___计算机____

班级______1131_______

学号___10210413129___

姓名______夏敏_____

成绩__________________

_______年_______月_______日

(注:

为设计报告完成的日期)

 

《嵌入式系统设计》考核要求

考核班级:

自动化1131-3、测控1131、电信1131-2

考核方式:

本课程在教学计划中定为考查课,由于这门课程是理论与实践相结合且实践性很强的课程,该课程的学习目标是培养学生嵌入式开发的基本能力,考核方式拟采用学生独立编写一个嵌入式应用程序的方式,以设计文档的形式提交。

考核题目:

基于ARM9的ADC驱动程序设计

通过S3C2410X(ARM9)的ADC采集实验箱电位器的值,旋转电位器时可在屏幕上看到当前采集值的变化。

考核要求:

Ø硬件平台为博创经典UP-NETARM2410实验箱(S3C2410处理器)。

Ø软件平台为eclipse+keil+PUTTY(串口调试助手)。

Ø一人一份纸质报告,报告内容不能雷同,雷同者全部以0分记载。

报告内容包括:

●实现的功能

●软硬件平台

●硬件原理分析及原理图

●硬件驱动的实现步骤及分析

●代码设计:

所有需要编写的代码(如adc.c、adc.h、main.c、Makefile等)、代码的注释,及整个工程树形结构的截图。

●运行及调试的步骤:

需要图文并茂,图必须是自己设计过程中的截图。

●总结体会:

具体学到了什么知识、在学习过程中的经验、体会。

成绩评定:

平时成绩50%+考核成绩50%

作品具体评分标准如下:

评定项目

评分成绩

1.实现ADC数据采集功能。

20分

2.问题分析正确、硬件驱动的实现步骤详细。

20分

3.代码设计正确、注释完整。

20分

4.运行及调试的步骤正确、详细、图文并茂。

20分

5.报告格式规范、条理清晰、语句通顺。

20分

总分

100分

设计报告书写格式与细则

(1)正文标题层次:

本设计报告层次分级一般不超过三级为宜,示例如下:

第一级(章)

第1章

第2章

第3章

……

第二级(条)

1.1

1.2

2.1

2.2

3.1

3.2

……

第三级(序)

1.1.1

1.1.2

1.2.1

1.2.2

2.1.1

2.1.2

2.2.1

2.2.2

3.1.1

3.1.2

3.2.1

3.2.2

……

第一级(章)题序和题名用黑体三号字,居中

第二级(目)题序和题名用黑体小四号字,左顶格

第三级(条)题序和题名用黑体小四号字,左顶格

正文内容用宋体五号字(英文用新罗马体),多倍行距1.25。

(2)表格每个表格都居中,且应有自己的表序与表题,表序与表题间空一格。

例如:

表1XXXX,且表序编号要连续,文中按表出现的顺序顺次编,如表1、表2、…,表题与表序应写在表格的上方正中处。

(3)插图插图都居中,图面要整齐、美观,插图应与正文呼应,不能脱节。

每幅插图应有图序与图题,图序与图题间空一格,

例如:

图1XXXX,且图序编号要连续,文中按图出现的顺序顺次编,如图1、图2、…,要放在插图下方居中处。

(4)页码:

从“第1章”开始编页码,封面(见“设计报告封面.doc”)、目录无页码。

每章另起一页。

目录

第1章功能及原理2

1.1实现的功能2

1.2软件硬件平台2

1.3硬件原理分析及原理图2

1.4硬件驱动的实现步骤及分析3

1.4.1muxed3

1.4.2clk3

1.4.3参数设置4

1.4.4功能4

第2章代码设计5

2.1相关寄存器定义5

2.2实现驱动6

2.3编写驱动8

2.4修改两个Makefile9

第3章实验运行步骤11

3.1启动串口调试11

3.2启动H-JTAG11

3.3运行Eclipse工程12

3.3.1创建Eclipse工程12

3.3.2创建Keil工程12

3.3.3添加文件到工程12

3.4调试工程13

第4章调试及结果分析15

4.1实验现象15

第五章心得体会17

第1章功能及原理

1.1实现的功能

通过S3C2410X(ARM9)的ADC采集实验箱电位器的值,旋转电位器时可在屏幕上看到当前采集值的变化。

中断功能:

按下中断按键触发中断,中断时屏幕上打印正在中断的提示。

1.2软件硬件平台

硬件平台为博创经典UP-NETARM2410实验箱(S3C2410处理器)。

软件平台为eclipse+keil+PUTTY(串口调试助手)。

1.3硬件原理分析及原理图

由原理图文件夹中第10章10-AD-DA-CAN文件中可得电位器原理图如下:

图1硬件原理图

S3C2410的ADC是8路复用的,开发平台上的3个ADC电位器对应AIN0、AIN1、AIN2,触摸屏电路使用AIN5和AIN7。

ADC电路的参考电压VERF固定为3.3V电压,输入电压范围是0到3.3V。

A/D转换器是模拟信号和CPU之间联系的接口,它将连续变化的模拟信号转换为数字信号,以供计算机和数字系统进行分析、处理、存储、控制和显示。

1.4硬件驱动的实现步骤及分析

1.4.1muxed

通过在09章IOports章节搜索AIN0、AIN1、AIN2,没有找到,因此,不是多功能引脚。

1.4.2clk

开启时钟

在07-clockpowermanagement一章中搜索ADC,发现

表1clockpowermanagement设置使能

设置为使能状态,CLKCON[15]=0b1。

时钟分频在16-ADC&touchscreen一章中的寄存器中配置,发现:

表2ADC&touchscreen寄存器配置

A/D转换器预分频器使能ADCCON[14]=0b1。

A/D转换器预分频器数值为256分频ADCCON[13:

6]=0xFF。

1.4.3参数设置

查看表2可知:

ADC通道选择:

输入通道选择AIN2,ADCCON[5:

3]=0b010。

模式选择:

模式选择为正常模式,ADCCON[2]=0b0。

设置启动AD转换的方式:

读启动,ADCCON[1]=0b1。

启动AD转换:

ADCCON[0]=0b1。

1.4.4功能

判断采样转换完成:

if(ADCCON[15]==0b1)则转换完成,可读取采样值,否则继续等。

读取采样值(整数):

data=ADCDAT0[0:

11]。

启动ADC:

tmp=ADCDAT0[0:

11]。

第2章代码设计

2.1相关寄存器定义

在工程中新建include文件夹,在include文件夹中新建adc文件夹,在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_read0(void);

intadc_read1(void);

intadc_read2(void);

voidadc_init(void);

表3相关寄存器定义

2.2实现驱动

在工程中新建drivers文件夹,在drivers文件夹中新建adc文件夹,在adc文件夹中新建adc.c文件,在adc.c中添加如下代码

#include"adc/adc.h"

voidadc_init(void)

{

//时钟配置,CLKCON[15]=0b1,表示使能

CLKCON|=0x1<<15;

//时钟分频ADCCON[14]=0b1,ADCCON[13:

6]=0xFF;

ADCCON|=0x1<<14;

ADCCON|=0xFF<<6;

//模式选择:

选择正常模式ADCCON[2]=0;

ADCCON&=~(0x1<<2);

//设置启动AD转换的方式:

读启动

ADCCON&=~(0x1<<1);

//启动AD转换

ADCCON|=0X1;

}

intadc_read2(void)

{

intdata;

//通道选择,选择通道2,ADCCON[5:

3]=010;

ADCCON&=~(0x7<<3);

ADCCON|=0x1<<4;

//启动AD转换

ADCCON|=0X1;

//判断采样转换完成

while(!

(ADCCON&(1<<15)));

data=ADCDAT0&0xFFF;

//启动AD转换ADCCON|=0X1;

returndata;

}

intadc_read0(void)

{

intdata;

//通道选择,选择通道0,ADCCON[5:

3]=000;

ADCCON&=~(0x7<<3);

//启动AD转换

ADCCON|=0X1;

//判断采样转换完成

while(!

(ADCCON&(1<<15)));

data=ADCDAT0&0xFFF;

//启动AD转换ADCCON|=0X1;

returndata;

}

intadc_read1(void)

{

intdata;

//通道选择,选择通道1,ADCCON[5:

3]=001;

ADCCON&=~(0x7<<3);

ADCCON|=0x1<<3;

//启动AD转换

ADCCON|=0X1;

//判断采样转换完成

while(!

(ADCCON&(1<<15)));

data=ADCDAT0&0xFFF;

//启动AD转换ADCCON|=0X1;

returndata;

}

2.3编写驱动

common文件夹->main.c,在main.c中添加:

#include"adc/adc.h"

#include"uart/uart.h"

#include"key/key.h"

intmain(void)

{

uart_init();

key_init();

//读写采样值

while

(1)

{inta,b,c;

adc_init();

b=adc_read1();

a=adc_read0();

c=adc_read2();

printf("通道1:

%d,通道2=%d,通道3=%d\n",a,b,c);

}

return0;

}

voiddo_irq(void)

{intsrc=INTOFFSET;

inti;

puts("计算机113110210413129夏敏");

switch(src){

case4:

key_isr();

led_off();

for(i=0;i<1000000;i++);

led_on();

for(i=0;i<1000000;i++);

break;}

}

2.4修改两个Makefile

复制工程中common文件夹中的Makefile文件到drivers->adc中,在drivers->adc下的Makefile中

找到:

“COBJS:

=”改为:

COBJS:

=adc.o//即将adc.c编译成adc.o

找到“LIB=”改为:

LIB=libadc.a//将adc.o生成库文件libadc.a

找到工程中的Makefile文件,在其中添加:

LIBS+=drivers/adc/libadc.a//将libadc.a链接到工程中

第3章实验运行步骤

3.1启动串口调试

双击桌面程序PUTTY.EXE,出现PUTTYConfiguration界面,选择Serial,将Speed改为115200,点击左边树形列表中的“Serial”,将右边最后一项改为“None”,点击“Open”按钮,出现串口调试界面,拨动实验箱电源开关,串口调试界面中有如下显示,表示串口通了,配置好了。

按电脑键盘的任意键,光标停在vivi处,等待eclipse程序运行。

图2PUTTY程序图

3.2启动H-JTAG

先确定实验箱电源打开,并口线连接好,单击“开始-->所有程序-->H-JTAG-->H-JTAG”。

可以自动检测到CPU类型,如下:

图3H-JTAG程序图

3.3运行Eclipse工程

3.3.1创建Eclipse工程

双击桌面程序eclipse,选择工作空间(存放源代码及工程文件的地方D:

\eclipse_project_cyg),点击OK按钮。

进入主界面后,单击File→New→CProject菜单项,eclipse将打开一个标准对话框,输入project_s3c2410,单击Finish即可创建一个新的工程,建议对每个新建工程使用独立的文件夹。

3.3.2创建Keil工程

点击μVision->Create/UpdateμVisionProject,进入μVisionProject界面,将Compiler设置为GCC,点击Next->S3C2410A->Finish,这时会打开Keil软件,关闭Keila工程。

3.3.3添加文件到工程

拷贝project_s3c2410文件夹到eclipseproject_s3c2410文件夹中,替换掉新建的project_s3c2410,在Eclipse软件下,按F5刷新工程目录。

在include文件夹中新建adc文件夹,在adc文件夹中新建adc.h文件,在adc.h中添加adc.h的代码;在drivers文件夹中新建adc文件夹,在adc文件夹中新建adc.c文件,在adc.c中添加adc.c的代码;在common文件夹里的main.c里添加代码;复制工程中common文件夹中的Makefile文件到drivers->adc中,在drivers→adc下的Makefile中找到:

“COBJS:

=”改为:

COBJS:

=adc.o//即将adc.c编译成adc.o找到“LIB=”改为:

LIB=libadc.a//将adc.o生成库文件libadc.a找到工程中的Makefile文件,在其中添加:

LIBS+=drivers/adc/libadc.a//将libadc.a链接到工程中

3.4调试工程

点击RUN-->DebugConfigurations…,出现DebugConfigurations界面,右键单击μVisionProject,点击New,单击Browse-->protect_s3c2410-->OK;单击File的Browse,选中protect_s3c2410.uvproj-->OK,点击TargetOptions按钮,选择Output-->SelectFolderforObjects按钮,点击向上按钮,然后点击OK按钮;点击Debug标签,选择H-JTAGARM,然后点击OK按钮,点击Debug按钮,开始调试程序。

再弹出几个请求确认界面点击Yes就好。

调试成功后出现Debug界面,点击绿色按钮击开始运行。

观察试验箱以及串口调试界面变化。

图4Eclipse程序图

图5程序调试图

 

第4章调试及结果分析

4.1实验现象

点击绿色三角按钮运行后,PUTTY界面连续读取并显示AIN0,AIN1,AIN2的数值,分别旋转3个电位器,串口调试助手屏幕上显示的数值也回发生变化。

按下中断按键触发中断,中断时三个LED灯闪烁一次,且屏幕上打印正在中断的提示,并停止继续读取。

再过一定的延时时间后,会继续读取并显示数值于屏幕上。

图6数据采集图

图7转动通道旋钮数据变化图

图8中断现象图

 

第五章心得体会

通过本次实验设计,我的实际操作能力和设计能力都得到了一定的提高,但理论与实践之间永远是存在着一定差距的,要把理论知识充分灵活地运用于实践是需要一定的实践经验和牢固的理论基础,希望以后能有更多这样的实践的机会。

经过这次作业让我们对嵌入式应用程序开发的理解更加的清楚了,嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。

因此可以这样理解上述三个面向的含义,即嵌入式系统是与应用紧密结合的,它具有很强的专用性。

几天的设计完成,实验是巩固ARM课程中所学的基本理论知识,在本次试验中运用到了之前所学的I/O口,串行以及中断实验的相关程序.在学习的过程中难免会遇到各种困难,在实验的过程中也是如此,但只要肯虚心请教,问题终会解决。

在这次试验编写程序时我学会了如何使用数据手册来查找相关信息,实验调试时,一直未出现在屏幕上看到当前采集值的变化,在其他同学的帮助下,逐步解决了问题,最终实现了其基础功能以及中断功能,通过本次课程,使我对ARM9嵌入式开发有了一定的掌握和理解,加深了前三次实验(I/O口,串行通信,中断)的了解,并且学习了adc相关知识.这次的设计,加深了我对嵌入式系统这门课程的理解和知识的掌握,使我开拓了研究思路,对这门学科有了更加深刻的认识,从而使得我能够克服种种困难,顺利完成此次设计报告的撰写,在此表示衷心的感谢。

通过本次学习,我再一次体会到嵌入式系统的强大。

丰富的库函数、强大的数据处理能力,出色的中断功能,友好的工作平台,这些优点都促使嵌入式系统在实际中的广泛应用,这更激发了我学习嵌入式系统的决心。

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1