摘要:基于嵌入式系统的数码相框与电子书阅读器的开发已成为电子产品领域的一个热点,为了更好地满足人们对于多媒体娱乐的需求,提出了一种简易数码相框与电子书阅读器的设计。该设计采用速度更快,内存更大的STM32单片机作为主控制器,利用FAT32文件系统的管理,成功地实现了从SD卡中读取bmp图片文件和txt文档,并能在TFT液晶屏上显示的功能。该设计成本低,体积小,便于携带,具有很好的娱乐功能。
关键词:数码相框;电子书阅读器;STM32;bmp图片;txt文档
0 引言
随着嵌入式系统的发展,数码相框和电子书阅读器这种既新潮又方便携带的嵌入式系统应用产品发展速度很快。它不仅改变了传统相册和书籍单一展示方式,而且这种新潮的数码相册和电子书阅读器在更新内存大小和外观的速度也越来越快。本文介绍了一种基于STM32微控制器的简易数码相框与电子书阅读器设计,其中利用FAT32文件系统对存储在SD卡中的文件进行管理,控制器从SD卡中读出图片和文档信息。经过处理器的控制,最终实现在TFT液晶屏上显示。
1 硬件电路设计
该设计的硬件平台以32 b STM32系列的处理器STM32F103ZET6为核心,外围电路主要包括一个2.8英寸的TFT触摸屏模块、1个SD卡插座、1个16 Mb片外FLASH,硬件系统框图如图1所示。
控制器的选用:控制器选用意法半导体公司的STM32F103ZET6单片机。它是基于ARM CORTEX-M3内核,时钟频率可达72 MHz,内置512 KB的闪存以及64 KB的SRAM,并且集成了丰富的片内外设,包括并行LCD(FSMC)、I2C、SPI等接口。在STM32芯片中内置了一个Systick定时器,它放在了NVIC中,主要的目的是为了给系统提供一个硬件上的中断(号称滴答中断)。本设计中主要使用Systick定时器来控制幻灯片切换时间。可以说STM32单片机完全超越了同价位的8 b或16 b单片机的性能而又不像一般32 b处理器那样昂贵,因此从性能和成本上考虑它都是理想的选择。本设计采用了具有二个SPI通用接口和并行接口(FSMC)的2.8英寸TFT触摸屏模块作为显示和按键操作;存储模块使用的是SD卡和片外FLASH,SD卡用于存放bmp格式图片和txt格式文档,片外FLASH用于存放汉字字库,SD卡和FLASH都是使用SPI接口进行通信。硬件电路原理图如图2所示。
2 软件系统设计
2.1 软件总体设计
开机进入用户选择模式,选择bmp图片浏览或是txt文档阅读。图片浏览支持幻灯片自动显示和手动显示2个方式,txt文档只能手动操作向上、向下翻页,手动操作根据触摸屏坐标的位置确定是往回翻页还是向下翻页。具体实现过程在Keil软件中编写C语言程序来实现。程序总体设计流程图如图3所示。
2.2 FAT32文件系统
当文件放入SD卡中,它在SD卡中的存储方式,以及对存入文件的寻址与读取,都是由文件系统来完成的,文件系统就是用来负责管理和存储文件信息的软件机构。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。不同的操作系统有不同的文件系统,常用的文件系统有FAT16/FAT32/NTFS等类型。本设计中采用的是FAT32系统文件,下面对FAT32进行简要说明。
FAT32文件系统的结构主要由3部分组成:保留区、FAT区、数据区。其中保留区包含主引导区(MBR)和操作系统引导记录(DBR),主引导区位于磁盘的第一扇区,通过它可以找到引导记录的地址。DBR中记录了文件系统的一些重要信息,如每扇区字节数、每簇扇区数、FAT表个数、文件系统大小(扇区数)、根目录起始簇号等信息,这些信息对于在SD卡中存储和查找文件至关重要。位于保留区后的是FAT区,它是由2个完全相同的FAT表组成,FAT表有2个重要作用:描述簇的分配状态以及标明文件或目录的下一簇的簇号。数据区紧跟在FAT2之后,被划分成一个个的簇,是真正用于存放用户数据的区域。FAT32文件系统的磁盘数据组织格式如表1所示。
在软件实现方面,文件系统部分主要由以下3个函数组成:初始化函数void InitFat()、查找指定文件个数函数unsigned int Stat File Num()、查找索引文件函数unsigned char SearchFile(unsigned long int entry,unsigned int index,chat*type,unsigned char*buf,FILE*pfile)。初始化函数主要是读主引导扇区和引导扇区,获取该分区文件系统每簇扇区数、文件分配表的大小、保留扇区数以及数据区的起始地址等信息。查找文件个数函数是根据初始化函数中所得到的文件系统的信息,获得所要查找文件类型的个数。查找索引文件函数是查找指定入口的指定类型的文件,查找时以index为索引,如index=5,即是要查找指定类型文件的第5个文件,函数可以写成如下形式:Search File(2,5,“bmp”,SectorBuf,&TmpFile);(2表示从第2簇开始查找,5表示查找第5个文件,“bmp”表示要查找的文件类型,SectorBuf是一个数组,临时存放查找的文件信息,TmpFile是一个结构体存放查找的文件具体信息)。
2.3 FLASH芯片及字库驱动
本设计中电子书阅读器支持txt格式文档。由于汉字是以GB2312字符集格式存储在SD卡中的,因此需要控制器读取字符集,通过解码获得汉字编号,然后根据汉字在字库中的顺序找到这个汉字的点阵数据,送到TFT液晶上显示。GB2312将所收录的字符分为94个区,编号为01区至94区;每个区收录94个字符,因此只要确定了某一个字符对应的区号和位号就唯一确定了这个字符。本设计中用取模软件将GB2312字符集取模成16x16点阵数据存在片外FLASH(AT45DB161D)中,其中AT45DB161D是串行接口的闪存芯片,它支持SPI模式通信,它被组织为4 096个页,每页512或528个字节。与并行FLASH存储器不同,它采用RapidS串行接口,从而大大减少了可用引脚数量,同时也提高了系统可靠性,降低了开关噪声,缩小了封装体积。不仅如此,AT45DB161D还可以应用于商业、工业等需要高密度、低引脚数、低电压与低功耗的应用场合。读取字库流程图如图4所示。
3 系统调试与结果
系统的硬件设计和软件设计完成以后,需要进行综合测试和调试。通过测试和调试,不断优化程序代码,对程序和电路中的问题及时更正修改。硬件调试的过程中主要是驱动SD卡,FLASH芯片以及TFT触摸屏,软件调试主要是在对触摸屏的抖动进行处理以及向前向后翻页处理,经过不断测试确保能够正常显示图片和电子书。实物效果图如图5(a)和5(b)所示。
4 结语
本设计结合硬件设计与软件设计2部分内容基本实现了数码相框与电子书阅读器的功能,主要实现了SD卡的连接操作,液晶屏显示测试等内容。对于一些市面上单一模式显示图片的数字相框,本设计还增加了FLASH字库编码模式,可以随意读取任何txt文件,使其在稳定性和可扩展性上都具有优势。本设计还有需要改进的地方,如增加JPEG格式或增加视频播放、改进幻灯片切换方式、增加播放幻灯显示图片的背景音乐以及添加其他功能等。