基于STM32处理器的便携式BMP图片解码系统设计

2012-02-08 20:08:57来源: 电子设计工程 关键字:stm32  处理  处理器  便携  便携式
  在现代便携式设备的应用过程中,常常需要在系统中显示一些图片,而在各种图片格式中,BMP又是最具代表性的一种图片格式。

  BMP是一种与硬件设备无关的图像文件格式,使用非常广泛。它采用映射存储格式,除了图像深度可选以外,BMP文件的图像深度可选1、4、8及24 bit.BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。

  典型的BMP图像文件由3部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。

  ARM公司作为全球32位低功耗处理器设计领域的领导者,曾经设计过很多高性能低功耗处理器,广泛应用于各种便携式手持系统中,意法半导体公司的STM32处理器采用ARM公司最新的V7体系架构的内核Cortex-M3,它的速度比ARM7快三分之一,功耗低四分之三,同时集成了分支预测,单周期乘法,硬件除法等功能,大大提高了处理器的数据处理能力,同时采用最新的Thumb-2指令集,有效地降低了代码的密度,提高了程序的执行救率,通过对功耗和性能的分析,本文中采用的处理器为STM32F103RBT6,它可以实现最新的在应用中编程,使得系统的软件更新更加容易实现,达到了性能和功耗的平衡,可以应用于很多领域,如工业控制温度测量等。

1 系统的工作原理

  本系统以STM32F103RBT6为核心,采用晶彩光电的AM240320TFT液晶模块作为显示器,完成对解码后图片的显示,需要显示的图片存储在SD卡中,处理器通过SPI方式读取SD卡里面的图片信息,由于STM32内部RAM很小,不能作为整幅图片的缓冲区,所以本系统的设计过程中采用了用时间换空间的方式,即采用了边解码边显示的方法,省去了外部数据RAM,随之而来的就是显示的速度比直接调到内存中要慢一些。

  1.1 STM32F系列ARM微控制器简介

  STM32F103RBT6使用高性能的ARM Cortex-M3 32位的RISC内核,工作频率为72 MHz,内置高速存储器(高达128 K字节的闪存和20 K字节的SRAM),丰富的增强I/O端口和连接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN.供电电压2.0~3.6 V,一系列的省电模式保证低功耗应用的要求。

  1.2 TFT液量显示模块简介

  TFT液晶显示屏是薄膜晶体管型液晶显示屏。TFT液晶为每个像素都设有一个半导体开关,每个像素都可以通过点脉冲直接控制,因而每个节点都相对独立,并可以连续控制,不仅提高了显示屏的反应速度,同时可以精确控制显示色阶,所以,TFT液晶的笆彩更真。本文中采用的TFT液晶屏分辨率位320x240,采用的控制芯片为ILI9320,自带总大小为172 820(240x320x1818)的显存,模块的16位数据线与显寸的对应关系为565方式,它支持多种控制输入信号。本文中采用的是8080接口,通过IO模拟8080总线协议。

  1.3 SD卡的特点

  SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛应用于便携式装置,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡一般支持2种操作模式:SD卡模式和SPI模式,本系统的设计过程中采用SPI模式完成SD卡的读写操作。

  1.4 FAT文件系统简介

  常用的文件系统有FAT12/16/32等,FAT12是最古老的文件系统,只能管理8 M左右的空间。现在基本淘汰了。FAT16则可以管理2 G的空间(通过特殊处理也能管理2 G以上的空间),而FAT32则能管理到2 TB(2 048 GB)的空间。FAT32较FAT16的优势还在于FAT32采用了更小的簇,可以更有效的保存信息,而不会造成多的浪费。

  本系统设计过程中采用了FAT32文件系统,它的主要组成部分如下:

  MBR称为主引导记录区,该区存储了分区表等信息,位于SD卡的扇区0(物理扇区),在其分区信息里面记录了DBR所在的位置,SD卡一般只会有一个分区,所以也就只要找到分区1的DBR所在位置就可以了。

  DBR称为操作系统引导记录区,如果没有MBR,那么DBR就位于0扇区;如果有,则必须通过MBR区得到DBR所在的地址,然后读出DBR信息。在DBR区,可以知道每个扇区所占用的字节数、每个簇的扇区数、FAT表的份数、每个FAT表的扇区敷、跟目录簇号、FAT表1所在的扇区等一系列非常重要的信息。

  FAT称为文件分配表(FAT表),一个卡上会存在2个FAT表,一个用作备份,一个使用。FAT表一般紧随DBR,另一个FAT表则紧随第一个FAT表,这样只要知道了第一个FAT表的位置及大小,那么第二个FAT表的位置也就确定了。FAT表记录了每个文件的位置和区域,是一种链式结构。

  FDT称为文件根目录表,这个区域固定为32个扇区,假设每个扇区为512个字节。那么根目录下最多存放512个文件(假设都用短文件名存储,每个短文件名占32个字节)。文件目录表是另一个重要的部分,FAT文件系统中(仅以短文件名介绍),文件目录项在目录表下以32个字节的方式记录。

2 系统硬件设计

  2.1 供电部分电路设计

  整个系统中的元件均为3.3 V器件。由于系统供电采用电池或者直流电源供电,通过三端稳压芯片LM1117-3.3,为主控芯片STM32F103 RBT6供电,用二极管IN4007串接在电源正极,为系统提供电源反接保护。供电部分原理如图1所示。

图1 系统供电部分原理图

  2.2 液晶显示部分电路设计

  液晶显示部分主要由微控制器STM32F103RBT6驱动AM240320LSTNQW-00H完成人机界面状态的显示,通过发送命令字,完成液晶模块的初始化,完成对内容的显示,显示部分的硬件电路接口图如图2所示。

图2 系统液晶接口原理图

  2.3 SD卡读写部分的硬件设计

  处理器主机可以选择SD卡模式和SPI模式中任意一种模式同SD卡通信,SD卡模式允许4线的高速数据传输。SPI模式允许简单的通过SPI接口来和SD卡通信,这种模式同SD卡模式相比就是丧失了速度。通过读取SD卡中的文件,识别出各个目录下的图片数据,然后对数据进行解码。驱动液晶完成图片的显示,SD卡接口部分电路如图3所示。

图3 SD卡接口原理图

3 BMP图片的解码算法

  3.1 BMP文件组成

  BMP文件由文件头、位图信息头、颜色信息和图形数据4部分组成。BMP文件头数据结构舍有BMP文件的类型、文件大小和位图起始位置等信息,它占14个字节。BMP位图信息头数据用予说明位图的尺寸等信息,它占40个字节。BMP颜色表用于说明位图中的颜色,它有若干个表项,每一个表项定义一种颜色。位图信息头和颜色表组成位图信息,位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上,Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充

        3.2 BMP图片的读取显示算法

  首先根据读取到的BMP图片数据得到BMP的头部信息,得到文件类型,大小和文件的起始位置,然后读取BMP位图信息头,这里面记录了图片的格式的信息,如BMP图片的宽度和高度,以及每个像素所占的位数,下面举例来说明BMP图片的解码过程。

  常用的BMP图片格式有24位真彩图,16位图,和32位图,解码过程略有不同,下面分别介绍,首先是24位图,当根据BMP的头文件信息得到数据的起始地址之后,从起始地址开始读数据,假设每次读入512字节,由于AM240320TFT采用16位的565方式显示,即就是说需要把每个像素所占的24位致据,也就是3个字节,转换为16位的数据,即2个字节,这里以前3个字节为例来说明解码算法:

  其中codor为需要提供给液晶显示器每个像素点的颜色值,tmp_color为解码过程中的临时变量,数组temp存储24位格式的像素值。同样也可以解码16位颜色图和32位颜色图,解码16位颜色图的算法比较简单,只需要解出连续的两个值然后组合成16位的565格式的颜色值送到液晶显示,其解码算法如下:

  在32位图的解码过程中需要注意一个问题,就是32位图中实际上只使用了24位存储像素值,也就是32位中的前3位,最后一位没有存储像素值信息,所以在解码的过程中只需要解码前3位,将第4位跳过,具体解码算法如下:


  3.3 STM32解码并显示BMP图片程序

  在BMP图片解码过程中,有两种方式:一种是将BMP图片数据从外部SD卡中调入内存中,从内存中解码,解码后将图片数据显示在TFT屏上;第二种方式是一边从SD卡中读数据一边解码显示,两种方式各有优缺点。第一种方式的优点是由于整个解码过程全部在内存中进行,所以解码的速度比较快,显示图片的速度快。由于一般处理器内部RAM都是有限的,而这种方式对RAM的消耗特别大,所以采用这种方式需要外扩SRAM.第二种方式是从SD卡总边读取边解码,例如一般FAT32文件簇的大小都是512字节,所以可以以簇为单位来读取图片信息,然后显示接着读取下一簇,这种方式的缺点是,由于SD卡的SPI方式速度较慢,解码一张320x240的图片大概需要1s,但是这种方式对系统的内存消耗比较低,比较适合于没有外部RAM的系统。本系统中,采用第二种方式进行解码显示,STM32采用外部8 MHz的晶振作为输入时钟,内部锁相环将时钟倍频到72 MHz作为系统时钟,采用GPIO口模拟8080时序并行驱动2.8寸TFT屏,屏幕分辨率为320x240,处理器首先完成各种外设初始化,接着初始化FAT文件系统,然后从SD卡中读取一簇的数据,解码显示,接着读取下一簇。整个程序的流程图如图4所示。

图4 BMP解码流程图

4 结论

  本文采用了基于ARM的Cortex-M3内核的STM32,它基于最新ARMv7架构,设计了一个BMP图片解码系统,完成了在2.8寸TFT屏上解码并显示BMP图片,通过读取SD卡中的图片数据,边读取边解码显示,实现了在内存有限的处理器中的BMP图片的解码算法。

关键字:stm32  处理  处理器  便携  便携式

编辑:鲁迪 引用地址:http://www.eeworld.com.cn/afdz/2012/0208/article_4371.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:智能仪器中一种菜单式人机界面的软硬件设计
下一篇:美设计自导航子弹 可精确打击两公里外目标

论坛活动 E手掌握
关注eeworld公众号
快捷获取更多信息
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
stm32
处理
处理器
便携
便携式

小广播

独家专题更多

东芝在线展会——芯科技智社会创未来
东芝在线展会——芯科技智社会创未来
2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 视频监控 智能卡 防盗报警 智能管理 处理器 传感器 其他技术 综合资讯 安防论坛

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved