您的当前位置:首页正文

嵌入式课程设计报告

来源:个人技术集锦


课 程 设 计

课程名称 嵌入式系统课程设计与实践 题目名称 嵌入式最小系统设计 学生学院 自动化学院 专业班级 电子(2)班 学 号 3110001575 学生姓名 何仁杰 指导教师 尹 明

2013 年 5 月30日

广东工业大学课程设计任务书

题目名称 学生学院 专业班级 姓 名 学 号

嵌入式最小系统设计 自动化学院 电子(2)班 何仁杰 尹 明

一、课程设计的内容

学习使用Protel绘制嵌入式最小系统原理图以及PCB图,最终制作基于ARM7处理器的嵌入式最小系统的电路板;

学习LPC2000系列 ARM处理器的启动流程,学习嵌入式系统硬件设计(最小系统),学习嵌入式系统应用程序框架,学习在ARM7处理器上移植uC/OS-II操作系统的流程及设计流水灯应用程序;

设计实现一个基于LPC2000系列 ARM处理器的最小系统,完成操作系统移植,设计流水灯程序。鼓励在完成基本功能的基础上,自由发挥完成其它功能;

二、课程设计的要求与数据

熟悉LPC2000系列 ARM处理器的启动流程,掌握嵌入式系统硬件设计(最小系统),掌握嵌入式系统应用程序设计,掌握在ARM7处理器上移植uC/OS-II操作系统的流程及设计流水灯应用程序。

1完成嵌入式系统最小系统硬件设计,并制作硬件平台。

2 在无操作系统情况下,设计流水灯应用程序,并在前述硬件平台上调试、运行。

3 移植UC/OS-II操作系统,并设计流水灯应用程序,在前述硬件平台上调试、运行。

三、课程设计应完成的工作

1 嵌入式系统最小系统硬件设计,并调试验证。 2 设计流水灯应用程序,调试、运行。

3 移植uC/OS-II操作系统,设计流水灯应用程序,调试、运行。

II

四、课程设计进程安排

序号 1 2 3 4 5 6 7 8 设计各阶段内容 选择设计任务,准备相关资料 设计硬件平台,完成制作、调试验证 设计任务实现框架确定、程序流程图的设计 按照设计的框架和流程图编写具体的实现程序(结合调试) 调试程序并对故障进行修改排除,完成设计任务 移植操作系统uC/OS-II,完成应用程序设计 进行演示验收 完成课程设计报告 地点 实2-212 实验室或宿舍 实2-212 实2-212 实2-212 实验室或宿舍 实2-212 实验室或宿舍 起止日期 5.13-5.15 5.16-5.19 5.20-5.21 5.22 5.23 5.23 5.24 5.26-5.29 五、应收集的资料及主要参考文献 1.资料

《LPC2210使用指南》(LPC2210-user_cn.pdf) LPC2131板原理图(Z2418PSCH.pdf) 《ADS开发者指南》(ADS_DeveloperGuide_D.pdf)

2. 参考文献

[1]王志英.嵌入式系统原理与设计.北京:高等教育出版社,2011 [2]何小平.选择适合ARM的嵌入式操作系统[J].BMRfech Inc.2003

[3]马忠梅,马广云,徐英慧,田译.ARM嵌入式处理结构与应用基础[M].北京航空航天大学出版社.2002

[4]田泽.嵌入式系统开发与应用[M].北京航空航天大学出版社.2005 [5]田泽.嵌入式系统开发与应用实验教程[M].北京航空航天大学出版社.2004

发出任务书日期: 年 月 日 指导教师签名:

计划完成日期: 年 月 日 基层教学单位责任人签章:

主管院长签章:

III

目录

摘 要 ............................................................................................................................................................................ 2 1、设计任务目的及要求 .................................................................................................................................................. 3 1.1、设计任务 ............................................................................................................................. 错误!未定义书签。 1.2、设计目的及要求 ................................................................................................................. 错误!未定义书签。 2、原理与模块介绍 .......................................................................................................................................................... 3 2.1、嵌入式最小系统概述 ........................................................................................................................................... 4 2.1.1、嵌入式最小系统的定义 ................................................................................................................................ 4 2.1.2、嵌入式最小系统的组成 ................................................................................................................................ 4 2.2、最小系统模块介绍 ............................................................................................................................................... 4 2.2.1、MCU-ARM7LPC2131芯片 .......................................................................................................................... 4 2.2.2、电源模块 ........................................................................................................................................................ 5 2.2.3、时钟模块-晶振电路 ....................................................................................................................................... 6 2.2.4、复位电路 ........................................................................................................................................................ 6 2.2.5、串口电路 ........................................................................................................................................................ 7 2.2.6、蜂鸣器驱动电路 ............................................................................................................................................ 7 2.2.7、LED灯电路 ................................................................................................................................................... 8 2.3、UC/OS-II操作系统移植原理 ............................................................................................................................... 9 2.3.1、uC/OS-II操作系统移植所需条件 ................................................................................................................ 9 2.3.2、uC/OS-II移植所需文件 ................................................................................................................................ 9 2.4、印制电路板的制作流程 ....................................................................................................................................... 9 3、设计方案 .................................................................................................................................................................... 10 3.1、硬件设计 ............................................................................................................................................................. 10 3.1.1、硬件设计思想及总体框图 .......................................................................................................................... 10 3.1.2、硬件设计步骤 .............................................................................................................................................. 10 3.1.3、硬件原理图及PCB图 ................................................................................................................................. 11 3.2、软件设计 ............................................................................................................................................................. 12 3.2.1、软件设计思想及流程图 .............................................................................................................................. 12 3.2.2、uC/OS-II操作系统移植步骤 ...................................................................................................................... 13 4、实验结果与数据处理 ................................................................................................................................................ 13 4.1、测试步骤 ............................................................................................................................................................. 13 4.1.1、硬件测试 ...................................................................................................................................................... 13 4.1.2、软件测试 ...................................................................................................................................................... 13 4.2、测试结果 ............................................................................................................................................................. 14 4.2.1、硬件测试结果 .............................................................................................................................................. 14 4.2.1、软件测试结果 .............................................................................................................................................. 14 5、结论与问题讨论 ........................................................................................................................................................ 15 5.1、遇到的问题及解决办法 ..................................................................................................................................... 15 5.2、心得体会 ............................................................................................................................................................. 15

1

6、参考文献 .................................................................................................................................................................... 15 7、附录 C语言源程序 .................................................................................................................................................. 15

摘 要

随着计算机技术和微电子技术的迅速发展,现代社会新技术层出不穷,在电子领域尤其是在自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,将很快被嵌入式系统这个后起之秀超越并取代。本设计基于ARM7处理器,搭建一个最小嵌入式系统硬件平台,通过编写C语言程序,实现流水灯功能。最后进行uC/OS-II操作系统的移植,形成具有操作系统的流水灯。本文主要介绍基于ARM7TDMI内核的LPC2136微处理器设计制作ARM7嵌入式最小系统,并且在ARM7处理器上移植uC/OS-II操作系统,以及设计流水灯应用程序。ARM最小系统的硬件系统包括LPC2136芯片、电源模块,JTAG模块,流水灯模块,按键、蜂鸣器模块、复位电路模块、时钟模块。在软件设计方面,尝试用硬件和软件协同设计的方法,通过移植uC/OS-II操作系统,实现多任务功能。利用uC/OS-II操作系统的工程模板建立新工程,在main函数中编写应用程序。本次编写的程序功能是使得流水灯按一定规律一直流动。先利用protel制作原理图和PCB图,再焊接硬件电路,然后在ADS1.2调试软件上进行调试,并把程序烧写到芯片上。

关键词:ARM7LPC2131 JTAG下载 PCB uC/OS-II移植

2

1、设计任务目的及要求

1.1设计内容

学习LPC2000系列 ARM处理器的启动流程,学习嵌入式系统硬件设计(最小系统),学习嵌入式系统应用程序框架,学习在ARM7处理器上移植uC/OS-II操作系统的流程及设计流水灯应用程序。设计实现一个基于LPC2136系列 ARM处理器的最小系统,焊接PCB实验板,完成操作系统移植,设计流水灯程序。

(1)、硬件方面

○1、运用Protel 99 SE软件进行ARM7 LPC2131最小系统电路原理图及PCB板图的绘制完成电路板的印制;

2、在印制电路板上,焊件元器件,搭建ARM7 LPC2131最小系统硬件平台,并进行调○

试,以完成流水灯的设计;

(2)、软件方面

○1、设计相应的流水灯程序,并在已搭建好的硬件平台上调试、运行;

2、学习在ARM7处理器上移植uC/OS-II操作系统的流程,移植UC/OS-II操作系统,○

设计相应的流水灯应用程序; 1.2设计目的要求

熟悉LPC2000系列 ARM处理器的启动流程,掌握嵌入式系统硬件设计(最小系统),掌握嵌入式系统应用程序设计,掌握在ARM7处理器上移植uC/OS-II操作系统的流程及设计流水灯应用程序。

1完成嵌入式系统最小系统硬件设计,并制作硬件平台。

2 在无操作系统情况下,设计流水灯应用程序,并在前述硬件平台上调试、运行。 3 移植UC/OS-II操作系统,并设计流水灯应用程序,在前述硬件平台上调试、运行。

3

2、原理与模块介绍

2.1、嵌入式最小系统概述 2.1.1、嵌入式最小系统的定义

实际应用为核心,对功能、可靠性、成本、体积、功耗有严格要求的专业计算机系统。随着嵌入式系统相关技术的迅速发展,嵌入式系统功能越来越强,应用接口更加丰富,根据实际应用的需要设计出特定的嵌入式最小系统和应用系统,是嵌入式系统设计人员应具备的能力,由于ARM嵌入式体系的结构的一致性以及外围电路的通用性,采用ARM内核的嵌入式最小系统的设计原则和设计方法基本相同。

2.1.2、嵌入式最小系统的组成

一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成。一个嵌入式最小系统则是在一片嵌入式微处理器基础上添加供电系统、时钟系统、调试测试接口、复位电路及配置电路。

2.2、最小系统模块介绍

2.2.1、MCU-ARM7LPC2131芯片 (1)、ARM7LPC2136简介

ARM7LPC2131微处理器为低功耗的32位精简指令集(RISC)处理器,主要应用在工业控制、Internet设备、网络和调制调节器设备、移动电话等多种多媒体和嵌入式应用。

4

(2)、ARM7LPC2136芯片引脚图

2.2.2、电源模块

要使ARM最小系统工作就必须有电源,电源电路中使用了大量的去耦电容,用于滤除交流成分,使输出的直流电源更平滑。同时,每个芯片的电源引脚和地之间都连接了这样的去耦电容,以防止电源噪声影响元件正常工作。该最小系统的电源模块原理图如下图所示:

原理说明:LPC2136微控制器的内核和I/O使用同一电源电压,只需要单一电源3.3V供电,由CON2端口输入5V电压,经过两个电容的滤波,然后通过SPX1117M-3.3将电源稳压至3.3V。LPC2136具有独立的模拟电源引脚,为了降低噪声和出错几率,模拟电源与数字电源应该隔离,图中L1和L2用于电源隔离的元件。

5

2.2.3、时钟模块-晶振电路

晶振电路为微处理器及其他电路提供工作时钟,是系统必须的重要电路。本系统用一个晶振电路分别为微处理器及其他电路提供工作时钟,采用12MHz的晶振作为主时钟源。器电路原理图如下所示:

原理说明:使用了外部11.0592MHz晶振,使串口波特率更精确,同时能够支持LPC2136微控制器芯片内部的PLL功能及ISP功能。

2.2.4、复位电路

由于ARM芯片的高速、低功耗、低工作电压导致其噪声容限低,对电压的波纹、瞬态响应性能,时钟源的稳定性、电源监控可靠性等诸多方面也提出了更高的要求,且在最小系统中建立完善的、有效地唤醒机制是必须的,这将从硬件上保证系统不会瘫痪。所以在应用系统中,复位电路主要完成系统的上电复位和系统在运行时用户的按键复位功能。其电路原理图如下所示:

原理:采用最常见的低电平下拉电路,从而使得上电复位以及手动复位更稳定。上电前电容里的电荷放光,上电瞬间,电源通过电阻向电容充电,在充电过程中,RESET的电压慢慢上升,对外部电路进行低电平复位,当RESET上升到复位高电平时,外部系统开始工作。

6

2.2.5、串口电路

UART通用异步收发器,是处理器总线与串行线接口的外围设备。本系统使用MAX3221电平转换电路,串行接口电路如图所示:

原理:采用ARM公司提出的标准20脚JTAG仿真调试接口,JTAG信号的定义及与LPC2136的连接。

2.2.6、蜂鸣器驱动电路

由于ARM微处理器的引脚能提供的电流较小,但蜂鸣器的工作电流远远大于微处理器的引脚能提供的电流。所以要驱动蜂鸣器,必须运用放大电路对ARM微处理器的输出信号进行放大。本电路采用NPN的9014或8050型三极管来对ARM微处理器的输出信号进行放大,其电路原理图如下所示:

原理:蜂鸣器使用PNP三极管进行驱动控制,当P0.7控制电平输出0时,三极管导通,蜂鸣器蜂鸣;当P0.7控制电平输出1时,三极管截止,蜂鸣器停止蜂鸣。

7

2.2.7、LED灯电路

在实验中运用LED功能时,可以利用相应软件程序进行编程,调试运行后的发出的AXD调试命令可让LED实现某种具体功能,由于LED灯一端接了高电平VDD,所以要加上一个470Ω限流电阻,LED电路原理图如下所示:

原理:8个独立的发光二极管LED1~LED8,分别由P1.18~P1.25输出控制,输出1时对应的LED熄灭,输出0时对应的LED点亮。

2.2.8、按键电路

8

2.3、uC/OS-II操作系统移植原理 2.3.1、uC/OS-II操作系统移植所需条件

UCOS-II是一个完整的、可移植、可固化、可剪裁的占先式实时多任务内核。它用ANSI C语言编写,包含一小部分汇编代码,使之可以供不同架构的微处理器使用。并且当目标处理器满足一下条件的时候就可以进行移植: (1)、处理器的 C 编译器能产生可重入代码; (2)、用 C 语言就可以打开和关闭中断; (3)、处理器支持中断并且能产生定时中断; (4)、处理器支持容纳一定量数据的硬件堆栈;

(5)、处理器有将堆栈指针和其他 CPU 寄存器读出和存储到堆栈或内存中的指令; 2.3.2、uC/OS-II移植所需文件

(1)、OS_CPU.H(C语言头文件) (2)、OS_CPU_C.C(C程序源文件) (3)、OS_CPU_A.ASM(汇编程序源文件) 2.4、印制电路板的制作流程

(1)、设计:运用Protel 99 SE软件,把已知的电路原理图绘制成PCB; (2)、准备覆铜板:将单面或者是双面的覆铜板表面用砂纸打磨干净;

(3)、转印图形:将绘制好的PCB布线图(包括焊盘与导线)转印(或描绘)到覆铜板上;

(4)、腐蚀:将转印好的覆铜板放到腐蚀液(三氯化铁水溶液)中腐蚀,留下覆铜板上的焊盘与导线,去除多余部分的铜箔;

(5)、钻孔:将PCB板钻孔,插装焊接元器件,孔径要根据元器件管脚的直径来确定; (6)、表面处理:用0号砂纸打磨掉剩余铜板上的油墨; (7)、涂上助焊剂;

9

3、设计方案

3.1、硬件设计

3.1.1、硬件设计思想及总体框图

电源 复位电路 LPC2136 时钟电路 LED流水灯 蜂鸣器电路 ARM7TDMI-s JTAG接口 独立按键

本最小系统设计采用LPC2136核心芯片,LPC2136的内核是ARM7TDMI-S核,32位微处理器,外接复位、时钟、JTAG接口、LED流水灯、蜂鸣器、独立按键电路模块,通过软件程序,芯片控制外设电路模块工作。

3.1.2、硬件设计步骤

10

3.1.3、硬件原理图及PCB图

11

3.2、软件设计

3.2.1、软件设计思想及流程图

开始 函数初始化、选择GPIO 设置引脚高电平 LED熄灭 软件延时 设置引脚低电平 LED点亮 软件延时 复位 循环点亮 实现流水灯 结束

说明:首先在无操作系统下,设计应用程序,用GPIO端口作为输出端口来控制LED灯,当对应端口输出低电平时LED亮,当对应端口输出高电平时LED灯灭,这样就实现了LED灯的点亮工作,要使对应端口输出高电平或低电平,就需要通过软件将该GPIO端口在IOSET上的对应位置1或0;从而实现流水灯循环点亮。

12

3.2.2、uC/OS-II操作系统移植步骤

(1)、连接EasyJTAG仿真器和MagicARM2136 ,然后安装EasyJTAG仿真器驱动;

(2)、增加LPC2136专用工程模版;

(3)、建立一个项目目录uCOS-II,添加uC/OS2.52 源代码和移植代码。将移植的PC

服器代码ARM_Pc复制到项目目录uCOS-II下;

(4)、将uC/2.52源代码Source(目录)复制到项目目录下;

(5)、启动ADS1.2,使用ARM Executable Image for UCOSII(for MaficArm2136)工

程模版建立一个工程,工程储存在uCOS-II目录下;

(6)、编写实验程序;

(7)、选用DebugInExRam 生成目标;

(8)、启动AXD进行JTAG仿真调试,全速运行程序;

4、实验结果与数据处理

4.1、测试步骤 4.1.1、硬件测试

在进行硬件测试时,进行单元测试,测试电源电路、晶振电路等即可:

(1)、在protel上设计原理图,并生成PCB,进行布线工作; (2)、热转印,制作电路板;

(3)、硬件检测:完成PCB板的制作,在焊接电路元件时,分模块焊接并一边焊接一

边检查,首先焊接电源部分并完成检测。全部焊接完成后,通电检测各个引脚电压等是否正常。

4.1.2、软件测试

(1)、增加一个LPC2131专用工程模板,建立test.C源文件; (2)、编写流水灯源程序;

(3)、设置编译链接控制选项,编译链接工程;

(4)、启动AXD进行软件仿真调试,选用DebugInExRam 生成目标; (5)、启动AXD进行JTAG仿真调试,全速运行程序; (6)、观察电路板上LED灯的显示情况以及蜂鸣器是否蜂鸣;

13

4.2、测试结果 4.2.1、硬件测试结果

插上电源后,电源灯亮,证明电源电路无误。但由于无制作经验,在制作PCB板时,焊盘直径设置较小,打孔之后焊盘被打孔针打磨掉,不能上焊锡,以至于在电路板上出现了许多虚焊点。其次,电路板的铜导线由于腐蚀过度以及转印时温度不高,电路板上存在许多断路。

4.2.1、软件测试结果

(1)、程序的main函数如下图所示

(2)、对程序进行编译,其编译结果如下图所示

(3)、由于电路板问题繁多,无法下载到电路板上进行软硬件集成调试。

14

5、结论与问题讨论

5.1、遇到的问题及解决办法

虽然最后没能实现一些预期的功能。但在课程设计过程中还是学到了许多东西。在实验过程中说实话会碰到很多问题,很多时候因为一点小问题,比如说焊线出现虚焊的情况,没接电源,或者是改了代码之后忘了改引脚等,从而导致出现问题而浪费很多时间,很多其实是可以避免的。这也从侧面映衬出了细心的重要性。 5.2、心得体会

虽然经过我次修改和处理,该设计任然存在许多为能实现的拓展功能。但在设计过程中还是锻炼了自己的焊接能力,编程能力。因为实验过程中经常会沮丧与急躁,每次都想赶快调好,但是越急躁越是没有进展,每次在自己静下心来之后一下就找出了问题的所在。正所谓心急吃不了热豆腐,耐心真的是非常重要的。在实验中尽管会遇到挫折,会沮丧失望,但是不到最后一定不要放弃,只要坚持不懈的做下去,最后总会有收获的。

6、参考文献

[1]王志英.嵌入式系统原理与设计.北京:高等教育出版社,2011 [2]何小平.选择适合ARM的嵌入式操作系统[J].BMRfech Inc.2003

[3]马忠梅,马广云,徐英慧,田译.ARM嵌入式处理结构与应用基础[M].北京航空航天大学出版社.2002

[4]田泽.嵌入式系统开发与应用[M].北京航空航天大学出版社.2005 [5]田泽.嵌入式系统开发与应用实验教程[M].北京航空航天大学出版社.2004

7、附录 C语言源程序

#include \"config.h\" #include \"stdlib.h\"

#define BEEPCON 1<<7 #define LEDCON 0x03fc0000 #define key 1<<17

const uint32 data[10]={0xf004ffff,0xf008ffff,0xf010ffff,0xf020ffff,0xf040ffff, 0xf080ffff,0xf100ffff,0xf200ffff,0xf03cffff,0xf3c0ffff};

15

#define TaskStkLengh 100 void Task0(void *pdata); OS_STK TaskStk0 [TaskStkLengh]; void DelayNS(uint32 dly) { uint32 i;

for(; dly>0; dly--) {

for(i=0; i<5000; i++); } }

void CONTROL()

{ uint8 j=0; PINSEL0=0X00000000;

if((IO0PIN&key)!=0) //当按键有按下的时候,LED1~LED8顺序点亮熄灭{

for(j=0;j<8;j++) {

IO1CLR=data[j]; DelayNS(50); IO1SET=0xffffffff; } }

else //当按键没有按下时,蜂鸣器响

{

IO0CLR= BEEPCON

} }

int main (void) {

OSInit ();

16

OSTaskCreate (Task0,(void *)0, &TaskStk0[TaskStkLengh - 1], 2); OSStart (); return 0; }

void Task0 (void *pdata) {

pdata = pdata; TargetInit (); IO1DIR=LEDCON; while (1) {

CONTROL(); } }

#include \"config.h\"

/**************************************************************************** * 名 称:DelayNS() * 功 能:长软件延时。 * 入口参数:dly 延时参数,值越大,延时越久 * 出口参数:无

****************************************************************************/ void DelayNS(uint32 dly) {

uint32 i;

for(; dly>0; dly--) {

for(i=0; i<5000; i++); } }

/**************************************************************************** 流水灯花样,低电平亮, p2[28:31]控制LED1~LED4

****************************************************************************/

const uint32 LED_TBL[14]={

0x0,0xf, //全部灭,再全部亮 0x1,0x2,0x4,0x8, //依次逐个点亮 0x1,0x3,0x7,0xf, //依次逐个叠加 0xf,0xe,0xc,0x8 // 依次逐个递减

17

};

/*const uint32 LED_TBL[14]={ 0xf,0x0,

0xe,0xd,0xb,0x7, 0xe,0xc,0x8,0x0, 0x0,0x1,0x3,0x7 };*/

int main(void) { uint32 i;

PINSEL0 = 0x00000000; IO2DIR = 0xf0000000;

while(1) {

for(i=0;i<14;i++) {

/* IO2PIN=LED_TBL[i]<<28;*/ IO2SET =~(LED_TBL[i]<<28) ; DelayNS(10);

IO2CLR =(LED_TBL[i]<<28); DelayNS(10); } }

return(0); }

// 设置管脚连接GPIO // 设置I/O为输出 // // 18

因篇幅问题不能全部显示,请点此查看更多更全内容