ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:246.22KB ,
资源ID:21412859      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21412859.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(整理嵌入式系统设计实训报告Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

整理嵌入式系统设计实训报告Word格式文档下载.docx

1、bmp2h。exe软件进行图片转换 CodeWarrior for ARM Developer Suite软件四、实训设计方案(包括项目功能需求分析,方案设计,完成时间规划)需求分析:在上世纪末本世纪初,电子相册呈现迅速发展的势头,普及型数码相机的分辨率由200万象素增长到现在的800-1500万象素,价格也由300美元左右下降到现在的120美元左右。随着数码相机的日益普及,作为一种以数字照片的保存、回放和浏览为核心功能的产品电子相册自然迎合了消费者的需求。方案设计: 软件设计:代码包含2个模块,LCD模块包含两个文件,进行图片的显示与编辑;Timer模块包含6个文件,其中timer.c和ti

2、mer。h文件完成定时器的初始化,interrupt。h和interrupt.c文件完成定时器中断函数的初始化,isrservice。h和isrservice。c文件完成定时器中断处理,pic。c和pic.h等文件是由图片生产的C语言数组文件 硬件方面选择了S3C2440为核心的架构。基于ARM的微处理器具有低功耗、低成本、高性能等特点,ARM采用RISC(精简指令集计算机)架构和流水线结构,使用了大量的寄存器,具有极高的工作效率。其中,RISC架构具有如下特点:固定长度的指令格式,指令归整、简单,基本寻址方式只有23种,使用单周期指令,便于流水线操作.因此选择此硬件方案的优势有如下:(1)系

3、统芯片功能强大,实现的功能多,对于新的多媒体格式支持性好,只需要安装更新的软件;(2)硬件电路简单,可采用标准电路,不需耗费过多的资源(人力,资金等);(3)可以在硬件上增加模块,留作二次开发使用,极为方便;(4)S3C2440是一个比较成熟的芯片,技术积累齐全;(5)S3C2440支持丰富的存储卡接口。完成时间规划:第一天分析实训项目实现过程,完成软件方面内容,编写代码。 第二天实现硬件分析,完成硬件连接,对项目进行测试。 第三天完成实训内容,提交报告。五、实训项目实现代码结构逻辑:S3C2440 简介:Samsung 公司推出的32位RISC处理器S3C2440A,为手持设备和一般类型应用

4、提供了低价格、低功耗、高性能小型微控制器的解决方案.S3C2440为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。采用272脚FPGA封装,内含一个ARM920T内核。为了降低系统成本,S3C2440A 提供了以下丰富的片内外围.ARM9S3C2440处理器,ARM920T核由ARM9TDMI、存储管理单元,MMU和高速缓存三部分组成.其中MMU可以管理虚拟内存,高速缓存由独立的16KB地址和16KB数据高速Cache组成。ARM92T0有两个内部协处理器:CP14和CP15。CP14用于调试控制CP15用于存储系统控制以及测试控制.总的资源如下:内核工作电压为1.

5、2V,内存工作电压兼容1.8V/2.5V/3。3V,外围I/O口使用3。3V,集成16KB的指令缓存和16KB的数据缓存,带MMU(Memory Management Unit),支持SRAM和SDRAM等内存。LCD控制器接口(最高支持4K色的STN和256K色的TFT)4通道DMA控制器3通道UART2通道SPI接口IIC总线接口IIS音频编解码数据接口AC97音频接口MMC/SD存储卡接口2通道USB传输接口和1个复用的USB设备接口4通道PWM(脉宽调制)定时器和1个看门狗定时器8通道10位ADC和一个触控屏接口实时时钟130个GPIO口和24通道外部中断源接口片上PLL时钟发生锁相环

6、硬件系统框图如下:SDRAM存储接口原理图:SDRAM:同步动态随机存储器,同步是指 Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写.SDRAM从发展到现在已经经历了四代,分别是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM.(显卡上的DDR已经发展到DDR5) 第一代SDRAM采用单端(Single-Ended)时钟信号,第二代、第三代与第四代由于工作频率比较快,所以采用可降低干扰的差分时钟信号作为同

7、步时钟。SDRAM之所以成为DRARM就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是DRAM最重要的操作。那么要隔多长时间重复一次刷新,目前公认的标准是,存储体中电容的数据有效保存期上限是64ms(毫秒,1/1000秒),也就是说每一行刷新的循环周期是64ms。这样刷新速度就是:行数量/64ms。我们在看内存规格时,经常会看到4096 Refresh Cycles/64ms或8192 Refresh Cycles/64ms的标识,这里的4096与8192就代表这个芯片中每个Bank的行数.刷新命令一次对一行有效,发送间隔也是随总行数而变化,4096行时为15。625s(微秒

8、,1/1000毫秒),8192行时就为7。8125s.HY57V561620为8192 refresh cycles / 64ms。本设计采用32M的HY57V56162来设计SDRAM存储电路,它的单片内存规格为256Mbit 4M16bit4 Banks,即容量为32MB的16位SDRAM。使用S3C2410的nGCS6片选信号HY57V56162的数据总线与上S3C2410的低16位相连。操作地址的最小值变为0x00000004,所以将S3C2410的ADDR2-ADDR14顺序与HY57V56162的A0-A12相连。为了能够正确访问HY57V56162高/低位字节数据,又将HY57V

9、56162的LDQM和UDQM分别与nBE0:nWBE0:DQM0和nBE1:nWBE1:DQM1相连, HY57V56162的BA0、BA1是SDRAM内部BANK选择地址线,代表着SDRAM内存的最高地址,因为两片HY57V56162组成了64M的内存,也就是说要26根地址线来实现寻址,所以将BA0、BA1分别与S3C2410的ADDR24和ADDR25引脚相连。原理图如下图所示:实验代码:NANDFLASH存储接口原理图:Nandflash内存是flash内存的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nandflash存储器具有容量较大,改写速度

10、快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用,如嵌入式产品中包括数码相机、MP3随身听记忆卡、体积小巧的U盘等。NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级.但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。许多业内人士也搞不清楚NAND闪存技术相对于NOR技术的优越之处,因为大多数情况下闪存只是用来存储

11、少量的代码,这时NOR闪存更适合一些.而NAND则是高数据存储密度的理想解决方案。NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。NandFlash读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。NOR flash占据了容量为116MB闪存市场的大部分,而NAND flash只是用在8128M B的产品当中,这也说明NOR主要应用在代码存 储介质中,NAND适合于数据存储,NAND在CompactFlash、Secure Di

12、gital、PC Cards和M MC存储卡市场上所占份额最大。当前NORFLASH价格比较昂贵,考虑到成本问题,本设计采用了64M的K9F1208U0B Nand Flash作为介质存储电路,将K9F1208U0B的I/O0-7与上S3C2410的数据总线DATA0-7相连,实现数据的读写.S3C2410中Nand Flash控制器的R/nB与K9F1208U0B的R/nB相连,可以检查nFCE/GPA22、nFRE/GPA20、nFWE/GPA19分别与K9F1208U0B的CLE、nCE、nRE、new是否相连。分别可以控制K9F1208U0B的地址锁存使能、命令锁存使能、片选使能、读使

13、能和写使能。LCD电路模块:LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的.现在LCD已经替代CRT成为主流,价格也已经下降了很多,并已充分的普及。LCD制造时选用的控制IC、滤光片和定向膜等配件,与面板的对比度有关,一般而言,对比度能够达到350:1就足够了,但在专业领域这样的对比度平还不够。相对CRT显示器轻易达到500:1甚至更高的对比度而言,只有高档液晶显示器才能达到这样如此程度。LCD是一种介于固态与液态之间的

14、物质,本身是不能发光的,需借助要额外的光源才行。最早的液晶显示器只有上下两个灯管,发展到现在,普及型的最低也是四灯,高端的是六灯。四灯管设计分为三种摆放形式:一种是四个边各有一个灯管,但缺点是中间会出现黑影,解决的方法就是由上到下四个灯管平排列的方式,最后一种是U型的摆放形式,其实是两灯变相产生的两根灯管。六灯管设计实际使用的是三根灯管,将三根灯管都弯成U型,然后平行放置,以达到六根灯管的效果。下2图是S3C2410X芯片内部集成的LCD控制器的外部管脚图和内部方框图,其中内部的寄存器作用如下:REGBANK有17个可编程寄存器组和25616的调色板存储器,用来设定LCD控制器。LCDCDMA

15、是一个专用DMA,自动从帧存储器传输视频数据到LCD控制器,用这个特殊的DMA,视频数据可不经过CPU干涉就显示在屏幕上。VIDPRCS接受从LCDCDMA来的视频数据,并在将其改变到合适数据格式后,经VD23:0将之送到LCD驱动器,如4/8单扫描或4双扫描显示模式。TIMEGEN 由可编程逻辑组成,以支持不同LCD驱动器的接口时序和速率的不同要求.TIMEGEN产生VFRAME、VLINE、VCLK、VM信号等.数据流描述如下:FIFO存储器位于LCDCDMA。当FIFO空或部分空时,LCDCDMA要求从基于突发传输模式的帧存储器中获取数据,存入要显示的图像数据,而这个帧存储器是LCD控制

16、器在RAM中开辟的一片缓冲区。当这个传输请求被存储控制器中的总线仲裁器接收到后,从系统存储器到内部FIFO就会成功传输4个字。由于S3C2410内部集成的LCD控制器如上所以设计的外接LCD电路模块如下图:软件代码:Main。c文件:include timer。h#include”isrservice.huart.h”lcd。h”#include ”pic。pic1。#include ”pic2。include ”pic3。#include ”pic4。led。void IO_Init(void) ;unsigned int flag = 0 ;int Main(void) IO_Init()

17、 ; while(1) switch(flag) case 1: Paint_Bmp(pic) ; break ; case 2: Paint_Bmp(pic1) ; break ; case 3: Paint_Bmp(pic2) ; case 4: Paint_Bmp(pic3) ; case 5: Paint_Bmp(pic4) ; default: break ; return 0;void IO_Init(void) Timer0_Init() ; Timer0_Interrupt_Init() ; Isr_Init() ; Lcd_Init() ;Lcd.c文件:2440addr。#

18、include ”lcd.h#define LOW21BITS(n) (n) & 0x1fffff) / To get lower 21bits#define Lcd_Enable() rLCDCON1 |= 1volatile unsigned short LCD_BUFFER240320;extern unsigned char _CHS;static void Lcd_Config(void) rGPCCON = 0xaaaa02a9; rGPDCON = 0xaaaaaaaa; rLCDCON1 = (CLKVAL_TFT 8)(3 5 )|(BPPMODE_TFT 1) ; rLCD

19、CON2 = (VBPD 24)|(LINEVAL_TFT 14)|(VFPD 6)(VSPW); rLCDCON3 = (HBPD 19)|(HOZVAL_TFT 8)|(HFPD); rLCDCON4 = (HSPW); rLCDCON5 = (FRM565_TFT 11) (INVVCLK_TFT 10) | (INVVLINE_TFT 22) 1); rLCDSADDR2 = LOW21BITS( (unsigned int)LCD_BUFFER + (LCD_YSIZE_TFT LCD_XSIZE_TFT *2) ) 1 ); rLCDSADDR3 = (0 11) | (LCD_X

20、SIZE_TFT / 1);void Lcd_PowerEnable(int powerEnable) rGPGCON = rGPGCON (38) |(38); rGPGDAT = rGPGDAT (14) ; rLCDCON5 = rLCDCON5 & (13) (powerEnable3);void PutPixel(unsigned int x,unsigned int y, unsigned short c ) if ( (x 320) & (y 240) ) LCD_BUFFER(y)(x) = c;void Paint_Bmp(const unsigned char bmp) i

21、nt x,y; unsigned short c; int p = 0; for( y = 0 ; y 240 ; y+ ) for( x = 0 ; x 320 ; x+ ) c = bmpp+1 | (bmpp8) ; if ( ( x 320) & ( y LCD_BUFFERyx = c ; p = p + 2 ; void Lcd_Init(void) Lcd_Config() ; Lcd_Enable() ; Lcd_PowerEnable(1);Lcd.h文件:ifndef _LCD_H_define _LCD_H_define MVAL (0)define INVVDEN (1

22、) /0=normal 1=inverted#define HWSWP (1) /Half word swap controldefine PNRMODE (3) / 设置为TFT屏#define BPPMODE (12) / 设置为16bpp模式define LCD_XSIZE_TFT (320) #define LCD_YSIZE_TFT (240)define CLKVAL_TFT (7) #define VBPD (14) #define VFPD (11) define VSPW (2) define HBPD (37) define HFPD (19) #define HSPW (

23、29)define HOZVAL_TFT (3201)#define LINEVAL_TFT (2401) #define BPPMODE_TFT (12)define FRM565_TFT (1) #define INVVCLK_TFT (1) #define INVVLINE_TFT (1) #define INVVFRAME_TFT (1)define INVVD_TFT (0) #define INVVDEN_TFT (0) define PWREN_TFT (0)extern void Lcd_Init(void) ;extern void Lcd_PowerEnable(int p

24、owerEnable) ;extern void Paint_Bmp(const unsigned char bmp) ;endifTimer。h文件:ifndef _TIMER0_H_#define _TIMER0_H_void Timer0_Init(void) ;#endifc文件:2440addr.h”void Timer0_Init(void) rTCFG0 &= (0xff) ; rTCFG0 |= 99 ; rTCFG1 &= (0xf) ; rTCFG1 |= 0X02 ; rTCNTB0 = 62500 ;/1s中断一次 rTCON = (1 1) ;/手动更新 rTCON

25、= 0x09 ; /自动加载,清除手动更新位,启动定时器Interrupt.c文件:#include ”2440addr.h”void Timer0_Interrupt_Init(void) rINTMSK = (1 10) ;Interrupt。#ifndef _INTERRUPT_H_#define _INTERRUPT_H_void Timer0_Interrupt_Init(void) ;Isrservice。#include”config.h”#includeisrservice.h”extern unsigned int flag ;void Isr_Init(void) pISR

26、_TIMER0 = (U32)Timer0_Isr ;void _irq Timer0_Isr(void) flag + ; flag = 5 ; rSRCPND |= 1 10 ; rINTPND = 1 10 ;#ifndef _ISRSERVICE_h_#define _ISRSERVICE_h_void Isr_Init(void) ;void _irq Timer0_Isr(void) ;六、实训小结经历了几天的实训,通过老师的帮助和网上的资料查找,我们终于完成了这次实训项目,通过对arm的使用让我们领略到了arm的强大功能,也让我们知道了arm的复杂性以及我在arm方面知识的不足.这也激发了我们对arm的学习兴趣,相信这次实训项目的成功,对将来我们在arm方面的学习也有巨大的帮助.

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

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