基于S3C2410的流水灯控制系统

  • 格式:doc
  • 大小:9.81 MB
  • 文档页数:22

电气与信息工程学院《嵌入式系统工程训练》说明书题目:基于S3C2410的流水灯控制系统作者:专业班级:指导教师:陈佳泉职称:讲师2017年1月13日摘要随着社会的发展,嵌入式在未来的应用会越来越广泛。

随着物联网的时代到来,电器将会与互联网,移动电话成为一体。

本实训项目是以嵌入式系统为目标的一次平台操作。

所谓嵌入式系统就是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,实用于应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

ARM嵌入式芯片是一种高性能、低功耗的RISC芯片,世界上几乎所有的主要半导体生产商都生产基于ARM体系机构的通用芯片,且基于ARM内核的嵌入式处理器已经成为市场主流。

而且Linux是免费发行的、快速高效的操作系统,在过去的几年中,基于开源组织的Linux嵌入式操作系统得到了长远的发展。

嵌入式Linux是按照嵌入式操作系统的要求设计的一种小型操作系统。

由一个内核以及一些根据需要进行定制的系统模块组成。

其内核很小,一般只有几百KB,即使加上其他必要的模块和应用程序,所需的存储空间也很小。

非常适合于移植到嵌入式系统中去,同时它还具有多任务多进程的系统特征。

本次设计以基于嵌入式的简单的流水灯的设计。

我们综合应用ARM嵌入式系统设计的相关专知识,搭建了一个基于S3C2410的硬件平台,在平台上编写出一个完整的流水灯控制功能的软件。

通过这次的课程设计,使我们基本了解了嵌入式的方法以及培养我们对嵌入式编程的兴趣,与此同时,我们还可以回顾一下C 的编程和汇编编程的基础。

并通过这个典型的嵌入式系统项目的设计与开发学习嵌入式系统的设计与开发流程。

为将来在嵌入式的学习和工作中做好准备。

关键词:流水灯,嵌入式,C 编程Water lamp,Embedded,C programming目录第1章系统功能简介 (1)1.1 ARM处理器 (1)1.1.1 ARM处理器特点 (1)1.1.2 ARM处理器体系结构 (1)1.2 S3C2410处理器 (2)1.2.1 S3C2410处理器规格 (2)1.2.2 S3C2410处理器功能 (2)1.3 ADS集成环境简介 (3)第2章电路设计 (4)第3章程序流程图及代码设计 (11)3.1 C程序流程图 (11)3.2 C程序程序代码 (12)3.2.1 C程序GPIO端口配置模块 (12)3.2.2 C程序LED灯状态配置模块 (12)3.2.3 C程序键值读取模块 (13)3.2.4 C程序工作模式模块 (13)3.3 汇编流程图 (15)3.4 汇编程序代码 (15)3.4.1 汇编程序GPIO端口配置模块 (15)3.4.2 汇编程序LED灯状态配置模块 (16)第4章总结 (18)参考文献 (19)第1章系统功能简介1.1ARM处理器ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。

过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine)。

ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。

其广泛地使用在许多嵌入式系统设计。

由于节能的特点,ARM处理器非常适用于行动通讯领域,符合其主要设计目标为低耗电的特性。

1.1.1 ARM处理器特点ARM处理器的三大特点是:耗电少功能强、16位/32位双指令集和合作伙伴众多。

体积小、低功耗、低成本、高性能;支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定。

在今日,ARM家族占了所有32位嵌入式处理器75%的比例,使它成为占全世界最多数的32位架构之一。

ARM处理器可以在很多消费性电子产品上看到,从可携式装置(PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机)到电脑外设(硬盘、桌上型路由器)甚至在导弹的弹载计算机等军用设施中都有他的存在。

在此还有一些基于ARM设计的派生产品,重要产品还包括Marvell 的XScale架构和德州仪器的OMAP系列。

1.1.2 ARM处理器体系结构1. CISC(Complex Instruction Set Computer,复杂指令集计算机)在CISC指令集的各种指令中,大约有20%的指令会被反复使用,占整个程序代码的80%。

而余下的指令却不经常使用,在程序设计中只占20%。

2. RISC(Reduced Instruction Set Computer,精简指令集计算机)RISC结构优先选取使用频最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻址方式种类减少;以控制逻辑为主,不用或少用微码控制等3.寄存器结构ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:(1)31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。

(2)6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,只使用了其中的一部分。

4.指令结构ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb 指令集。

其中,ARM指令为32位的长度,Thumb指令为16位长度。

Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。

1.2S3C2410处理器S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用FBGA 封装,采用0.18um制造工艺的32位微控制器。

该处理器拥有:独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2个USB主机,1个USB设备,SD 主机和MMC接口,2路SPI。

S3C2410处理器最高可运行在203MHz。

1.2.1 S3C2410处理器规格核心板的尺寸仅相当于名片的2/3大小。

开发商可以充分发挥想象力,设计制造出小体积,高性能的嵌入式应用产品。

芯片封装:272-FBGA封装。

主要有两种型号:S3C2410A-20、S3C2410A-26。

前者主频最高为200MHZ、后者主频最高为266MHZ。

1.2.2 S3C2410处理器功能(1)内部1.8V,存储器3.3V,外部I/O3.3V,16KB数据Cache,16KB指令Cache,MMU。

(2)内置外部存储器控制器(SDRAM控制和芯片选择逻辑)。

(3)LCD控制器,一个LCD专业DMA。

(4)4个带外部请求线的DMA。

(5)3个通用异步串行端口(IrDA1.0,16-Byte Tx FIFO,16-Byte Rx FIFO),2通道SPI。

(6)一个多主I2C总线,一个I2S总线控制器。

(7)SD主接口版本1.0和多媒体卡协议版本2.11兼容。

(8)两个USB HOST,一个USB DEVICE(VER1.1)。

(9)4个PWM定时器和一个内部定时器。

(10)看门狗定时器。

117个通用I/O。

(11)56个中断源,24个外部中断。

(12)电源控制模式:标准、慢速、休眠、掉电。

(13)8通道10位ADC和触摸屏接口。

(14)带日历功能的实时时钟,芯片内置PLL。

(15)设计用于手持设备和通用嵌入式系统。

(16) 16/32位RISC体系结构,使用ARM920T CPU核的强大指令集。

(17)带MMU的先进的体系结构支持WinCE、EPOC32、Linux。

1.3ADS集成环境简介ADS是ARM公司的集成开发环境软件,他的功能非常强大。

他的前身是SDT,SDT是ARM公司几年前的开发环境软件,目前SDT早已经不再升级。

ADS包括了四个模块分别是:SIMULATOR;C编译器;实时调试器;应用函数库。

ADS的编译器调试器较SDT都有了非常大的改观, ADS1.2提供完整WINDOWS 界面开发环境。

C编译器效率极高,支持C以及C++,使工程师可以很方便的使用C语言进行开发。

提供软件模拟仿真功能,使没有Emulators的学习者也能够熟悉ARM的指令系统。

配合FFT-ICE使用,ADS1.2提供强大的实时调试跟踪功能,片内运行情况尽在掌握。

ADS1.2需要硬件支持才能发挥强大功能。

目前支持的硬件调试器有Multi-ICE以及兼容Multi-ICE的调试工具如FFT-ICE。

ADS包括三种调试器:(1)AXD(ARM eXtended Debugger):ARM扩展调试器(2)armsd(ARM Symbolic Debugger):ARM 符号调试器。

(3)与老版本兼容的Windows或Unix下的ARM调试工具,ADW/ADU其中AXD 不仅拥有低版本ARM调试器的所有功能,还新添了图形用户界面,更方便的视窗管理数据显示,格式化和编辑以及全套的命令行界面。

该产品还包括RealMonitor™(可以在前台调试的同时断点续存并且在不中断应用的情况下读写内存跟踪调试工具)。

第2章电路设计硬件电路由S3C2410主芯片、电源电路部分、按键电路部分、发光二极管电路部分、时钟电路部分和NOR FLASH等部分组成,以下是各个电路部分的具体情况。

(1)S3C2410主芯片如图4-1所示。

图4-1控制整个系统的正确运行(2)按键电路部分如图4-2所示。

图4-2 提供按键支持(3) 发光二极管电路部分如图4-3所示。

图4-3 显示输出状态(4) 时钟电路部分如图4-4所示。

图4-4 提供时钟支持(5) 电源电路部分如图4-5所示。

图4-5为系统提供稳定的电源(6) NOR FLASH部分如图4-6所示。

图4-6 启动方式(8)以上硬件电路所需元件清单如表1所示。

表1 元件清单第3章程序流程图及代码设计C程序部分,主要由以下4个模块成:GPIO 端口配置模块、LED灯状态配置模块、键值读取模块、工作模式模块,下面是各个模块的具体情况。

3.2 C程序程序代码3.2.1 C程序GPIO端口配置模块void gpio_init(void) {rGPECON = rGPECON&~( ( 3<<11 * 2) | ( 3<<12 * 2) )| ( ( 1<<11 * 2) | ( 1<<12 * 2) ); rGPHCON = rGPHCON&~( ( 3<<6 * 2) | ( 3<<4 * 2) )| ( ( 1<<6 * 2) | ( 1<<4 * 2) ); rGPGCON = rGPGCON &~(0xf<<4); rGPGCON = rGPGCON | (0xa<<4); rGPGCON = rGPGCON &~(3<<6 * 2); rGPGCON = rGPGCON | (1<<6 * 2);}3.2.2 C程序LED灯状态配置模块V oid LED0_Off(void) {rGPEDAT = rGPEDAT | (1 << 11); }V oid LED1_Off(void) {rGPEDAT = rGPEDAT | (1 << 12); }void LED2_Off(void) {rGPHDAT = rGPHDAT | (1 << 4); }void LED3_Off(void) {rGPHDAT = rGPHDAT | (1 << 6); }void LED0_On(void) {rGPEDAT = rGPEDAT &~(1 << 11); }void LED1_On(void) {rGPEDAT = rGPEDAT &~(1 << 12); }void LED2_On(void) {rGPHDAT = rGPHDAT &~(1 << 4); }void LED3_On(void) {rGPHDAT = rGPHDAT &~(1 << 6); }3.2.3 C程序键值读取模块int keyScan(void) {int keyValue=0,tValue;tValue = rGPGDAT;if(!(tValue&(1<<3)))keyValue = 1;else if(!(tValue&(1<<2)))keyValue = 2;return keyValue;}3.2.4 C程序工作模式模块void MODE1(){ switch(conter1){case 0: LEDALL_off();LED0_On();Delay(10000);break;case 1: LEDALL_off();LED1_On();Delay(10000);break;case 2: LEDALL_off();LED2_On();Delay(10000);break;case 3: LEDALL_off();LED3_On();Delay(10000);break;}conter1++;if(conter1==4) conter1=0;}void MODE2(){ switch(conter2){case 0: LEDALL_off();LED0_On();LED1_On();Delay(10000);break;case 1: LEDALL_off();LED1_On();LED2_On();Delay(10000);break;case 2: LEDALL_off();LED2_On();LED3_On();Delay(10000);break;case 3: LEDALL_off();LED3_On();LED0_On();Delay(10000);break;}conter2++;if(conter2==4) conter2=0;}以上是C程序部分,而汇编程序部分,则主要由以下2个模块成:GPIO端口配置模块、LED灯状态配置模块,下面分别设计各个模块。