您当前的位置:五五电子网电子知识电子知识资料科研成果基于RT-Thread和STM32的数码相框的设计方案 正文
基于RT-Thread和STM32的数码相框的设计方案

基于RT-Thread和STM32的数码相框的设计方案

点击数:7619 次   录入时间:03-04 11:55:02   整理:http://www.55dianzi.com   科研成果

    1.引言

    近年来,随着数码相机的普及,一种以数码照片的保存、回放和浏览为核心功能的产品,数码相框应运而生,它以其独特的设计理念和美妙的欣赏效果倍受市场青睐。数码相框采用传统普通相框的外观造型,把传统普通相框的中间照片部分换成液晶显示屏,配上电源,控制器,存储介质等部件,可以直接展示数码照片。同时,数码相框也可以在同一个相框内循环展示不同照片,解决了需要使用电脑才能查看数码相片的缺陷,给日益增多的数码照片和喜好照片的人们提供一个更好的展示照片的平台和空间。基于此,本系统设计了基于RT-Thread和STM32的数码相框。

    本系统采用STM32为主控芯片,利用源代码开放的嵌入式RT-Thread操作系统和人机交互界面μC/GUI共同建立的平台设计了数码相框系统。系统主要实现了JPEG格式图片在触摸液晶屏上的浏览展示、USB主机读取功能、SPIFLASH存储等功能。

    2.系统总体设计

    本系统由嵌入式处理器、外围设备、嵌入式操作系统和应用软件等部分组成。系统以嵌入式RT-Thread和嵌入式微控制器STM32为核心平台,通过μC/GUI建立人机交互界面,利用USB主机读取功能将图片和字库文件写入外部SPI FLASH,利用文件系统读取图片文件,经过图片解码算法处理,显示在触摸液晶屏上,通过触摸完成对图片的浏览功能。系统总体结构框图如图1所示。

     

     

    3.系统硬件设计

    本系统以STM32为主要硬件平台,系统整体硬件结构图如图2所示。系统硬件主要有电源模块、STM32最小系统、JTAG下载调试接口、USB驱动电路、SPI FLASH驱动模块、触摸LCD驱动电路等部分组成。

     

     

    3.1 电源模块

    本系统中微控制器及其外围电路驱动模块需要3.3V电源,系统选用的电源电池为3.7V,需要通过稳压芯片提供3.3V电压。

    对于产生3.3V电压,采用国家半导体公司的LM1117稳压芯片输出3.3V,LM1117提供电流限制和热保护。电路包含1个齐纳调节的带隙参考电压以确保输出电压的精度在±1%以内。

    输出端需要一个至少10uF的钽电容来改善瞬态响应和稳定性。LM1117稳压芯片输出3.3V电路如图3所示。

     

     

    3.2 USB驱动电路

    STM32芯片内部集成了USB外设,减轻了USB电路的设计负担,本系统设计了USB接口电路以及ESD保护电路。

    3.2.1 USB接口电路

    在USB接口电路中将USB上拉电压接到D+上,实现USB全速通讯,三极管为开关作用,当开关开启时,PC开始枚举USB存储设备。USB的VCC引脚没有接板上电源,通过PC机给USB设备供电。

    3.2.2 ESD保护电路

    采用意法半导体公司的USBLC6-2P6,该芯片使USB的D+/D-信号完全平衡,I/O接口到地线的匹配公差仅为0.04pF,完全在USB 2.0最大1pF的公差范围内。如果USB数据线路上发生ESD现象,芯片的ESD保护功能就会将电流引至地线,为了确保ESD保护的最高效能,数据线路采用轨对轨保护拓扑,为了提高输出功率,VCC线路采用钳位保护结构。USB驱动保护电路原理图如图4所示。

     

     

    3.3 SPI FLASH驱动电路

    系统采用SPI串行闪存芯片W25Q64,该芯片具有电路设计简单、数据读取速度快等优点,能够减少系统电路切换噪声,降低系统功耗及开发成本。其应用电路如图5所示。

     

     

    3.4 LCD触摸驱动电路

    本系统的触摸控制器选用TSC2046,TSC2046是四线电阻式触摸屏控制器,其核心是一个具有采样和保持功能的12位逐次逼近式A/D转换器。本系统通过STM32的SPI接口驱动TSC2046控制器,典型的驱动电路如图6所示。

     



www.55dianzi.com

    4.系统软件设计

    本系统的软件主要由系统各模块初始化、μC/GUI建立人机交互界面、文件系统读取图片及字库文件、图片解码算法的实现、触摸浏览功能及幻灯片播放功能等功能模块组成。

    4.1 μC/GUI建立人机交互界面本系统利用μC/GUI builder建立μC/GUI人机交互界面,在μC/GUI builder中建立窗体、文本框、控件等、将编译后产生的C文件添加到工程目录中。μC/GUI builder的应用,缩短了界面开发周期,修改灵活方便,后期修改界面时,只需要在μC/GUI builder修改相关组件,编译运行即可实现程序的修改。

    4.2 μC/GUI显示汉字

    μC/GUI中通过查找字模的方式来实现字体的显示。字体库中的每一个字母都有其对应的字模,字模由结构体GUI_FONT和GUI_FONT_PROP统一管理。但是μC/GUI中本身只支持英文,没有提供中文的字库源码文件。本系统在修改μC/GUI字库显示驱动函数的基础上实现了汉字的显示,以显示12*12点阵汉字为例,具体的修改步骤如下:

    第一步:在GUI.H中声明全局结构体对象GUI_Font12_Hz;

    第二步:定义存放字模数据的数组;

    第三步:定义用于说明每个字母的字模数据在程序段存储方式的结构体;

    第四步:根据汉字内码高位定义多个结构体,用于存放字库字模编码和字模数据存放地址的映像;

    第五步:将创建的汉字库文件HZK12.C添加至μC/GUI工程,在主函数中调用显示函数。

    通过以上步骤实现了中文汉字在μC/GUI界面的显示,经测试,汉字显示流畅稳定。

    4.3 图片解码算法

    JPEG图片解码显示包括解析JPEG头文件信息、基于连续DCT编码的JPEG解码算法处理、转换图像格式、液晶显示等部分,总体流程图如图7所示。     

45

    4.3.1 解析JPEG头文件信息

    对JPEG解码的过程进行初始化,获取JPEG头文件中的相关信息,本系统的方法是设计一系列的结构体对应头文件中的各个信息标记,并存储标记内表示的信息,如色彩信息、采样比、图片尺寸、量化表、HufFMan解码表等重要信息。

    4.3.2 基于连续DCT编码的JPEG解码算法

    基于连续DCT编码的JPEG解码算法包括熵解码、反量化和反向离散余弦变换(IDCT)共三个步骤。JPEG基本系统的解码器结构图如图8所示。     

45

    (1)熵解码。熵解码的输入信号是被压缩编码的比特流,输出是被解码得到的DCT变换系数的量化值。通过查找Huffman解码表将压缩图像数据还原成交流AC系数和直流DC系数组成的量化数据块。

    熵解码对读入的图像数据进行DC直流系数和AC交流系数的Huffman解码。JPEG算法提供标准的Huffman码表,针对每幅图像都有各自不同的特点,系统熵解码采用自适应的Huffman码表。采用自适应的Huffman码表,首先统计输入图像数据的特性,生成码树,再反推得到各级Huffman码表。

    在JPEG头文件信息的标记中,定义了一张表用来记录Huffman树其代码长度限制在16bit以内。JPEG头文件信息一般包含4个Huffman码:用于解码直流DC系数的Huffman码表,其中包括一个亮度表和一个色度表;用于解码交流AC系数的Huffman码表,其中包括一个亮度表和一个色度表。根据Huffman码表在文件中的保存形式,设计Huffman解码一个码字的程序,程序流程图如图9所示。     

[1] [2]  下一页


本文关键字:相框  科研成果电子知识资料 - 科研成果