首页 » 技术文章 » 基于CortexM3的SD卡图片浏览器

基于CortexM3的SD卡图片浏览器

作者:  时间:2011-01-26 11:49  来源:EDN

  引言

  目前,对于图片解码器的研究主要是针对PC环境,设计工作只是在原有基础上的升级,对系统和硬件的考虑较少,不能在嵌入式系统中直接实现。本文设计了一种嵌入式图片解码器。通过FatFs文件系统识别图片文件的格式,调用相应的格式解码单元实现图像重构,并在TFT液晶显示器上进行显示。

  系统硬件设计

  系统的核心CPU采用LM3S8962,具有丰富的外围接口以及多种片内的硬件接口功能(如UARTSPII2CPWM等)。整个系统的硬件电路包括SD电路、TFT液晶显示电路、独立按键电路。

  1.1  SD卡电路

  SD卡有两种工作模式,即SDSPI模式。由于LM3S8962具有SPI接口,为此该嵌入式系统采用SPI模式。SD卡电路如图1所示。 SD卡的信号检测线CARD_INSERTCPUPG0端口,CARD_WP检测卡写保护接CPUPE2SD卡的供电电路采用PMOS 2SJ355的可控电路,由CARD_Power跳接CPUPG1脚进行控制。片选线CARD_CSCPUPA3。时钟信号CARD_SCK CPUPA2SPI主机输出从机输入CARD_MOSI、主机输入从机输出CARD_MISO分别接CPUPA5PA4

1  SD卡电路

  1.2  TFT液晶显示电路及独立按键电路

  TFT液晶显示电路中,显示器的数据线D0~D7CPUPB0~PB7,地址线A0~A7CPUPC0~PC7TFT背面板LED+TFT驱动电源都采用3.3 V供电。独立按键为CPUPD0~PD3口,当按键被按下时,CPU检测到的引脚为低电平。

  软件设计

  为使整个系统正常读取SD卡的数据文件和目录,需再创建一个可被Windows操作系统认知的文件系统。考虑到兼容性和方便性,本设计在 μC/OSII操作系统的基础上移植了一种小型嵌入式文件系统FatFs。该文件系统具有支持多种操作系统、易于移植和存储速度快的特点。

  2.1  SD卡驱动设计

  SD卡驱动不但需要完成SD卡控制器中相应寄存器的设置和向SD卡发送命令,还要实现SD卡的初始化、读写等操作。目的是为其上层提供相应的功能函数,屏蔽直接对硬件的具体操作。SD卡的驱动使用了ZLG/SDMMC/SD的软件包。软件包中提供一些常用的API函数,只需调用相关的API 函数就可以实现对SD卡的访问,其中包括SD_Initialize(初始化SD卡)、SD_ReadBlock(读SD卡的一个块)、 SD_WriteBlock(写SD卡的一个块)、SD_EraseBlock(擦除SD卡的多个块)等。

  2.2  FatFs文件系统设计

  FatFs是一个开源的文件管理系统,常用于小型嵌入式系统中实现文件系统,支持FAT12FAT16FAT32,遵循ANSI C标准,不依赖于硬件平台。对FatFs的移植,首先需要定义数据类型并与CPU.H的数据类型匹配;其次,使FatFs中的底层函数直接调用 ZLG/SD软件包的函数。例如:


  由于篇幅有限,底层函数调用

  图片解码分析

  3.1  JPG格式的分析

  JPEG专家组开发了2种基本的压缩算法、2种数据编码方法和4种编码模式。在实际应用中,绝大多数JPG图像使用的是DCT(离散余弦变换)、Huffman(哈夫曼)编码、顺序模式。JPG编码过程主要包括颜色转换、DCT变换、量化、熵编码及Huffman编码等部分。

  软件实现图像解码的过程就是图像编码的逆过程,程序编程步骤如下:

  初始化FatFs文件系统,并利用f_open函数打开jpg格式的文件,用f_readJPG格式文件中读取图片编码的相关信息,如图像大小、量化表、Huffman表等。

  读取最小编码单元数据,对其进行熵解码、反量化、反离散余弦变换、YCrCb模式向RGB模式转换等,并将最后的解码数据保存至Buffer或直接输出至显示。

  不断重复第步过程,直至整张图片解码完毕。

  3.2  BMP格式的分析

  BMP(Bitmap,位图)Windows采用的图像文件格式。位图文件由4个部分组成:位图文件头(bitmapfile header)、位图信息头(bitmapinformation header)、彩色表(color table)和定义位图的字节阵列。BMP图像的色深,常见有148162432位,分别对应单色、16色、256色、16位高彩色、24位真彩色和32位增强型真彩色。这就需要建立相应的彩色表实现位图的显示。编程实现位图显示的步骤如下:

  初始化FatFs文件系统,并BMP格式文件中读取图片编码的相关信息,如图像像素数据、图像位数、RGB值等。

  根据像素索引定位相应颜色在彩色表中的位置。文件定位到相应彩色项,取出索引对应的颜色。

  从文件读取的RGB数据,转换为TFT支持的格式(本系统选用的TFT支持RGB565格式)。在液晶上画出该像素,直到画完整个图像为止

SD软件包的函数不一一列出。通过这些操作就可以调用f_openf_readf_write等函数来进行文件的创建、读写等操作。

相关推荐

一种嵌入式系统升级的设计和实现

嵌入式  SD卡  2011-07-28

基于Avalon总线的SD卡读写控制器的设计

SD卡  Avalon总线  2011-05-24

基于CortexM3的SD卡图片浏览器

SD卡  图片浏览器  2011-01-26

Maxim推出高速USB至SD卡桥接器

Maxim  USB  SD卡  桥接器  2009-11-04

ATmega128L单片机的MiCro SD卡读写

ATmega128L  MiCro SD卡  SPI  2009-07-24

基于eCos系统的SPCE3200中SD卡驱动程序的开发

eCos系统  SPCE3200  SD卡  驱动程序  2009-06-21
在线研讨会
焦点