资源描述
北京邮电大学毕业设计1基于基于STM32STM32的数码相框设计与实现的数码相框设计与实现摘 要 嵌入式系统是当前最有发展前途的 IT 应用领域之一,近年来数字摄影业的兴起带动了嵌入式产品数码相框的发展。本设计是一款基于 ARM Cortex-M3 内核的 STM32 嵌入式硬件平台设计的数码相框,主要优势是应用了 Stm32 杰出的功耗控制和极低的开发成本、超多的外设等特点。 设计主要本设计是一款基于包括主控制器核心板、LCD 液晶显示、SD 卡存储器等多个功能模块。开发过程大致为:在 PC 机 win7 系统中使用 RVMDK3.80 版本的编译器撰写工程代码,之后通过 mcuisp 串口下载软件将编译器编译生成.hex 下载到开发板内,最终实现通过 FAT 文件系统读取 SD 卡内存储的 BMP、JPEG、JPG 格式图片,把多幅图片以幻灯片的形式从 TFT 屏上显示出来。实现了对 SD 卡里多幅图片以幻灯片形式在 TFT 屏上动态显示的效果。关键词:数码相框; STM 32; LCD 液晶显示; SD 卡北京邮电大学毕业设计2The design of digital photo frames based on the STM32Abstract Embedded systems is one of the most promising applications of IT in recent years, driven by the rise of digital photography embedded products - digital photo frame development. The design is based on a STM32 ARM Cortex-M3 core embedded hardware platform design digital photo frame, both of todays digital photo frame industry, market demand and Stm32 excellent power control and low development costs. Core design includes the main controller board, LCD liquid crystal display, a number of functional modules SD card memory. Development process is roughly: Use RVMDK3.80 version of the compiler writing project code in the PC win7 system, after passing through mcuisp serial download software compiler to generate hex downloaded to the development board, and ultimately the system by reading the FAT file system. within the SD card storage BMP, JPEG, JPG format images, the pieces of the picture in the form of a slide from the TFT screen is displayed.Keywords: Digital Photo Frame; STM32;LCD liquid crystal display ;SD card memory.北京邮电大学毕业设计目目 录录摘要.1ABSTRACT.2目 录.1第一章 绪论.11.1 数码相框的技术背景.11.2 数码相框的市场背景.11.3 本课题主要研究内容与特点.11.3.1 本课题的主要研究内容.11.3.2 本设计的主要特点.1第二章 硬件介绍.32.1 MCU 主控模块 .32.2 LCD 模块.42.3 SD 存储卡模块 .7第三章 软件介绍.103.1 安装 MDK3.8A.103.2 注册 LICENSE.103.3 新建工程.123.4 MCUISP与SSCOM软件 .18第四章 程序设计.204.1 整体描述.204.2 各模块描述.204.2.1 SD 卡图片文件读取.204.2.2 图像解码与显示.214.3 主程序设计.284.3 程序调试.31第五章 结束语.33参考文献(REFERENCES).34致 谢.35外文文献.36外文译文.45北京邮电大学毕业设计1第一章第一章 绪论绪论 引引 言言1.11.11 1 数码相框的技术背景数码相框的技术背景嵌入式是以应用为中心,以计算机技术为基础,软件硬件可裁剪适合于应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统无疑是当前最热门最有发展前途的作为如今最有发展前途的 IT 应用领域之一。嵌入式系统一般用在一些专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感、对成本很敏感,有时对实时响应要求很高。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCDDVD、MP3 播放器、数码相机、数字摄像机、U-Disk、机顶盒、高清电视、游戏机、智能玩具、交换机、路由器、数控设备、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式产品。随着数字摄影的兴起不可避免地引起了数码相框产业得以的发展,因为仅有不到 35%的数码照片被打印出来。数码相框的基本原理就是采用普通相框的造型是,将把原来相框中间放的照片的部分换成了液晶显示屏,外加配上电源,存储介质等,使得同一个相框内可以循环播放照片比普通相框的优势是在同一个相框内可以循环播放照片,比普通照片的单一显示功能更有优势。此外,本设计属于数字影音娱乐产品,需要较为强劲的处理器进行图像解码的工作,而 STM32 具有超低的价格、超多的外设、丰富的型号、优异的实时性能、杰出的功耗控制和极低的开发成本等特点。因此,进行基于 STM32 平台的数码相框系统的设计具有重要的理论意义和实用价值。1.21.2 数码相框的市场背景数码相框的市场背景 市场方面,自从 2007 年开始,数码相框的市场关注度开始激增。在 2008年开始,数码相框市场就呈现出了高速发展的态势,并一直持续至今,因此本课题的研究具有极高的商业潜在市场价值与意义。1.2.11.2.1 数码相框的发展现状数码相框的发展现状数码相框产品的首次出现是在是 2001 年开始出现的,但直至 2003 年市场都一直低迷,由于当时消费者的接受度及价格过高的因素其原因在于产品的价格过高,使这一市场一直到 2003 年都很低迷。之后在随着主要器件价格的下降等因素的促使下,数码相框的价格也逐步下降其价格也得以下降,于是市场自在 2004 年开始有了起色,尤其在 2005 年,数码相框产品开始在欧美热销,但出货量也只有 150万台左右, 到了 2006 年的出货量同比上涨 133,为 280 万台,2007 年的出货量同比上涨 185,为 800 万台, 预计到 2011 年出货量将达到 4000 万台。从屏幕尺寸来看,2006 年 5-6.9 英寸产品占主流,2007 年 7、8、9 英寸产品成为最大市场。预计 2011 年,7、8、9 英寸产品的供货比例将持续保持首位,而平均销售单价将以每年 16.5左右的速度降低。2006 年以前,中国生产的数码相框绝大多数出口国外。2005 年底 Philips 率先将数码相框在中国推广,在礼品市场上取得了一些成绩,但由于销售价格较高,约为 2050 元/台,这一年中国数码相框的销售量仅有 1.7 万台。2006 年下半年,开始北京邮电大学毕业设计2有更多的国内厂商在中国市场推出数码相框,因而也带动了此产品价格的下降,这一年的平均售价为 1150 元/台,仍然较高,市场也以商务礼品为主,但由于 2005 年销售量的基数较低,2006 年的销售量同比增长了 470.6,达到 9.7 万台。直到2007 年下半年,业界才感到这个一直处于培育期的市场,开始了真正的起飞。这得益于对数码相框产品认知度的提高、价格的下滑和需求量的提高。从 IT 厂商来看,仅 2007 年下半年以来,就有惠普、三星、优派、AOC、明基、柯达、长城等众多新军加入数码相框阵营。其中,巨头惠普 2007 年 7 月底在美国宣布进入数码相框市场,2007 年数码相框出货量设定为 50 万台。除新军外,数码相框老牌劲旅的出货量表现也令业界振奋,如飞利浦 2006 年数码相框出货量达到50 万台,而 2007 年上半年出货量已达去年总和,2007 年全年出货量达 150 万台。而从上游面板厂商的动作来看,也显示出乐观的发展态势。中华映管、群创等厂商均显著调高了配套数码相框产品的中尺寸面板的出货量目标,2007 年出货量达1000 万台,预计 2008 年更将倍增至 2000 万台。其中,中华映管目前已调配一座4.5 代面板厂来支持生产中尺寸面板,主要生产可携式 DVD 播放机面板与数码相框面板,其数码相框面板以 7 英寸、8 英寸、10.2 英寸为主要尺寸,数码相框面板占其中尺寸面板的比重提高到 40。1.2.21.2.2 数码相框的发展趋势数码相框的发展趋势从长远来看,2008 年及今后几年将为处在数码相框产品供应链的各企业带来巨大的商机。未来几年,数码相框的市场将处在逐渐步入走向成熟期的阶段,其产销量和市场需求依然将仍会保持大幅度的增长,在未来的三年内,市场尚无萎缩的可能。北京邮电大学毕业设计3从技术上来说,未来数码相框的发展将向两极分化。一部分产品着重强从技术上来说,未来数码相框的发展将向两极分化。一部分产品着重强调基本功能和低成本,整合家庭中的闹钟、日历和装饰功能,这些产品调基本功能和低成本,整合家庭中的闹钟、日历和装饰功能,这些产品走的是低成本路线,以展示照片为主,追求图像的品质及幻灯片播放特走的是低成本路线,以展示照片为主,追求图像的品质及幻灯片播放特效,已成为效,已成为 DC/DV 的附属物;另一部分产品将会添加一些新的功能,的附属物;另一部分产品将会添加一些新的功能,如如 WiFi,还可即时报告天气、股票等信息,从而有望成为,还可即时报告天气、股票等信息,从而有望成为“桌面信息桌面信息中心中心”。此外,触摸面板会成为一个应用的新亮点。此外,触摸面板会成为一个应用的新亮点。从产品形态上来说,数码相框的市场将会有非常明确的细分。从产品形态上来说,数码相框的市场将会有非常明确的细分。1 数码相框:数码相框:这将是以数字照片的重显为主要功能的产品,其功能更接近于传统意义这将是以数字照片的重显为主要功能的产品,其功能更接近于传统意义上的相框。上的相框。由于人机界面的限制,为了更方便的重显和浏览以及确定重显的规则,由于人机界面的限制,为了更方便的重显和浏览以及确定重显的规则,这类产品并不强调有大容量的内存以及丰富的存储卡接口,这类产品的这类产品并不强调有大容量的内存以及丰富的存储卡接口,这类产品的主要特征是:主要特征是:1) 支持支持 USB Device&Host 以便于更新和同步数据。以便于更新和同步数据。2) 在某些情况下在某些情况下(如从如从 PC 端通过相框的端通过相框的 USB Device 同步数据同步数据),允许,允许修改数字照片的格式使得有最佳的重显效果。修改数字照片的格式使得有最佳的重显效果。3) 仅依靠内置的半导体存储器存放需要重显的数字照片。仅依靠内置的半导体存储器存放需要重显的数字照片。4) 文件文件(照片照片)查询和播放规则设定非常简洁易用。查询和播放规则设定非常简洁易用。5) 产品大致分为桌面和壁挂两种。产品大致分为桌面和壁挂两种。2 数码相册:数码相册:这是以数字照片的存储和浏览为主要功能的产品,由于需要满足跟这是以数字照片的存储和浏览为主要功能的产品,由于需要满足跟 PC相类似功能,所以这类产品的主要特征是:相类似功能,所以这类产品的主要特征是:1) 有大容量的内置数据存储器。有大容量的内置数据存储器。2) 支持支持 USB Device&Host 及各种存储卡接口,并支持内部存储器与及各种存储卡接口,并支持内部存储器与各种数据存储器之间的同步以及相互拷贝。各种数据存储器之间的同步以及相互拷贝。3) 强大的文件管理功能:浏览,搜寻,命名强大的文件管理功能:浏览,搜寻,命名(重命名重命名),复制,删除,复制,删除,备份等。备份等。4) 带或不带内建显示单元,有能支持其它高分辨率显示设备的接口带或不带内建显示单元,有能支持其它高分辨率显示设备的接口(如色差,如色差,VGA 甚至是甚至是 HDMI)。1.31.3 本课题本课题设计设计主要研究内容主要研究内容与特点与特点1.3.11.3.1 本课题的主要研究内容本课题的主要研究内容本课题是基于 ARM 单片机 STM32F103RBT6 的存储程序控制,从 SD 卡读取北京邮电大学毕业设计4图片,解码之后输出到 TFT-LCD(薄膜晶体管液晶显示器)TFT-LCD 上显示,同时通过按键可以切换到时间模式。实现了对 SD 卡里多幅图片以幻灯片形式在 TFT 屏上动态显示的效果。1)硬件资料的研究;2)软件方案的选择与论证;3)软件运行与调试;1.3.21.3.2 本设计的主要特点本设计的主要特点从以往的市场发展来看,但数码相框产品市场化的两大阻碍因素为:一是价格;二是应用功能。低廉的价格将赢得更多顾客的青睐,拓展应用空间指的是而根据中国消费者的需求和特点,开发出相应的应用产品。STM32 具有超低的价格、超多的外设、丰富的型号、优异的实时性能、杰出的功耗控制和极低的开发成本等超低的价格:以 8 位机的价格,得到 32 位机,是 STM32 最大的优势。极低的开发成本:STM32 的开发不需要昂贵的仿真器,只需要一个串口即可下载代码,并且支持 SWD 和 JTAG 两种调试口。SWD 调试可以为您的设计带来跟多的方便,只需要 2 个 IO 口,即可实现仿真调试。超多的外设:STM32 拥有包括:FSMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、ADC、DAC、RTC、DMA等众多外设及功能,具有极高的集成度。丰富的型号:STM32 拥有 F101、F102、F103、F105、F107 等 5 个系列数十种型号,具有 QFN、LQFP、BGA 等封装可供选择。优异的实时性能:84 个中断,16 级可编程优先级,并且所有的引脚都可以作为中断输入。杰出的功耗控制:STM32 各个外设都有自己的独立时钟开关,可以通过关闭相应外设的时钟来降低功耗。北京邮电大学毕业设计5第二章第二章 硬件介绍硬件介绍北京邮电大学毕业设计62.12.1 嵌入式系统概况嵌入式系统概况2.1.12.1.1 嵌入式系统的定义嵌入式系统的定义虽然嵌入式系统是近几年才风靡起来的,但其历史可追溯到虽然嵌入式系统是近几年才风靡起来的,但其历史可追溯到 20 世纪世纪 70年代。经过年代。经过 30 多年的发展,在硬件和软件交替发展的支撑下,嵌入式多年的发展,在硬件和软件交替发展的支撑下,嵌入式技术逐渐趋于稳定和成熟,已被广泛应用于工业控制、交通管理、信息技术逐渐趋于稳定和成熟,已被广泛应用于工业控制、交通管理、信息家电、家庭智能管理系统、家电、家庭智能管理系统、POS 网络及电子商务、环境检测、机器人网络及电子商务、环境检测、机器人等各个领域。毫不夸张的说,嵌入式系统已经无所不在,所以研究和开等各个领域。毫不夸张的说,嵌入式系统已经无所不在,所以研究和开发嵌入式系统有着十分重要的意义。发嵌入式系统有着十分重要的意义。根据根据 IEEE(国际电气和电子工程师协会国际电气和电子工程师协会)的定义,嵌入式系统是的定义,嵌入式系统是“控制、控制、监视或辅助设备、机器和车间运行的装置监视或辅助设备、机器和车间运行的装置” ,这主要是从应用上加以定,这主要是从应用上加以定义的。不过,上述定义并不能充分体现出嵌入式系统的精髓。目前,国义的。不过,上述定义并不能充分体现出嵌入式系统的精髓。目前,国内一个普遍被认同的定义是:以应用为中心、以计算机为基础,软、硬内一个普遍被认同的定义是:以应用为中心、以计算机为基础,软、硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗等严格要件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。求的专用计算机系统。广义地讲,凡是不用于通用目的的可编程计算机设备,就可以算是嵌入广义地讲,凡是不用于通用目的的可编程计算机设备,就可以算是嵌入式计算机系统。狭义上而言,嵌入式系统是指以应用为核心,以计算机式计算机系统。狭义上而言,嵌入式系统是指以应用为核心,以计算机技术为基础,软硬件可裁剪,适于应用系统对功能、可靠性、成本、体技术为基础,软硬件可裁剪,适于应用系统对功能、可靠性、成本、体积和功耗严格要求的专用计算机系统。积和功耗严格要求的专用计算机系统。总的来说,嵌入式系统是一个外延极广的概念,凡是与产品结合在一起总的来说,嵌入式系统是一个外延极广的概念,凡是与产品结合在一起的、具有嵌入式系统特点的系统都可以称为嵌入式系统。可以从以下几的、具有嵌入式系统特点的系统都可以称为嵌入式系统。可以从以下几个方面来理解嵌入式系统的含义:个方面来理解嵌入式系统的含义:嵌入式系统是面向用户、面向产品、面向应用的,必须与具体应用相结嵌入式系统是面向用户、面向产品、面向应用的,必须与具体应用相结合才会具有生命力。正因为与具体应用的紧密结合,嵌入式系统才具有合才会具有生命力。正因为与具体应用的紧密结合,嵌入式系统才具有很强的专用性。很强的专用性。嵌入式系统将先进的半导体技术、计算机技术和电子技术,以及各个行嵌入式系统将先进的半导体技术、计算机技术和电子技术,以及各个行业的具体应用相结合,是一个技术密集、资金密集、学科交叉和不断创业的具体应用相结合,是一个技术密集、资金密集、学科交叉和不断创新的知识集成系统。新的知识集成系统。嵌入式系统必须根据应用需要对硬件和软件进行裁剪,以满足应用系统嵌入式系统必须根据应用需要对硬件和软件进行裁剪,以满足应用系统对功能、可靠性、成本、体积和功耗的要求。对功能、可靠性、成本、体积和功耗的要求。2.1.22.1.2 嵌入式系统的组成嵌入式系统的组成北京邮电大学毕业设计7通常来说,嵌入式系统可以划分成硬件和软件两部分。嵌入式硬件由嵌通常来说,嵌入式系统可以划分成硬件和软件两部分。嵌入式硬件由嵌入式微处理器、片内周边电路和外部设备三部分组成。嵌入式微处理器入式微处理器、片内周边电路和外部设备三部分组成。嵌入式微处理器是嵌入式硬件系统的核心,直接影响嵌入式产品的应用范围和开发复杂是嵌入式硬件系统的核心,直接影响嵌入式产品的应用范围和开发复杂度。典型的嵌入式微处理器有度。典型的嵌入式微处理器有 Motorola 公司的公司的 Power PC 系列、系列、Intel公司的公司的 Strong Arm 系列、系列、AMD 公司的公司的 X86 系列以及系列以及 EPSON 公司的公司的SIC33 系列等。嵌入式软件一般由连接硬件和应用程序的嵌入式实时操系列等。嵌入式软件一般由连接硬件和应用程序的嵌入式实时操作系统作系统(Real-time operating System,简称,简称 RTOS)和在其上运行的应用和在其上运行的应用软件构成。软件构成。嵌入式处理器嵌入式处理器嵌入式处理器是嵌入式系统的核心部件,是控制、辅助系统运行的硬件嵌入式处理器是嵌入式系统的核心部件,是控制、辅助系统运行的硬件单元,其功能和性能影响着整个系统的功能、性能和设计。嵌入式处理单元,其功能和性能影响着整个系统的功能、性能和设计。嵌入式处理器的选择也制约着其配套的外围器件及操作系统的选择。器的选择也制约着其配套的外围器件及操作系统的选择。嵌入式处理器的种类繁多、数量庞大。目前世界上嵌入式处理器的种类嵌入式处理器的种类繁多、数量庞大。目前世界上嵌入式处理器的种类数量已经超过数量已经超过 1000 种,流行的体系结构有种,流行的体系结构有 30 多个系列。嵌入式微处理多个系列。嵌入式微处理器具有体积小、重量轻、成本低、可靠性高等优点,因此得到了广泛应器具有体积小、重量轻、成本低、可靠性高等优点,因此得到了广泛应用。目前这样的嵌入式处理器类型有用。目前这样的嵌入式处理器类型有ARM、MIPS、MC6800、386EX、PowerPC 等系列,其中以等系列,其中以 ARM 的的应用最为广泛。应用最为广泛。嵌入式处理器可以分为四类,即嵌入式处理器可以分为四类,即嵌入式微处理器嵌入式微处理器(Embedded Microprocessor Unit,EMPU),如,如 ARM嵌入式微控制器嵌入式微控制器(Microcontroller Unit,MCU)嵌入式嵌入式 DSP 处理器处理器(Embedded Digital Signal Processor,EDSP)嵌入式片上系统嵌入式片上系统(System On Chip)嵌入式外围设备嵌入式外围设备这里所说的嵌入式外围设备,指在一个嵌入式硬件系统中,这里所说的嵌入式外围设备,指在一个嵌入式硬件系统中, 除了中心除了中心控制部件控制部件(MCU,DSP,EMPU,SOC)以外的完成存储、通信、保护、以外的完成存储、通信、保护、调试、显示等辅助功能的其他部件。根据外围设备的功能可分为以下三调试、显示等辅助功能的其他部件。根据外围设备的功能可分为以下三类,即:类,即:存储器类型:静态易失型存储器存储器类型:静态易失型存储器(RAM,SRAM)、动态存储器、动态存储器(DRAM)、非易失型存储器非易失型存储器(ROM,EPROM,EEPROM,FLASH)。其中,因为。其中,因为FLASH 可以擦写多次,存储速度快,容量大,价格便宜在嵌入式领域可以擦写多次,存储速度快,容量大,价格便宜在嵌入式领域应用广泛。应用广泛。北京邮电大学毕业设计8接口类型:目前存在的所有接口在嵌入式领域都应用广泛,如接口类型:目前存在的所有接口在嵌入式领域都应用广泛,如 RS-232(串口串口)、IRDA(红外线接口红外线接口)、SPI(串行外围设备接口串行外围设备接口)、I2C(现场总现场总线接口线接口)、USB(通用串行接口通用串行接口)、Ethernet(以太接口以太接口)和普通并口。和普通并口。显示类型:显示类型:CRT,LCD 和触摸屏等外围设备。和触摸屏等外围设备。2.1.32.1.3 嵌入式系统的特点嵌入式系统的特点嵌入式系统具有以下几个重要特征:嵌入式系统具有以下几个重要特征:系统内核小,由于嵌入式系统一般应用于小型电子装置,系统资源相系统内核小,由于嵌入式系统一般应用于小型电子装置,系统资源相对有限,所以内核较之传统的操作系统要小得多。比如,对有限,所以内核较之传统的操作系统要小得多。比如,ENEA 公司的公司的OSE 分布式系统,内核只有分布式系统,内核只有 5KB,而,而 Windows 的内核则要大得多。的内核则要大得多。专用性强,嵌入式系统的个性化很强,其中的软件系统和硬件结合非专用性强,嵌入式系统的个性化很强,其中的软件系统和硬件结合非常紧密,一般要针对硬件进行系统的移植,同时针对不同的任务,往往常紧密,一般要针对硬件进行系统的移植,同时针对不同的任务,往往需要对系统进行较大的更改。另外,程序的编译下载要和系统相结合。需要对系统进行较大的更改。另外,程序的编译下载要和系统相结合。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能的设计及实现过于复杂,这样既利于控制系统成本,也利于实现系统安的设计及实现过于复杂,这样既利于控制系统成本,也利于实现系统安全。全。高实时性的操作系统软件是嵌入式软件的基本要求,而且软件要求固高实时性的操作系统软件是嵌入式软件的基本要求,而且软件要求固化存储,以提高速度,软件代码要求高质量和高可靠性。化存储,以提高速度,软件代码要求高质量和高可靠性。嵌入式软件开发要想走向标准化,就必须使用多任务操作系统。嵌入嵌入式软件开发要想走向标准化,就必须使用多任务操作系统。嵌入式系统的应用程序可以没有操作系统而直接在芯片上运行,但为了更合式系统的应用程序可以没有操作系统而直接在芯片上运行,但为了更合理的调度多任务,利用系统资源、系统函数,用户必须自行选配理的调度多任务,利用系统资源、系统函数,用户必须自行选配 RTOS开发平台。开发平台。执行的实时性、可靠性,并减少开发时间,保障软件质量。嵌入式系执行的实时性、可靠性,并减少开发时间,保障软件质量。嵌入式系统开发需要专门的开发工具和环境。由于嵌入式系统本身不具备自主开统开发需要专门的开发工具和环境。由于嵌入式系统本身不具备自主开发能力,即使完成设计后,用户通常也不能对其中的程序功能进行修改,发能力,即使完成设计后,用户通常也不能对其中的程序功能进行修改,因此必须有一套基于通用计算机的开发工具和环境才能进行开发。因此必须有一套基于通用计算机的开发工具和环境才能进行开发。2.22.2 数码相框模块数码相框模块2.2.2.2.1 1 MCUMCU 主控模块主控模块STM32 系列闪存微控制器是意法半导体公司(ST)基于 ARM 公司具有突破性的 Cortex-M3 内核的处理器,该处理器是专门设计于满足集高性能、低功耗、实时应用、具有竞争性价格于一体的嵌入式领域的要求。此次设计采用的具体型号是STM32F103RBT6,如图 2-1 所示。北京邮电大学毕业设计9图 2-1 STM32F103RBT6 处理器STM32F103RBT6 嵌入式处理器具有以下特点:32 位 RISC 性能处理器;32 位 ARM Cortex-M3 结构优化;72 MHZ 运行频率,单周期访问时速度可达 1.25 DMIPS/MHz;硬件除法和单周期乘法;快速可嵌套中断,612 个时钟周期;具有 MPU 保护设定访问规则;片内具有 256KB FLASH,48KB RAM;80 个快速 I/O 端口,16 个 I/O 可映射到外部中断,几乎所有的 I/O 可以忍受5V 电压;片上集成 12Bit A/D、D/A、PWM、CAN、USB、SDIO、FSMC 等资源;ARM Cortex-M3 是一种基于 ARM7v 架构的最新 ARM 嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结构下,数据和指令共用一条总线)。从本质上来说,哈佛结构在物理上更为复杂,但是处理速度明显加快。根据摩尔定理,复杂性并不是一件非常重要的事,而吞吐量的增加却极具价值。除了使用哈佛结构,Cortex-M3 还具有其它显著的优点:具有更小的基础内核,价格更低,速度更快。与内核集成在一起的是一些系统外设,如中断控制器、总线矩阵、调试功能模块,而这些外设通常都是由芯片制造商增加的。Cortex-M3 还集成了睡眠模式和可选的完整的八区域存储器保护单元,只支持最新的 Thumb-2 指令集,最大限度降低了汇编器使用率。Cortex-M3 这样设计的优势在于:免去 Thumb 和 ARM 代码的互相切换,对于早期的处理器来说,这种状态切换会降低性能。Thumb-2 指令集的设计是专门面向 C 语言的,且包括 If/Then 结构(预测接下来的四条语句的条件执行)、硬件除法以及本地位域操作。Thumb-2 指令集允许用户在 C 代码层面维护和修改应用程序,C 代码部分非常易于重用。Thumb-2 指令集也包含了调用汇编代码的功能:Luminary 公司认为没有必要使用任何汇编语言。综合以上这些优势,新产品的开发将更易于实现,上市时间也大为缩短。北京邮电大学毕业设计10STM32F103RBT6 的资源完全满足此次的嵌入式数码相框设计,通过设计电路开发一个支持 TFT 彩色液晶屏的驱动电路,在设计中搭配 2.8 寸 TFT 真彩触摸屏模块作为显示界面,同时支持一个 SD 卡(SPI 方式)可用于存储图片、数据等。2.2.2.2.2 2 LCDLCD 模块模块Thin Film Transistor(薄膜场效应晶体管),是指液晶显示器上的每一液晶象素点都是由集成在其后的薄膜晶体管来驱动。从而可以做到高速度、高亮度、高对比度显示屏幕信息,TFT-LCD(薄膜晶体管液晶显示器)是多数液晶显示器的一种。TFT屏幕的优点如下:大面积。九十年代初第一代大面积玻璃基板(300mm400mm)TFT-LCD 生产线投产,到 2000 年上半年玻璃基板的面积已经扩大到了 680mm880mm),最近 950mm1200mm 的玻璃基板也将投入运行。高集成度。用于液晶投影的 1.3 英寸 TFT 芯片的分辨率为 XGA 含有百万个象素。分辨率为 SXGA(12801024)的 16.1 英寸的 TFT 阵列非晶体硅的膜厚只有50nm,以及 TAB ON GLASS 和 SYSTEM ON GLASS 技术,其 IC 的集成度,对设备和供应技术的要求,技术难度都超过传统的 LSI。功能强大。TFT 最早作为矩阵选址电路改善了液晶的光阀特性。对于高分辨率显示器,通过 0-6V 范围的电压调节(其典型值 0.2 到 4V),实现了对象元的精确控制,从而使 LCD 实现高质量的高分辨率显示成为可能。TFT-LCD 是人类历史上第一种在显示质量上超过 CRT 的平板显示器。现在人们开始把驱动 IC 集成到玻璃基板上,整个 TFT 的功能将更强大,这是传统的大规模半导体集成电路所无法比拟的。低成本。玻璃基板和塑料基板从根本上解决了大规模半导体集成电路的成本问题,为大规模半导体集成电路的应用开拓了广阔的应用空间。工艺灵活。除了采用溅射、CVD(化学气相沉积)MCVD(分子化学气相沉积)等传统工艺成膜以外,激光退火技术也开始应用,既可以制作非晶膜、多晶膜,也可以制造单晶膜。不仅可以制作硅膜,也可以制作其他的-族和-族半导体薄膜。应用领域广泛。以 TFT 技术为基础的液晶平板显示器是信息社会的支柱产业,技术可应用到正在迅速成长中的薄膜晶体管有机电致发光(TFT-OLED)平板显示器也在迅速的成长中。TFT 液晶显示屏亮度好、对比度高、层次感强、颜色鲜艳,其广泛应用于手机、MP4 等消费品。因此,本系统选用 2.8 英寸 TFT-LCD 屏(如图 2-2 所示)可显 26万色,分辨率 320*240,控制器为 ILI9320,采用 16 位的 80 并口,配合触摸屏专用芯片 XPT2046,可对屏幕进行触摸操作,更显智能化和个性化。为了方便用户使用,我们存储方式采用兼容 FAT 的文件系统,同时该文件系统也兼容 FAT32 等电脑主流的文件系统方式进行存储。北京邮电大学毕业设计11图 2-2 2.8 英寸 TFT-LCD 模块该模块的 80 并口有如下一些信号线:CS:TFT-LCD 片选信号。WR:向 TFT-LCD 写入数据。RD:从 TFT-LCD 读取数据。D15:0:16 位双向数据线。RST:硬复位 TFT-LCD。RS:命令/数据标志(0,读写命令;1,读写数据)。TFT-LCD 模块的 RST 信号线是直接接到 STM32 的复位脚上,并不由软件控制,这样可以省下来一个 I/O 口。另外我们还需要一个背光控制线来控制 TFT-LCD的背光。所以我们总共需要的 I/O 口数目为 21 个。模块的控制器为 ILI9320(可能为其他型号,但是他们的设置很相似,除了初始化序列有些区别,其他大都是一摸一样的,这里仅以 9320 为例介绍),该控制器自带显存,其显存总大小为 172820(240*320*18/8),即 18 位模式(26 万色)下的显存量。模块的 16 位数据线与显寸的对应关系为 565 方式,如下图所示:图 2-3 16 位数据与显存对应关系图最低 5 位代表蓝色,中间 6 位为绿色,最高 5 位为红色。数值越大,表示该颜色越深。接下来介绍一下 ILI9320 的几个重要命令,因为 ILI9320 的命令很多,这北京邮电大学毕业设计12里不一一介绍。这里我们要介绍的命令列表如下:表 2.1 ILI9320 常用命令表R0,这个命令,有两个功能,如果对它写,则最低位为 OSC,用于开启或关闭振荡器。而如果对它读操作,则返回的是控制器的型号。这个命令最大的功能就是通过读它可以得到控器的型号,而我们代码在知道了控制器的型号之后,可以针对不同型号的控制器,进行不同的初始化。因为 93xx 系列的初始化,其实都比较类似,我们完全可以用一个代码兼容好几个控制器。R3,入口模式命令。我们重点关注的是 I/D0、I/D1、AM 这 3 个位,因为这 3 个位控制了屏幕的显示方向。AM:控制 GRAM 更新方向。当 AM=0 的时候,地址以行方向更新。当 AM=1的时候,地址以列方向更新。I/D1:0:当更新了一个数据之后,根据这两个位的设置来控制地址计数器自动增加/减少 1,其关系如下图:北京邮电大学毕业设计13图 2-4 GRAM 显示方向设置图通过这几个位的设置,我们就可以控制屏幕的显示方向了。R7,显示控制命令。该命令 CL 位用来控制是 8 位彩色,还是 26 万色。为 0时 26 万色,为 1 时八位色。D1、D0、BASEE 这三个位用来控制显示开关与否的。当全部设置为 1 的时候开启显示,全 0 是关闭。我们一般通过该命令的设置来开启或关闭显示器,以降低功耗。R32,R33,设置 GRAM 的行地址和列地址。R32 用于设置列地址(X 坐标,0239),R33 用于设置行地址(Y 坐标,0319)。当我们要在某个指定点写入一个颜色的时候,先通过这两个命令设置到改点,然后写入颜色值就可以了。R34,写数据到 GRAM 命令,当写入了这个命令之后,地址计数器才会自动的增加和减少。该命令是我们要介绍的这一组命令里面唯一的单个操作的命令,只需要写入该值就可以了,其他的都是要先写入命令编号,然后写入操作数。R80R83,行列 GRAM 地址位置设置。这几个命令用于设定显示区域的大小,我们整个屏的大小为 240*320,但是有时候我们只需要在其中的一部分区域写入数据,如果用先写坐标,后写数据这样的方式来实现,则速度大打折扣。此时我们就可以通过这几个命令,在其中开辟一个区域,然后不停的丢数据,地址计数器就会根据 R3 的设置自动增加/减少,这样就不需要频繁的写地址了,大大提高了刷新的速度。通过以上介绍,我们可以得出 TFT-LCD 显示需要的相关设置步骤如下:1)设置 STM32 与 TFT-LCD 模块相连接的 I/O。这一步,先将我们与 TFT-LCD 模块相连的 I/O 口设置为输出,具体使用哪些I/O 口,这里需要根据连接电路以及 TFT-LCD 模块的设置来确定。2)初始化 TFT-LCD 模块。通过向 TFT-LCD 写入一系列的设置,来启动 TFT-LCD 的显示。为后续显示字符和数字做准备。3)通过函数将字符和数字显示到 TFT-LCD 模块上。这里就是通过我们设计的程序,将要显示的字符送到 TFT-LCD 模块就可以了,这些函数将在软件设计部分向大家介绍。通过以上三步,我们就可以使用 TFT-LCD北京邮电大学毕业设计14模块来显示字符和数字了,并且可以显示各种颜色的背景。2.32.3 SDSD 存储卡模块存储卡模块SD 卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地应用于便携式装置上,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD 卡由日本松下、东芝及美国 SanDisk 公司于 1999 年 8 月共同开发研制。大小犹如一张邮票的 SD 记忆卡,重量只有 2 克,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性,此外它可存多种格式数据文件,具有很强的可扩展性;用户可方便使用 SD 卡读卡器对其进行用户信息修改。2G 金士顿 SD 卡实物如下图 2-5 所示。SD 卡一般支持两种操作模式:SD 卡模式与 SPI 模式。主机可以选择以上任意一种模式同 SD 卡通信,SD 卡模式允许 4 线的高速数据传输。SPI 模式允许简单的通过 SPI 接口来和 SD 卡通信,这种模式同 SD 卡模式相比就是丧失了速度。SD 卡的引脚排序如下图 2-6 所示: 图 2-5 Kingston SD 卡 图 2-6 SD 卡引脚排序图SD 卡引脚功能描述如下表所示:表 2.2 SD 卡引脚功能表SD 卡只能使用 3.3V 的 I/O 电平,所以,MCU 一定要能够支持 3.3V 的 I/O 端口输出。在 SPI 模式下,CS/MOSI/MISO/CLK 都需要加 10100K 左右的上拉电阻。SD 卡要进入 SPI 模式很简单,就是在 SD 卡收到复位命令(CMD0)时,CS 为有效电平(低电平)则 SPI 模式被启用。不过在发送 CMD0 之前,要发送74 个时钟,这是因为 SD 卡内部有个供电电压上升时间,大概为 64 个 CLK,剩下的 10 个 CLK用于 SD 卡同步,之后才能开始 CMD0 的操作,在卡初始化的时候,CLK 时钟最大不能超过 400KHZ。本次硬件电路板使用的是 SPI 模式来读写 SD 卡,下面我们就重点介绍一下 SD北京邮电大学毕业设计15卡在 SPI 模式下的相关操作。SPI 模式下几个重要的操作命令,如下表所示:表 2.3 SPI 模式下 SD 卡部分操作指令其中 R1 的回应格式如下表所示:表 2.4 SD 卡 R1 回应格式SD 卡的典型初始化过程如下:1) 初始化与 SD 卡连接的硬件条件(MCU 的 SPI 配置,I/O 口配置);2) 上电延时(74 个 CLK);3) 复位卡(CMD0);4) 激活卡,内部初始化并获取卡类型(CMD1(用于 MMC 卡)、CMD55、CMD41);5) 查询 OCR,获取供电状况(CMD58);6) 是否使用 CRC(CMD59);7) 设置读写块数据长度(CMD16);8) 读取 CSD,获取存储卡的其他信息(CMD9);9) 发送 8CLK 后,禁止片选;这样我们就完成了对 SD 卡的初始化,这里面我们一般设置读写块数据长度为512 个字节,并禁止使用 CRC。在完成了初始化之后,就可以开始读写数据了。SD 卡读取数据,这里通过 CMD17 来实现,具体过程如下:1) 发送 CMD17;2) 接收卡响应 R1;3) 接收数据起始令牌 0XFE;4) 接收数据;5) 接收 2 个字节的 CRC,如果没有开启 CRC,这两个字节在读取后可以丢掉;6) 8CLK 之后禁止片选;以上就是一个典型的读取 SD 卡数据过程,SD 卡的写与读数据差不多,写数据通过 CMD24 来实现,具体过程如下:北京邮电大学毕业设计161) 发送 CMD24;2) 接收卡响应 R1;3) 发送写数据起始令牌 0XFE;4) 发送数据;5) 发送 2 字节的伪 CRC;6) 8CLK 之后禁止片选;第三章第三章 软件介绍软件介绍3.13.1 安装安装 MDK3.8aMDK3.8a (Keil)(Keil):找到 MDK 的安装文件并点击安装,点击之后出现界面,选择 Next:选择”I AgreeLicence agreement”同意协议,选择安装目录,这里选择安装的目录后,点击 Next 即可,随便输入邮箱之类的信息即可,点击 Next 开始安装,按图配置,然后点击 Finish,左面会出现 keil 快捷图标。图 3-1 完成安装北京邮电大学毕业设计173.23.2 注册注册 LicenseLicense 在 MDK 针对每台机会有一个 CID,copy 这个 CID 到注册机处生成 License Key,然后再将这个 License Key 添加到 MDK 里面去注册。 右键点击左面的 MDK 快捷方式,选择“以管理员身份运行”,因为注册 license需要管理员权限。然后会打开 MDK,然后默认会有一个名字叫“LPC2129 simulator”的 Project,暂时我们可以不用理会。 点击:File-License Management,弹出一个 License Management 界面,copy 界面中的(CID):图 3-2 CID打开光盘下面的注册机,目录为:ALIENTEK 开发板资料软件MDK3.80A注册下的注册机。 出现注册界面,黏贴刚才粘贴刚才 copy 的 cid 到 CID 一栏,然后 Target 选择ARM北京邮电大学毕业设计18图 3-3 注册机选择好之后点击“Generate”,下面的空白栏会生成一个 License Key,类似:D0DY8-30KAK-0N8AM-X9Z14-A2NWP-J3LZZ ,copy 这个 license.将这个 License Key 黏贴到粘贴到 Keil 的 License Management 界面的 New License Id Code 一栏,然后点击“Add LIC”,添加成功后会出现成功提示。然后点击 Close 关闭这个界面即可。图 3-4 粘贴 License Key北京邮电大学毕业设计193.33.3 新建工程新建工程 回到 MDK 主界面,可以看到工程中有一个默认的工程,点击这个工程名字,然后选择菜单 Project-Close Project,就关闭掉这个工程了,!这样整个 MDK 就是一个空的了,接下来我们将建立我们的工程模版。 在建立工程之前,我们建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为: STM32-Projects. 点击 Keil 的菜单:Project New Uvision Project ,然后将目录定位到刚才建立的文件夹 STM32-Projecst 之下,在这个目录下面建立子文件夹 Tempalte,然后定位到 Template 目录下面,我们的工程文件就都保存到 Template 文件夹下面。工程命名为 Template,点击保存。保存工程界面保存工程界面接下来会出现一个选择 Device 的界面,就是选择我们的芯片型号,这里我们定位到 STMicroelectronics 下面的 STM32F103RB(针对我们的 mini 板子是这个型号,如果是其他芯片,请选择对应的型号即可)。图 3-5 选择芯片型号器件选择界面器件选择界面弹出对话框“Copy STM32 Startup Code to project .”,询问是否添加启动代码到我们的工程中,这里我们选择“否”,因为我们使用的 ST 固件库文件已经包含了启动文件。可以看到工程建立了,我们回到 Template 目录下面,可以看到只有三个文件:图 3-6 Template 目录下的文件北京邮电大学毕业设计20接下来,我们在 Template 工程目录下面,新建 3 个文件夹 CORE, USER, STM32F10 x_FWLib。USER 用来放我们主函数文件 main.c,以及其他包括system_stm32f10 x.c 等等,CORE 用来存放启动文件等,STM32F10 x_FWLib 文件夹顾名思义用来存放 ST 官方提供的库函数源码文件。图 3-7 Template 工程目录下新建的文件 下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。打开官方固件库包,定位到我们之前准备好的固件库包的目录 STM32F10 x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10 x_StdPeriph_Driver 下面, 将目录下面的 src,inc 文件夹 copy 到我们刚才建立的 STM32F10 x_FWLib 文件夹下面。src 存放的是固件库的.c 文件,inc 存放的是对应的.h 文件,您不妨打开这两个文件目录过目一下里面的文件,每个外设对应一个.c 文件和一个.h 头文件。图 3-8 STM32F10 x_StdPeriph_Driver 文件北京邮电大学毕业设计21下面我们要将固件库包里面相关的启动文件复制到我们的工程目录 CORE 之下。打开官方固件库包,定位到目录 STM32F10 x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport 下面,将文件 core_cm3.c 和文件 core_cm3.h 复制到 CORE 下面去。然后定位到目录STM32F10 x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10 xstartuparm 下面,将里面所有的文件同样复制到 CORE 下面。这里我们解释一下,其实我们只用到 arm 目录下面的 startup_stm32f10 x_md.s 文件,这个文件是针对中等容量芯片的启动文件。其他两个主要的为 startup_stm32f10 x_ld.s 为小容量,startup_stm32f10 x_hs.c 为大容量芯片的启动文件。这里 copy 进来是方便其他开发者使用小容量或者大容量芯片的用户。现在看看我们的 CORE 文件夹下面的文件:图 3-9 CORE 文件夹内定位到目录: STM32F10 x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10 x 将里面的三个文件 stm32f10 x.h,system_stm32f10 x.c,system_stm32f10 x.h,复制到我们的 USER 目录之下。然后将STM32F10 x_StdPeriph_Lib_V3.5.0ProjectSTM32F10 x_StdPeriph_Template 下面的 4 个文件 main.c,stm32f10 x_conf.h,stm32f10 x_it.c,stm32f10 x_it.h 复制到USER 目录下面。北京邮电大学毕业设计22图 3-10 USER 文件夹内前面 10 个步骤,我们将需要的固件库相关文件复制到了我们的工程目录下面,下面我们将这些文件加入我们的工程中去。右键点击 Target1,选择 Manage ComponentsProject Targets 一栏,我们将 Target 名字修改为 Template,然后在 Groups 一栏删掉一个,建立三个 Groups:USER,CORE,FWLIB.点击 OK.可以看到我们的 Target 名字以及 Groups 情况。图 3-11 Target 名字以及 Groups 情况北京邮电大学毕业设计23下面我们往 Group 里面添加我们需要的文件。我们按照步骤 12 的方法, 右键点击点击 Tempate,选择选择 Manage Components.然后选择需要添加文件的Group,这里第一步我们选择 FWLIB,然后点击右边的 Add Files,定位到我们刚才建立的目录 STM32F10 x_FWLib/src 下面,将里面所有的文件选中(Ctrl+A),然后点击Add,然后 Close.可以看到 Files 列表下面包含我们添加的文件。这里需要说明一下,对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不用添加没有用到的外设的库文件。例如我只用GPIO,我可以只用添加stm32f10 x_gpio.c而其他的可以不用添加。这里我们全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,用户可以自行选
展开阅读全文