基于STM32的数码相框系统设计与实现(软件)_论文

基于STM32的数码相框系统设计与实现(软件)_论文
基于STM32的数码相框系统设计与实现(软件)_论文

设计与实现(软件)

所属系电子工程系

专业自动化

学号 01208443

姓名王永佳

指导教师汪力纯

起讫日期 2012.2 --- 2012.5

设计地点东南大学成贤学院

东南大学成贤学院毕业设计报告(论文)

诚信承诺

本人承诺所呈交的毕业设计报告(论文)及取得的成果是在导师指导下完成,引用他人成果的部分均已列出参考文献。如论文涉及任何知识产权纠纷,本人将承担一切责任。

学生签名:

日期:

基于STM32的数码相框系统设计与实现(软件)

摘要

本设计是一款基于嵌入式硬件平台的数码相框,主控芯片为基于ARM Cortex-M3内核的STM32系列嵌入式处理器,本设计包含主控制器核心板、LCD液晶显示、SD卡存储器等多个功能模块。实现对SD卡里多幅图片以幻灯片形式在TFT屏上动态显示的效果,且带有实时时钟的功能。

关键词:嵌入式;数码相框;Cortex-M3

The design of digital photo frames based on the STM32

Abstract

The design is a digital photo frame-based embedded hardware platform ,whose main chip for the STM32 family of embedded processors based on ARM Cortex-M3 core . The design includes a host controller core board, LCD display, SD card memory and other functional modules. It can achieve the effect of multiple images of the SD card as a slide show on the TFT screen dynamic display, and with real-time clock function.

Keywords:Embedded; Digital Photo Frame; Cortex-M3

目录

摘要 ............................................................................. I ABSTRACT .......................................................................... II 第一章引言 . (1)

1.1课题研究意义 (1)

1.2数码相框的发展情况和趋势 (1)

1.2.1 数码相框的发展现状 (1)

1.2.2 数码相框的发展趋势 (2)

1.3本课题设计主要研究内容 (2)

1.4主要章节安排 (3)

第二章硬件介绍 (4)

2.1嵌入式系统概况 (4)

2.1.1 嵌入式系统的定义 (4)

2.1.2 嵌入式系统的组成 (4)

2.1.3 嵌入式系统的特点 (5)

2.2数码相框模块 (5)

2.2.1 MCU主控模块 (5)

2.2.2 LCD模块 (6)

2.2.3 SD存储卡模块 (9)

第三章编程环境介绍 (12)

3.1RVMDK3.80A简介 (12)

3.2新建RVMDK工程 (12)

3.3软件仿真 (19)

3.4在线调试 (24)

3.4.1 J-link简介 (24)

3.4.2 J-link调试步骤 (25)

3.5程序下载 (28)

第四章程序设计与调试 (34)

4.1系统描述 (34)

4.2软件设计 (34)

4.2.1 文件读取 (34)

4.2.2 图像解码与显示 (35)

4.2.3 时钟显示 (42)

4.2.4 主程序设计 (52)

4.3程序调试 (57)

第五章结束语 (59)

致谢 (60)

参考文献(REFERENCES) (61)

附录数码相框原理图 (62)

第一章引言

1.1 课题研究意义

嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3播放器、数码相机、数字摄像机、U-Disk、机顶盒、高清电视、游戏机、智能玩具、交换机、路由器、数控设备、汽车电子、家电控制系统、医疗仪器、航天航空设备等都是典型的嵌入式产品。

数字摄影的兴起不可避免地引起了数码相框的发展,因为仅有不到35%的数码照片被打印出来。数码相框的基本原理就是采用普通相框的造型,把原来相框中间的照片部分换成液晶显示屏,配上电源,存储介质等,使得同一个相框内可以循环播放照片,比普通照片的单一显示功能更有优势。从2007年开始,数码相框的市场关注度开始激增。在2008年,数码相框市场呈现高速发展的态势,本课题的研究具有极高的潜在市场价值。

此外,本设计属于数字影音娱乐产品,需要较为强劲的处理器进行图像解码的工作,而STM32 具有超低的价格、超多的外设、丰富的型号、优异的实时性能、杰出的功耗控制和极低的开发成本等特点。因此,进行基于STM32平台的数码相框系统的设计具有重要的理论意义和实用价值。

1.2 数码相框的发展情况和趋势

1.2.1 数码相框的发展现状

数码相框产品是2001年开始出现的,但由于当时消费者的接受度及价格过高的因素,使这一市场一直到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年下半年,开始有更多的国内厂商在中国市场推出数码相框,因而也带动了此产品价格的下降,这一年的平均售价为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.2 数码相框的发展趋势

从长远来看,2008年及今后几年将为处在数码相框产品供应链的各企业带来巨大的商机。未来几年,数码相框的市场将处在逐渐走向成熟期的阶段,其产销量和市场需求依然将保持大幅度的增长,在未来的三年内,市场尚无萎缩的可能。但数码相框拓展中国市场需克服两大难点:一是价格;二是拓展应用空间。价格下降是必然趋势,中国消费者接受只是时间的问题,而根据中国消费者的需求和特点,开发出相应的应用产品,则是需要数码相框厂商亟待解决的问题。

从技术上来说,未来数码相框的发展将向两极分化。一部分产品着重强调基本功能和低成本,整合家庭中的闹钟、日历和装饰功能,这些产品走的是低成本路线,以展示照片为主,追求图像的品质及幻灯片播放特效,已成为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.3 本课题设计主要研究内容

本课题是基于ARM单片机STM32F103RBT6的存储程序控制,从SD卡读取图片,解码后输出到TFT-LCD上显示,同时通过按键可以切换到时间模式。

1)硬件电路原理图的绘制(见附录);

2)硬件资料的研究;

3)软件方案的选择与论证;

4)软件运行与调试;

1.4 主要章节安排

第一章就课题研究的背景与意义以及发展现状与趋势做出说明;

第二章概要性地介绍了嵌入式系统的基本知识;

第三章详细地介绍了软件编程与下载环境;

第四章程序设计与调试;

第五章结束语;

致谢在软件设计过程中给予我无限帮助的老师和同学;

参考文献列出本次设计中参阅的相关资料;

附录在设计过程中所参考的部分资料及硬件装置的部分资料。

第二章硬件介绍

2.1 嵌入式系统概况

2.1.1 嵌入式系统的定义

虽然嵌入式系统是近几年才风靡起来的,但其历史可追溯到20世纪70年代。经过30多年的发展,在硬件和软件交替发展的支撑下,嵌入式技术逐渐趋于稳定和成熟,已被广泛应用于工业控制、交通管理、信息家电、家庭智能管理系统、POS网络及电子商务、环境检测、机器人等各个领域。毫不夸张的说,嵌入式系统已经无所不在,所以研究和开发嵌入式系统有着十分重要的意义。

根据IEEE(国际电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或辅助设备、机器和车间运行的装置”,这主要是从应用上加以定义的。不过,上述定义并不能充分体现出嵌入式系统的精髓。目前,国内一个普遍被认同的定义是:以应用为中心、以计算机为基础,软、硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。

广义地讲,凡是不用于通用目的的可编程计算机设备,就可以算是嵌入式计算机系统。狭义上而言,嵌入式系统是指以应用为核心,以计算机技术为基础,软硬件可裁剪,适于应用系统对功能、可靠性、成本、体积和功耗严格要求的专用计算机系统。

总的来说,嵌入式系统是一个外延极广的概念,凡是与产品结合在一起的、具有嵌入式系统特点的系统都可以称为嵌入式系统。可以从以下几个方面来理解嵌入式系统的含义:嵌入式系统是面向用户、面向产品、面向应用的,必须与具体应用相结合才会具有生命力。正因为与具体应用的紧密结合,嵌入式系统才具有很强的专用性。

嵌入式系统将先进的半导体技术、计算机技术和电子技术,以及各个行业的具体应用相结合,是一个技术密集、资金密集、学科交叉和不断创新的知识集成系统。

嵌入式系统必须根据应用需要对硬件和软件进行裁剪,以满足应用系统对功能、可靠性、成本、体积和功耗的要求。

2.1.2 嵌入式系统的组成

通常来说,嵌入式系统可以划分成硬件和软件两部分。嵌入式硬件由嵌入式微处理器、片内周边电路和外部设备三部分组成。嵌入式微处理器是嵌入式硬件系统的核心,直接影响嵌入式产品的应用范围和开发复杂度。典型的嵌入式微处理器有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可以擦写多次,存储速度快,容量大,价格便宜在嵌入式领域应用广泛。

接口类型:目前存在的所有接口在嵌入式领域都应用广泛,如RS-232(串口)、IRDA(红外线接口)、SPI(串行外围设备接口)、I2C(现场总线接口)、USB(通用串行接口)、Ethernet(以太接口)和普通并口。

显示类型:CRT,LCD和触摸屏等外围设备。

2.1.3 嵌入式系统的特点

嵌入式系统具有以下几个重要特征:

①系统内核小,由于嵌入式系统一般应用于小型电子装置,系统资源相对有限,所以内核较之传统的操作系统要小得多。比如,ENEA公司的OSE分布式系统,内核只有5KB,而Windows的内核则要大得多。

②专用性强,嵌入式系统的个性化很强,其中的软件系统和硬件结合非常紧密,一般要针对硬件进行系统的移植,同时针对不同的任务,往往需要对系统进行较大的更改。另外,程序的编译下载要和系统相结合。

③嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能的设计及实现过于复杂,这样既利于控制系统成本,也利于实现系统安全。

④高实时性的操作系统软件是嵌入式软件的基本要求,而且软件要求固化存储,以提高速度,软件代码要求高质量和高可靠性。

⑤嵌入式软件开发要想走向标准化,就必须使用多任务操作系统。嵌入式系统的应用程序可以没有操作系统而直接在芯片上运行,但为了更合理的调度多任务,利用系统资源、系统函数,用户必须自行选配RTOS开发平台。

⑥执行的实时性、可靠性,并减少开发时间,保障软件质量。嵌入式系统开发需要专门的开发工具和环境。由于嵌入式系统本身不具备自主开发能力,即使完成设计后,用户通常也不能对其中的程序功能进行修改,因此必须有一套基于通用计算机的开发工具和环境才能进行开发。

2.2 数码相框模块

2.2.1 MCU主控模块

STM32系列闪存微控制器是意法半导体公司(ST)基于ARM公司具有突破性的Cortex-M3内核的处理器,该处理器是专门设计于满足集高性能、低功耗、实时应用、具有竞争性价格于一体的嵌入式领域的要求。此次设计采用的具体型号是STM32F103RBT6,如图2-1所示。

图2-1 STM32F103RBT6处理器

STM32F103RBT6嵌入式处理器具有以下特点:

32位RISC性能处理器;

32位ARM Cortex-M3结构优化;

72 MHZ运行频率,单周期访问时速度可达1.25 DMIPS/MHz;

硬件除法和单周期乘法;

快速可嵌套中断,6~12个时钟周期;

具有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公司认为没有必要使用任何汇编语言。

综合以上这些优势,新产品的开发将更易于实现,上市时间也大为缩短。STM32F103RBT6的资源完全满足此次的嵌入式数码相框设计,通过设计电路开发一个支持TFT彩色液晶屏的驱动电路,在设计中搭配2.8寸TFT真彩触摸屏模块作为显示界面,同时支持一个SD卡(SPI方式)可用于存储图片、数据等。

2.2.2 LCD模块

Thin Film Transistor(薄膜场效应晶体管),是指液晶显示器上的每一液晶象素点都是由集成在其后的薄膜晶体管来驱动。从而可以做到高速度、高亮度、高对比度显示屏幕信息,TFT-LCD(薄

膜晶体管液晶显示器)是多数液晶显示器的一种。TFT屏幕的优点如下:

大面积。九十年代初第一代大面积玻璃基板(300mm×400mm)TFT-LCD生产线投产,到2000年上半年玻璃基板的面积已经扩大到了680mm×880mm),最近950mm×1200mm的玻璃基板也将投入运行。高集成度。用于液晶投影的1.3英寸TFT芯片的分辨率为XGA含有百万个象素。分辨率为SXGA(1280×1024)的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等电脑主流的文件系统方式进行存储。

图2-2 2.8英寸TFT-LCD模块

该模块的80 并口有如下一些信号线:

CS:TFT-LCD片选信号。

WR:向TFT-LCD写入数据。

RD:从TFT-LCD读取数据。

D[15: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的命令很多,这里不一一介绍。这里我们要介绍的命令列表如下:

表2.1 ILI9320 常用命令表

R0,这个命令,有两个功能,如果对它写,则最低位为OSC,用于开启或关闭振荡器。而如果对它读操作,则返回的是控制器的型号。这个命令最大的功能就是通过读它可以得到控器的型号,而我们代码在知道了控制器的型号之后,可以针对不同型号的控制器,进行不同的初始化。因为93xx 系列的初始化,其实都比较类似,我们完全可以用一个代码兼容好几个控制器。

R3,入口模式命令。我们重点关注的是I/D0、I/D1、AM 这3 个位,因为这3 个位控制了屏幕的显示方向。

AM:控制GRAM更新方向。当AM=0的时候,地址以行方向更新。当AM=1的时候,地址以列方向更新。

I/D[1:0]:当更新了一个数据之后,根据这两个位的设置来控制地址计数器自动增加/减少1,其关系如下图:

图2-4 GRAM 显示方向设置图

通过这几个位的设置,我们就可以控制屏幕的显示方向了。

R7,显示控制命令。该命令CL位用来控制是8位彩色,还是26万色。为0时26万色,为1时八位色。D1、D0、BASEE这三个位用来控制显示开关与否的。当全部设置为1的时候开启显示,全0是关闭。我们一般通过该命令的设置来开启或关闭显示器,以降低功耗。

R32,R33,设置GRAM的行地址和列地址。R32用于设置列地址(X 坐标,0~239),R33用于设置行地址(Y坐标,0~319)。当我们要在某个指定点写入一个颜色的时候,先通过这两个命令设置到改点,然后写入颜色值就可以了。

R34,写数据到GRAM命令,当写入了这个命令之后,地址计数器才会自动的增加和减少。该命令是我们要介绍的这一组命令里面唯一的单个操作的命令,只需要写入该值就可以了,其他的都是要先写入命令编号,然后写入操作数。

R80~R83,行列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模块来显示字符和数字了,并且可以显示各种颜色的背景。

2.2.3 SD存储卡模块

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都需要加10~100K左右的上拉电阻。SD卡要进入SPI模式很简单,就是在SD卡收到复位命令(CMD0)时,CS为有效电平(低电平)则SPI模式被启用。不过在发送CMD0之前,要发送>74个时钟,这是因为SD卡内部有个供电电压上升时间,大概为64个CLK,剩下的10个CLK用于SD卡同步,之后才能开始CMD0的操作,在卡初始化的时候,CLK时钟最大不能超过400KHZ。

本次硬件电路板使用的是SPI模式来读写SD卡,下面我们就重点介绍一下SD卡在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卡)、CMD5

5、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 来实现,具体过程如下:

1、发送CMD24;

2、接收卡响应R1;

3、发送写数据起始令牌0XFE;

4、发送数据;

5、发送2字节的伪CRC;

6、8CLK之后禁止片选;

第三章编程环境介绍

3.1 RVMDK3.80A简介

RVMDK源自德国的KEIL公司,是RealView MDK的简称,在全球RVMDK被超过10万的嵌入式开发工程师使用。RealView MDK集成了业内最领先的技术,包括μVision3集成开发环境与RealView 编译器。支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能。与ARM之前的工具包ADS1.2相比,RealView编译器具有代码更小、性能更高的优点。RealView编译器与ADS1.2的比较:代码密度方面比ADS1.2编译的代码尺寸小10%;代码性能方面比ADS1.2编译的代码性能提高20%。

现在RealView的最新版本是RVMDK4.13A,4.0以上版本的RVMDK对IDE界面进行了很大改变,并且支持Cortex-M0内核的处理器。虽然4.10界面确实是好了,支持的器件也多了,但编译效率没有3.24/3.80A高,尤其是编译后的代码执行速度(FFT运算),4.10要对速度进行-O2优化才能和3.24/3.80A的普通级别相比。另外,国内大多数单片机工程师都接触和使用过KEIL,相信大家都知道KEIL的使用是非常简单的,而且很容易入手。基于以上几点,此次选择RVMDK3.80版本的编译器来对软件进行编译。

3.2 新建RVMDK工程

首先,打开 MDK(以下简称RVMDK 为MDK)软件,再点击Project->New uVision Project菜单项,则弹出如图3-1所示界面:

图3-1 保存工程界面

新建一个文件夹 TEST,然后把工程名字设为test,点击“保存”按钮,弹出选择器件的对话框,因为我们的开发板使用的是STM32F103RBT6,所以在这里我们选择STMicroelectronics下面的STM32F103RB(如果使用的是其他系列的芯片,选择相应的型号就可以了)。如图3-2所示:

图3-2 器件选择界面

点击OK,MDK会弹出一个对话框,问你是否加载启动代码到当前工程下面,这里我们选择是。

如图3-3所示:

图3-3 提示界面

启动代码是一段和硬件相关的汇编代码,是必不可少的!这段代码的具体作用如下:①堆栈的初

始化;②向量表定义;③地址重映射及中断向量表的转移;④设置系统时钟频率;⑤中断寄存器的

初始化。在上面点击了是以后,MDK就把启动代码STM32F10x.s加入到了我们的工程下面。到这里,

我们就可以开始编写自己的代码了。

由于上面我们还没有任何代码在工程里面,我们在TEST 目录下新建一个新文件夹USER,这里

我们把系统代码复制过来(整个SYSTEM文件夹,这些代码在任何STM32F103的芯片上都是通用的,

可以用于快速构建自己的工程,后面会有详细介绍)。之后,TEST文件夹下的文件如图3-4所示:

图3-4 TEST文件夹最终摸样

然后我们在 USER 文件夹下面找到test.Uv2,打开它,然后在Target目录树上右键->Manage Components。如图3-5所示:

图3-5 调出Manage Components

在进入Manage Components界面之后,弹出如下对话框:

图3-6 Components 选项卡

在上面对话框的中间栏,点新建(用红圈标出)按钮(也可以通过双击下面的空白处实现),新建USER 和SYSTEM两个组,然后点击Add Files按钮,把sys.c,usart.c,delay.c加入到SYSTEM组

中。此时USER组下还是没有任何文件的,得到如下图所示的界面:

图3-7 修改结果

点击OK,退出该界面返回IDE。这时,我们在Target树下发现多了2个组名,就是我们刚刚新

建的2个组。如下图所示:

相关文档
最新文档