1、 武汉理工大学华夏学院 设 计 报 告 课程名称 嵌入式技术 题 目 基于 ARM9 的数据采集程序设计 专 业 班 级 学 号 姓 名 成 绩 _ _2015_年 _ 月 _日 (注:为设计报告完成的日期) 目录 第 1章 功能及原理 .1 1.1 实现的功能 .1 1.2 软件硬件平台 .1 1.3 硬件原理分析及原理图 .1 1.4 硬件驱动的实现步骤及 分析 .1 第 2章 代码设计 .4 2.1 相关寄存器定义 .4 2.2 实现驱动 .4 2.3 编写驱动 .5 2.4 修改两 个 Makefile.6 第 3章 实验运行步骤 .8 3.1 启动串口调试 .8 3.2 运行 H-J
2、TAG.8 3.3 运行 Eclipse 工程 .9 3.4 调试工程 .9 第 4章 调试及结果分析 .11 4.1 实验现象 .11 4.2 总结体会 .12 1 第 1 章 功能及原理 1.1 实现的功能 通过 S3C2410X(ARM9)的 ADC 采集实验箱电位器的值,旋转电位 器时可在屏幕上看到当前采集值的变化。 中断功能:按下中断按键触发中断,中断时三个 LED 灯闪烁一次,且屏幕上打印正在中断的提示。 报警功能:设定一个临界值(如 500),当采集的值超过此临界值时,灯闪烁报警,三个电位器可与三个灯一一对应。 1.2 软件硬件平台 硬件平台为博创经典 UP-NETARM2410
3、 实验箱( S3C2410 处理器)。 软件平台为 eclipse+keil+PUTTY(串口调试助手)。 1.3 硬件原理分析及原理图 由底板文件夹中第 10 章 10-AD-DA-CAN 文件中可得电 位器原理图如下: 图 1 硬件原理图 S3C2410 的 ADC 是 8 路复用的,开发平台上的 3 个 ADC 电位器对应 AIN0-2,触摸屏电路使用 AIN5 和 AIN7。 ADC 电路的参考电压 VERF 固定为 3.3V 电压,输入电压范围是 0 到3.3V。 A/D 转换器是模拟信号和 CPU 之间联系的接口,它将连续变化的模拟信号转换为数字信号,以供计算机和数字系统进行分析、
4、处理、存储、控制和显示。 1.4 硬件驱动的实现步骤及分析 1.4.1 muxed 通过在 09 章 IO ports 章节搜索 AIN0、 AIN1、 AIN2,没 有找到,因此,不是多功能引2 脚。 1.4.2 clk 开启时钟 在 07-clock power management 一章中搜索 ADC,发现: 表 1 clock power management 设置使能 设置为使能状态, CLKCON15=0b1。 时钟分频 在 16-ADC void tao_init01(void); void tao_init02(void); void tao_init03(void); 表 3
5、 相关寄存器定义 2.2 实现驱动 在工程中新建 drivers 文件夹,在 drivers 文件夹中新建 tao 文件夹,在 tao 文件夹中新建 tao.c文件,在 tao.c 中添加如下代码: #include “tao/tao.h“ void tao_init01(void) CLKCON |= 0x1 main.c,在 main.c 中添加: 6 #include “tao/tao.h“ #include “uart/uart.h“ #include “key/key.h“ #include “gpio/led.h“ int main(void) uart_init(); /屏幕打印
6、驱动 led_init(); /led 灯驱动 key_init(); /中断驱动 int t1,t2,t3; while(1) /读写采样值 tao_init01(); t1=tao_read(); if(t1500) *(volatile unsigned int *)0x56000024) |= 0x1500) *(volatile unsigned int *)0x56000024) |= 0x1500) 7 *(volatile unsigned int *)0x56000024) |= 0x1tao 中, 在 drivers- tao 下的Makefile 中 找到:“ COBJS:=” 改为: 8 COBJS:= tao.o /即将 tao.c 编译成 tao.o 找到“ LIB=” 改为: LIB= libtao.a /将 tao.o 生成库文件 libtao.a 找到工程中的 Makefile 文件,在其中添加: LIBS += drivers/tao/libtao.a /将 libtao.a 链接到工程中